@nooticr/mcp 1.26.38 → 1.26.40

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.
package/README.md CHANGED
@@ -145,9 +145,9 @@ a `scanId` for the rest.
145
145
  | `scan_amazon_category` | 3 per listing collected (30 by default) | The category, collected: listings with prices, star histograms, Amazon's own review-aspect counts and the review text itself, plus the arithmetic over them — price spread, rating spread, which aspects recur across how many brands, and the share of each listing's ratings sitting at 1-2 stars, read from the histogram rather than from the handful of reviews a scrape returns. Pass `query` to search the category, `asins` to pin the competitors a customer named, or both; named competitors keep their place at the front. Because the price is set by an argument, it confirms the total before spending it. |
146
146
  | `amazon_scan_status` | free | Picks a running collection back up by `scanId` — the listings collected since, with the same rollup. Free: it is the poll `scan_amazon_category` asked for, and billing the second half of one answer would charge for a wait the server chose. |
147
147
  | `get_amazon_product` | 3 | One listing by ASIN or URL: price, rating, the full star histogram, features, specs, Amazon's review digest and aspect breakdown, and the reviews. |
148
- | `scan_marketplace_category` | 3 per product collected (30 by default) | The same category read on ten more sites — AliExpress, Cdiscount, Flipkart, Mercado Libre, Lazada, Otto, Rakuten, Trendyol, Jumia and Temu. `marketplace` picks the site; `market` picks the storefront for the sites that have several, and the argument names the real set per site so a model cannot send Otto a Lazada region. Same rollup, same confirmation before spending. |
148
+ | `scan_marketplace_category` | 3 per product collected (30 by default) | The same category read on eleven more sites — AliExpress, Cdiscount, Flipkart, Mercado Libre, Lazada, Otto, Rakuten, Trendyol, Jumia, Vinted and Temu. Vinted is resale rather than retail, so its `rating` describes the seller and the scan says so in `ratingScope` — do not read it as a product's reviews. `marketplace` picks the site; `market` picks the storefront for the sites that have several, and the argument names the real set per site so a model cannot send Otto a Lazada region. Same rollup, same confirmation before spending. |
149
149
  | `marketplace_scan_status` | free | Picks a running marketplace collection back up by `scanId` and the same `marketplace`. Free, for the same reason `amazon_scan_status` is. |
150
- | `get_marketplace_product` | 3 | One product from any of the eleven sites, by id or URL: price, rating, the full star histogram, specs and the reviews. |
150
+ | `get_marketplace_product` | 3 | One product from any of the twelve sites, by id or URL: price, rating, the full star histogram, specs and the reviews. |
151
151
  | `show_amazon_category_insights` | free | Draws the read **your model** wrote — purchase drivers, barriers, what each brand does well, the gaps, the positioning angles — beside the listings and their reviews, so a person can click a product and check any claim against the text it came from. The conclusions are attributed to your model, never presented as a nooticr rating of anyone's product. Makes no requests. |
152
152
 
153
153
  ### Make something
@@ -33,7 +33,25 @@ export function normaliseProducts(raw) {
33
33
  // raw `p.asin` there gave every review on every non-Amazon product the id
34
34
  // "review::0", "review::1" — colliding across products, so a model citing
35
35
  // one could not be pointed back at the right listing.
36
- const id = String(p.asin ?? p.id ?? p.item_id ?? p.sku ?? p.product_id ?? "");
36
+ //
37
+ // This list must stay equal to `ID_KEYS` in nooticr-server's
38
+ // `crates/server/src/marketplace.rs`. The server computes `rollup.perProduct[].id`
39
+ // from its copy and the view joins those rows onto the tiles by the id
40
+ // resolved here, so a key in one list and not the other does not read as a
41
+ // missing id — it reads as a tile with no `negativeStarShare`, which looks
42
+ // like a site that publishes no histogram.
43
+ //
44
+ // `pid` and `goods_id` were the two missing, which is Flipkart and Temu:
45
+ // each collector publishes exactly one id field and those are theirs, so
46
+ // every product in a scan of either site resolved to "" and shared one
47
+ // blank key — the failure the comment below says was fixed for the others.
48
+ //
49
+ // Found by hand rather than by a test, and `??` is why it could be: it
50
+ // falls through null and undefined but not "", so a site that sends an
51
+ // empty id under an earlier key would stop the chain on the empty value
52
+ // rather than continue past it. Matching on a non-empty string closes
53
+ // both.
54
+ const id = String([p.asin, p.sku, p.pid, p.goods_id, p.item_id, p.product_id, p.id].find((v) => typeof v === "string" && v.trim() !== "") ?? "");
37
55
  const histogram = (p.rating_histogram ?? {});
38
56
  const reviews = Array.isArray(p.reviews) ? p.reviews : [];
39
57
  const aspects = Array.isArray(p.review_aspects) ? p.review_aspects : [];
@@ -56,7 +74,16 @@ export function normaliseProducts(raw) {
56
74
  availability: p.availability ?? null,
57
75
  rating: num(p.rating),
58
76
  ratingCount: num(p.rating_count),
59
- image: p.image ?? (Array.isArray(p.images) ? p.images[0] ?? null : null),
77
+ // `image_proxy_url` first. Collecting a product and displaying its photo
78
+ // are different requests: the collector is a real browser render with
79
+ // the site's cookies and Referer, the card's <img> an anonymous
80
+ // cross-origin GET from a sandboxed frame. Cdiscount serves its images
81
+ // off www.cdiscount.com — the host carrying its bot defences — so every
82
+ // tile drew a broken glyph under a scan that had succeeded.
83
+ image: p.image_proxy_url ??
84
+ p.imageProxyUrl ??
85
+ p.image ??
86
+ (Array.isArray(p.images) ? p.images[0] ?? null : null),
60
87
  images: Array.isArray(p.images) ? p.images : [],
61
88
  features: Array.isArray(p.features) ? p.features : [],
62
89
  categories: Array.isArray(p.categories) ? p.categories : [],
@@ -128,6 +155,26 @@ export function categoryGuidance(opts) {
128
155
  : "."));
129
156
  if (opts.brands.length)
130
157
  lines.push(`Brands in the set: ${opts.brands.join(", ")}.`);
158
+ // Nothing came back, which is the one outcome where the next step is not
159
+ // "read the set" and the guidance above says nothing useful. Without this a
160
+ // model reports an empty category as a finding — the category is empty —
161
+ // when what actually happened is a search that found nothing, and the
162
+ // commonest reason is a query in a language that storefront does not sell
163
+ // in. Said here rather than only in the tool description because by the time
164
+ // this is read the description is long out of the model's attention.
165
+ if (opts.products === 0 && opts.complete) {
166
+ lines.push(`No listings came back. This is not a finding about the category — it is a search that ` +
167
+ `matched nothing. Before reporting it: check the query is in the language that ` +
168
+ `storefront sells in, try the common shopper's word for the thing rather than a ` +
169
+ `category or brand-family name, and drop any quotes or operators. If a second query ` +
170
+ `also returns nothing, say the search found nothing rather than that the category ` +
171
+ `is empty.`);
172
+ }
173
+ // Before the "still running" line and before the analysis prompt: a model
174
+ // that has already started composing a read is past the point where a
175
+ // caveat changes what it writes.
176
+ if (opts.freshness)
177
+ lines.push(opts.freshness);
131
178
  if (!opts.complete) {
132
179
  lines.push(`Collection is still running — ${opts.pending} listing${opts.pending === 1 ? "" : "s"} to go. ` +
133
180
  `Everything below is real and usable now; call ${statusTool} with scanId "${opts.scanId}" ` +
@@ -5,7 +5,7 @@ import { withEvidence } from "./evidence-digest.js";
5
5
  import { confirmSpend, declinedResult } from "./spend.js";
6
6
  import { allReviews, categoryGuidance, listingCount, normaliseProducts, scanCost } from "./amazon.js";
7
7
  /**
8
- * The eleven sites, mirroring `MARKETPLACES` in nooticr-server.
8
+ * The twelve sites, mirroring `MARKETPLACES` in nooticr-server.
9
9
  *
10
10
  * Kept in the same order and the same words deliberately: a model reads this
11
11
  * text to decide what to send, and the server refuses on the same terms. Two
@@ -22,21 +22,25 @@ export const MARKETS = [
22
22
  hint: "a country code or host — com (US), co.uk, de, fr, it, es, ca, co.jp, in, com.br, " +
23
23
  "com.mx, com.au, nl, se, pl, com.be, com.tr, ae, sa, eg, sg, cn. Default www.amazon.com",
24
24
  },
25
+ searchLang: "the storefront's own — English on com, co.uk, ca, in, com.au and sg, otherwise the country's",
25
26
  },
26
27
  {
27
28
  slug: "aliexpress",
28
29
  label: "AliExpress",
29
30
  idLabel: "the numeric id from /item/<id>.html, or a full AliExpress product URL",
31
+ searchLang: "English",
30
32
  },
31
33
  {
32
34
  slug: "cdiscount",
33
35
  label: "Cdiscount",
34
36
  idLabel: "the SKU from a product URL's /f-<category>-<sku>.html, or the full URL",
37
+ searchLang: "French",
35
38
  },
36
39
  {
37
40
  slug: "flipkart",
38
41
  label: "Flipkart",
39
42
  idLabel: "the 16-character PID from a product URL's pid= parameter, or the full URL",
43
+ searchLang: "English",
40
44
  },
41
45
  {
42
46
  slug: "mercadolibre",
@@ -48,6 +52,7 @@ export const MARKETS = [
48
52
  "mercadolivre.com.br. Inferred from the ids when omitted, and a job runs against one " +
49
53
  "market: an id from another is refused rather than mis-filed",
50
54
  },
55
+ searchLang: "Spanish, except Brazil (MLB), which is Portuguese",
51
56
  },
52
57
  {
53
58
  slug: "lazada",
@@ -59,6 +64,7 @@ export const MARKETS = [
59
64
  hint: "sg, my, th, vn, ph or id. An item id is scoped to one of them — the same id on another " +
60
65
  "Lazada host is a different product or nothing at all",
61
66
  },
67
+ searchLang: "English on sg and ph; Thai, Vietnamese, Indonesian or Malay on th, vn, id and my",
62
68
  },
63
69
  {
64
70
  slug: "otto",
@@ -70,6 +76,7 @@ export const MARKETS = [
70
76
  hint: "de or at. The two are not interchangeable: an id from one does not address a product " +
71
77
  "on the other",
72
78
  },
79
+ searchLang: "German, on both storefronts",
73
80
  },
74
81
  {
75
82
  slug: "rakuten",
@@ -81,6 +88,7 @@ export const MARKETS = [
81
88
  hint: "jp (Ichiba) or tw. Taiwan publishes no review text, so a category study there reads on " +
82
89
  "price and rating alone",
83
90
  },
91
+ searchLang: "Japanese on jp, Traditional Chinese on tw",
84
92
  },
85
93
  {
86
94
  slug: "trendyol",
@@ -91,6 +99,7 @@ export const MARKETS = [
91
99
  hint: "one of 47 storefronts — tr, de, ae, sa, at, be, fr, it, nl, pl, ro and the rest. An id " +
92
100
  "is scoped to one: the same number 404s on another country's",
93
101
  },
102
+ searchLang: "Turkish on tr; the storefront's own language elsewhere",
94
103
  },
95
104
  {
96
105
  slug: "jumia",
@@ -98,11 +107,30 @@ export const MARKETS = [
98
107
  idLabel: "a SKU such as OR537EA86PWGTNAFAMZ. A product URL does NOT contain it — the number at the " +
99
108
  "end of a product path is a different handle — so reach a product through `query` instead",
100
109
  region: { field: "market", hint: "ng, eg, ke, ma, ci, gh, sn, tn, ug or dz" },
110
+ searchLang: "English on ng, ke, gh and ug; French on ci, sn, ma, tn and dz; Arabic or French on eg",
111
+ },
112
+ // The one resale site here. Its `rating` describes the seller rather than the
113
+ // product, because a Vinted listing is a unique second-hand item with no
114
+ // reviews of its own — the server says so in `ratingScope`/`ratingNote` on
115
+ // every scan of it, and those are worth passing on rather than summarising
116
+ // away.
117
+ {
118
+ slug: "vinted",
119
+ label: "Vinted",
120
+ idLabel: "the numeric id from /items/<id>, or a full Vinted item URL",
121
+ region: {
122
+ field: "market",
123
+ hint: "one of 27 European storefronts — fr, de, es, it, pl, co.uk, com (US), com.au and the " +
124
+ "rest. A listing belongs to exactly one: the same item id does not exist on another " +
125
+ "country's Vinted",
126
+ },
127
+ searchLang: "the storefront's own — French on fr, German on de, Polish on pl, and so on",
101
128
  },
102
129
  {
103
130
  slug: "temu",
104
131
  label: "Temu",
105
132
  idLabel: "the goods id after -g- in a product URL, or the full URL",
133
+ searchLang: "English",
106
134
  },
107
135
  ];
108
136
  const BY_SLUG = new Map(MARKETS.map((m) => [m.slug, m]));
@@ -114,7 +142,7 @@ const SLUGS = MARKETS.map((m) => m.slug).join(", ");
114
142
  /**
115
143
  * The storefront argument, described site by site.
116
144
  *
117
- * One string rather than eleven schemas, because a tool takes one `marketplace`
145
+ * One string rather than twelve schemas, because a tool takes one `marketplace`
118
146
  * per call and the host shows the whole description whichever it picks. Sites
119
147
  * with a single storefront are named as taking none, so a model does not
120
148
  * invent one for Temu.
@@ -124,6 +152,8 @@ const MARKET_HINT = MARKETS.filter((m) => m.region)
124
152
  .join(" · ") +
125
153
  ` · ${MARKETS.filter((m) => !m.region).map((m) => m.label).join(", ")} have one storefront each ` +
126
154
  "and take no market argument.";
155
+ /** Which language a query has to be in, site by site. */
156
+ const LANG_HINT = MARKETS.map((m) => `${m.label}: ${m.searchLang}`).join(" · ");
127
157
  /** The product ids each site addresses by, for `items`. */
128
158
  const ID_HINT = MARKETS.map((m) => `${m.label}: ${m.idLabel}`).join(" · ");
129
159
  function structured(res) {
@@ -161,6 +191,9 @@ function marketplaceResult(payload, m, focus) {
161
191
  scanId: String(payload.scanId ?? ""),
162
192
  pending: Math.max(0, total - done),
163
193
  focus,
194
+ // Present only when the server answered from its own store. See the field's
195
+ // comment in `categoryGuidance` for why it is repeated in both channels.
196
+ freshness: typeof payload.freshness === "string" ? payload.freshness : undefined,
164
197
  site: m.label,
165
198
  statusTool: "marketplace_scan_status",
166
199
  // There is no free insights view for these sites yet, and pointing a model
@@ -177,6 +210,12 @@ function marketplaceResult(payload, m, focus) {
177
210
  complete: payload.complete !== false,
178
211
  query: payload.query ?? null,
179
212
  market: payload.market ?? payload.domain ?? null,
213
+ // Where this answer came from, and when the figures in it were measured.
214
+ // `collectedAt` is when the result was assembled, which on a stored answer
215
+ // is now and says nothing about the price's age; `observedAt` is the age.
216
+ servedFrom: payload.servedFrom ?? "live",
217
+ observedAt: payload.observedAt ?? null,
218
+ freshness: payload.freshness ?? null,
180
219
  progress,
181
220
  rollup,
182
221
  products,
@@ -197,7 +236,7 @@ export function registerMarketplaceTools(server, makeClient) {
197
236
  server.registerTool("scan_marketplace_category", {
198
237
  title: "Scan Marketplace Category",
199
238
  _meta: viewMeta("scan_marketplace_category"),
200
- description: "Collect a category from any of eleven marketplaces and read it: products with prices, " +
239
+ description: "Collect a category from any of twelve marketplaces and read it: products with prices, " +
201
240
  "star histograms, the review text itself, and the arithmetic over them (price spread, " +
202
241
  "rating spread, which aspects recur across how many brands, and the share of each " +
203
242
  "product's ratings sitting at 1-2 stars). `marketplace` picks the site — one of " +
@@ -222,7 +261,17 @@ export function registerMarketplaceTools(server, makeClient) {
222
261
  inputSchema: z
223
262
  .object({
224
263
  marketplace: marketplaceArg,
225
- query: z.string().optional().describe("Category or keyword to search, e.g. 'cast iron skillet'."),
264
+ query: z
265
+ .string()
266
+ .optional()
267
+ .describe("Category or keyword to search, e.g. 'cast iron skillet'. Two to four words, " +
268
+ "the common name a shopper would type rather than a catalogue description, " +
269
+ "and no quotes or AND/OR — none of these sites read them as operators, they " +
270
+ "search for them and narrow to nothing. It has to be in the storefront's " +
271
+ `language — ${LANG_HINT}. A query in the wrong language does not fail: it ` +
272
+ "returns a few imported listings, which reads as a thin category and is " +
273
+ "really a bad search. Brand names are not translated. A scan that came back " +
274
+ "with no products is a reason to change the query, not to raise the limit."),
226
275
  items: z
227
276
  .array(z.string())
228
277
  .optional()
@@ -329,7 +378,7 @@ export function registerMarketplaceTools(server, makeClient) {
329
378
  server.registerTool("get_marketplace_product", {
330
379
  title: "Get Marketplace Product",
331
380
  _meta: viewMeta("get_marketplace_product"),
332
- description: "Fetch one product from any of eleven marketplaces by id or URL: price, rating, the full " +
381
+ description: "Fetch one product from any of twelve marketplaces by id or URL: price, rating, the full " +
333
382
  "star histogram, specs, and the review text. `marketplace` picks the site — one of " +
334
383
  `${SLUGS}. ` +
335
384
  "Costs 3 nooticr credits. " +
@@ -28,7 +28,7 @@ import { registerCollabTools } from "./collab.js";
28
28
  import { registerAmazonTools } from "./amazon.js";
29
29
  import { registerMarketplaceTools } from "./marketplace.js";
30
30
  /** Current MCP server version — bumped on every deploy for traceability. */
31
- export const MCP_SERVER_VERSION = "1.26.38";
31
+ export const MCP_SERVER_VERSION = "1.26.40";
32
32
  /** MCP Apps extension identifier */
33
33
  const UI_EXTENSION = "io.modelcontextprotocol/ui";
34
34
  /** MIME type for MCP Apps HTML resources */
@@ -18,7 +18,7 @@ export const NOOTICR_UI_TEMPLATE = `<!DOCTYPE html>
18
18
  <meta name="viewport" content="width=device-width,initial-scale=1"/>
19
19
  <title>Nooticr</title>
20
20
  <style>
21
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--shadow-sm:0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;--shadow-md:0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}html{overflow:hidden auto}[hidden]{display:none!important}a{color:inherit;text-decoration:none}body{color:var(--fg);background:0 0;max-width:100vw;padding:10px;font-family:system-ui,-apple-system,Segoe UI,sans-serif;line-height:1.5;overflow-x:hidden}}@layer components{.load-bar{background:var(--tag);border-radius:3.40282e38px;height:3px;margin-bottom:14px;position:relative;overflow:hidden}.load-bar:after{content:"";background:var(--brand);border-radius:3.40282e38px;width:42%;animation:1.35s cubic-bezier(.45,0,.55,1) infinite sweep;position:absolute;top:0;bottom:0}@keyframes sweep{0%{left:-45%}50%{left:58%}to{left:-45%}}.load-head{align-items:center;gap:calc(var(--spacing) * 2);color:var(--muted);margin-bottom:11px;font-size:12.5px;font-weight:600;display:flex}.load-price{color:var(--brand);white-space:nowrap;margin-left:auto;font-weight:700}.mk{color:var(--fg);flex-shrink:0;display:block}.mk .iris{animation:3.6s cubic-bezier(.5,0,.5,1) infinite mkScan}.mk .lid{transform-box:fill-box;transform-origin:50%;animation:5.4s ease-in-out infinite mkBlink}@keyframes mkScan{0%{transform:translate(0)}18%{transform:translate(-15px,7px)}34%{transform:translate(11px,-5px)}52%{transform:translate(-8px,12px)}70%{transform:translate(14px,3px)}86%{transform:translate(-4px,-6px)}to{transform:translate(0)}}@keyframes mkBlink{0%,88%,to{transform:scaleY(1)}93%{transform:scaleY(.08)}}.load-known{gap:calc(var(--spacing) * 2);flex-wrap:wrap;margin-bottom:11px;display:flex}.load-fact{align-items:center;gap:calc(var(--spacing) * 2);border:1px solid var(--border);background:var(--card);color:var(--fg);border-radius:3.40282e38px;padding:4px 11px;font-size:12px;font-weight:600;display:inline-flex}.load-fact-mark{color:var(--brand);display:inline-flex}.load-fact-mark svg{fill:currentColor;width:13px;height:13px}.led .card-body{padding:4px 14px 12px}.led-row{align-items:flex-start;gap:calc(var(--spacing) * 3);border-bottom:1px solid var(--border);padding:10px 0;display:flex}.led-row:last-of-type{border-bottom:none}.led-body{flex:1;min-width:0}.led-label{color:var(--fg);font-size:12.5px;font-weight:600}.led-detail{color:var(--muted);margin-top:1px;font-size:11px}.led-cost{background:var(--tag);color:var(--fg);font-variant-numeric:tabular-nums;border-radius:3.40282e38px;flex:none;align-items:center;padding:2px 9px;font-size:11.5px;font-weight:700;display:inline-flex}.led-mark{width:16px;color:var(--brand);flex:none;justify-content:center;align-items:center;margin-top:1px;display:inline-flex}.led-mark svg{fill:currentColor;width:13px;height:13px}.led-dot{border:1px solid var(--border);border-radius:50%;flex:none;width:13px;height:13px;margin-top:2px}.led-foot{color:var(--muted);margin-top:10px;font-size:11.5px;line-height:1.5}.load-centre{text-align:center;flex-direction:column;align-items:center;padding:30px 0 22px;display:flex}.load-centre .load-what{color:var(--fg);margin-top:20px;font-size:14px;font-weight:700}.load-centre .load-sub{color:var(--muted);margin-top:5px;font-size:12.5px}.load-centre .load-bar{width:210px;margin:16px 0 0}.sk{border-radius:var(--radius-md);background:var(--tag);position:relative;overflow:hidden}.sk-media{aspect-ratio:9/16;width:100%;max-height:var(--stage-max,420px);border-radius:0}.sk-media.h{aspect-ratio:16/9}.sk-line{height:11px;margin-top:8px}.sk-line.w40{width:40%}.sk-line.w60{width:60%}.sk-line.w80{width:80%}.sk-pill{border-radius:999px;width:76px;height:22px;margin:0 5px 5px 0;display:inline-block}.sk-card{border-radius:var(--radius-xl);border:1px solid var(--border);background:var(--card);flex-shrink:0;width:min(340px,86vw);min-width:min(340px,86vw);overflow:hidden}.sk-body{padding:13px 14px}.sk-row{align-items:center;gap:calc(var(--spacing) * 3);border-bottom:1px solid var(--border);padding:11px 0;display:flex}.sk-avatar{border-radius:10px;flex-shrink:0;width:44px;height:44px}.sk-strip{gap:calc(var(--spacing) * 3);padding:2px 0 8px;display:flex;overflow:hidden}@media (prefers-reduced-motion:reduce){.load-bar:after,.mk .iris,.mk .lid{animation:none}.load-bar:after{opacity:.5;width:100%;left:0}}.fade-in{animation:.4s ease-out fadeIn}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.stagger>*{opacity:0;animation:.4s ease-out forwards fadeIn}.stagger>:first-child{animation-delay:50ms}.stagger>:nth-child(2){animation-delay:.1s}.stagger>:nth-child(3){animation-delay:.15s}.stagger>:nth-child(4){animation-delay:.2s}.stagger>:nth-child(5){animation-delay:.25s}.stagger>:nth-child(6){animation-delay:.3s}.stagger>:nth-child(7){animation-delay:.35s}.stagger>:nth-child(8){animation-delay:.4s}.gallery-wrap{max-width:100%;position:relative;overflow:hidden}.gallery{gap:calc(var(--spacing) * 3);scroll-snap-type:x mandatory;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scrollbar-width:none;width:100%;max-width:100%;padding:2px 0 8px;display:flex;overflow-x:auto}.gallery::-webkit-scrollbar{display:none}.gallery-dots{justify-content:center;gap:calc(var(--spacing) * 1.5);flex-wrap:wrap;margin-top:10px;display:flex}.gallery-dots .dot{background:var(--border);cursor:pointer;width:8px;height:8px;transition:var(--transition);border:none;border-radius:50%;padding:0}.gallery-dots .dot.active{background:var(--accent);border-radius:999px;width:20px}.gallery-nav{z-index:2;cursor:pointer;background:var(--card);border:1px solid var(--border);width:32px;height:32px;color:var(--fg);transition:var(--transition);opacity:0;border-radius:50%;justify-content:center;align-items:center;font-size:14px;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.gallery-wrap:hover .gallery-nav{opacity:1}.gallery-nav:hover{background:var(--accent);color:var(--card)}.gallery-nav.prev{left:2px}.gallery-nav.next{right:2px}.card{border-radius:var(--radius-xl);border:1px solid var(--border);background:var(--card);width:min(380px,100%);min-width:min(380px,100%);max-width:100%;transition:var(--transition);cursor:default;scroll-snap-align:center;flex-shrink:0;display:block}.card.card-media{--ar-w:9;--ar-h:16;width:min(100%, calc(var(--stage-max,520px) * var(--ar-w) / var(--ar-h)));background:0 0;border-color:#0000;min-width:0;margin:0 auto}.card.card-media.h{--ar-w:16;--ar-h:9}.card.card-media.sq{--ar-w:1;--ar-h:1}.card-media .card-foot{background:0 0;justify-content:flex-end;padding:8px 4px 0;display:flex}.card-media .btn-sm{margin-top:0}.card:hover{border-color:var(--muted)}.card-media:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.card-wide{width:100%}.card img:not(.mp-slide){object-fit:cover;width:100%;height:260px;display:block}.card-wide img:not(.mp-slide){max-height:340px}.card video{object-fit:contain;background:#000;border:none;outline:none;width:100%;min-height:220px;max-height:520px;display:block}.card-wide video{max-height:520px}.card-body{padding:14px 16px}.badge{align-items:center;gap:var(--spacing);text-transform:capitalize;transition:var(--transition);border-radius:3.40282e38px;padding:3px 10px;font-size:11px;font-weight:700;display:inline-flex}.handle{color:var(--muted);margin-left:auto;font-size:12px}.tag{align-items:center;gap:var(--spacing);transition:var(--transition);cursor:default;border-radius:3.40282e38px;margin:2px;padding:4px 10px;font-size:12px;display:inline-flex}.tag.clickable{cursor:pointer;-webkit-user-select:none;user-select:none}.tag.clickable:hover{background:var(--tag)}.tag.copied{background:var(--green)!important;color:#fff!important}.title{margin:6px 0;font-size:14px;font-weight:600;line-height:1.35}.card-wide .title{font-size:16px;font-weight:700}.caption{color:var(--muted);margin:6px 0 0;font-size:13px;line-height:1.5}.stats{align-items:center;gap:calc(var(--spacing) * 1.5);flex-wrap:wrap;margin-top:8px;display:flex}.stat-pill{align-items:center;gap:var(--spacing);color:var(--fg);background:var(--tag);transition:var(--transition);border-radius:3.40282e38px;padding:5px 12px;font-size:12px;display:inline-flex}.stat-pill:hover{background:var(--border)}.btn{cursor:pointer;align-items:center;gap:calc(var(--spacing) * 1.5);border-radius:var(--radius-lg);color:#fff;background:var(--brand);transition:var(--transition);border:none;margin-top:12px;padding:8px 18px;font-size:13px;font-weight:600;text-decoration-line:none;display:inline-flex}.btn:hover{background:var(--brand-2)}.btn:active{opacity:.9}.btn-sm{margin-top:8px;padding:5px 12px;font-size:11px}.section{border-bottom:1px solid var(--border);margin-bottom:6px;overflow:hidden}.section-header{cursor:pointer;-webkit-user-select:none;user-select:none;transition:var(--transition);justify-content:space-between;align-items:center;padding:10px 2px;display:flex}.section-header:hover .section-label{color:var(--fg)}.section-label{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:11px;font-weight:700}.section-chevron{color:var(--muted);font-size:12px;transition:transform .2s}.section-header.open .section-chevron{transform:rotate(180deg)}.section-content{max-height:0;padding:0 2px;transition:max-height .28s,padding .28s;overflow:hidden}.section-content.open{max-height:2400px;padding:4px 2px 14px}.section-text{color:var(--fg);font-size:13px;line-height:1.6}.ai-actions{gap:calc(var(--spacing) * 2);flex-wrap:wrap;margin-top:14px;display:flex}.ai-btn{cursor:pointer;align-items:center;gap:calc(var(--spacing) * 2);border:1px solid var(--border);background:var(--card);color:var(--fg);font:inherit;transition:var(--transition);border-radius:3.40282e38px;padding:8px 13px;font-size:13px;font-weight:600;display:inline-flex}.ai-btn:hover:not(:disabled){border-color:var(--brand);background:var(--brand-soft)}.ai-btn:disabled{opacity:.55;cursor:not-allowed}.ai-btn .spark{color:var(--brand);flex-shrink:0;display:inline-flex}.ai-btn .price{white-space:nowrap;color:var(--brand);background:var(--brand-soft);border-radius:3.40282e38px;align-items:center;padding:2px 7px;font-size:11px;font-weight:700;display:inline-flex}.ai-btn.busy .spark{animation:1.1s linear infinite spin}.ai-note{color:var(--muted);margin-top:8px;font-size:11.5px}.an-title{align-items:center;gap:calc(var(--spacing) * 2);margin-bottom:14px;font-size:16px;font-weight:700;display:flex}.verdict{gap:calc(var(--spacing) * 2.5);grid-template-columns:repeat(1,minmax(0,1fr));margin-bottom:12px;display:grid}@media (min-width:420px){.verdict{grid-template-columns:1fr 1fr}}.meter{border-radius:var(--radius-md);background:var(--tag);padding:9px 11px}.meter-top{justify-content:space-between;align-items:baseline;gap:calc(var(--spacing) * 2);letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-size:11px;font-weight:700;display:flex}.meter-top b{letter-spacing:0;font-size:14px}.meter-track{background:var(--border);border-radius:3.40282e38px;height:5px;margin-top:6px;overflow:hidden}.meter-track>i{border-radius:3.40282e38px;height:100%;display:block}.chiprow{gap:calc(var(--spacing) * 1.5);flex-wrap:wrap;display:flex}.mhead{z-index:3;background:var(--bg);border-bottom:1px solid var(--border);padding:2px 0 10px;position:sticky;top:0}.mhead-top{justify-content:space-between;align-items:flex-end;gap:calc(var(--spacing) * 2.5);flex-wrap:wrap;display:flex}.mention-term{color:var(--muted);margin-bottom:2px;font-size:13px}.mention-term b{color:var(--fg)}.mention-total{color:var(--fg);letter-spacing:-.01em;font-size:20px;font-weight:650}.mention-down{color:var(--muted);margin-top:8px;font-size:12px}.mention-window{color:var(--muted);border:1px solid var(--border);border-radius:3.40282e38px;margin-left:6px;padding:1px 8px;font-size:11px;display:inline-block}.mention-summary{color:var(--muted);max-width:60ch;margin-top:6px;font-size:13px;line-height:1.45}.msort{background:var(--tag);border-radius:3.40282e38px;flex:none;align-items:center;gap:2px;padding:3px;display:inline-flex}.msort-btn{color:var(--muted);cursor:pointer;transition:var(--transition);white-space:nowrap;background:0 0;border:0;border-radius:999px;padding:5px 14px;font-size:11.5px;font-weight:600}.msort-btn:hover{color:var(--fg)}.msort-btn.on{color:var(--card);background:var(--accent)}.mchips{gap:calc(var(--spacing) * 1.5);flex-wrap:wrap;margin-top:10px;display:flex}.mchip{cursor:pointer;align-items:center;gap:calc(var(--spacing) * 2);color:var(--muted);border:1px solid var(--border);transition:var(--transition);white-space:nowrap;background:0 0;border-radius:3.40282e38px;padding:5px 12px;font-size:12px;font-weight:600;display:inline-flex}.mchip:hover{color:var(--fg);border-color:var(--muted)}.mchip b{color:var(--fg);background:var(--tag);font-variant-numeric:tabular-nums;border-radius:3.40282e38px;padding:1px 7px;font-weight:700}.mchip.on{color:var(--card);background:var(--accent);border-color:#0000}.mchip.on b{color:inherit;background:0 0;padding:1px 0}.mchip.on .mchip-mark{color:inherit}.mchip.quiet{opacity:.5;cursor:default}.mchip.quiet:hover{color:var(--muted);border-color:var(--border)}.mchip-mark{color:var(--brand);display:inline-flex}.mchip-mark svg{fill:currentColor;width:13px;height:13px}.mgroups{gap:calc(var(--spacing) * 2.5);flex-direction:column;margin-top:12px;display:flex}.mgroup{border-radius:var(--radius-xl);border:1px solid var(--border);background:var(--card);padding:12px 14px 6px}.mgroup-head{align-items:center;gap:calc(var(--spacing) * 2);flex-wrap:wrap;margin-bottom:6px;display:flex}.mgroup-plat{align-items:center;gap:calc(var(--spacing) * 1.5);color:var(--brand);font-size:11px;font-weight:600;display:inline-flex}.mgroup-plat svg{fill:currentColor;width:12px;height:12px}.mgroup-about{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);border:1px solid var(--border);border-radius:3.40282e38px;padding:1px 7px;font-size:10.5px}.mgroup-reach{color:var(--muted);margin-left:auto;font-size:11px}.mgroup-title{color:var(--fg);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:13px;font-weight:600;line-height:1.35;display:-webkit-box;overflow:hidden}.mgroup-rest{color:var(--muted);cursor:pointer;transition:var(--transition);background:0 0;border:0;align-self:flex-start;margin-top:2px;padding:2px 0;font-size:11.5px;font-weight:600}.mgroup-rest:hover{color:var(--fg)}.mgroup-actions{align-items:center;gap:calc(var(--spacing) * 3);margin-top:5px;display:flex}.mgroup-link{color:var(--muted);font-size:11.5px;text-decoration:none}.mgroup-link:hover{color:var(--fg);text-decoration:underline}.mgroup-all{color:var(--muted);cursor:pointer;transition:var(--transition);background:0 0;border:0;padding:0;font-size:11.5px;font-weight:600}.mgroup-all:hover{color:var(--fg)}.mgroup-none{color:var(--muted);margin-top:8px;font-size:12px}.mgroup-stage{--stage-max:300px;border-radius:var(--radius-xl) var(--radius-xl) 0 0;width:calc(100% + 28px);margin:-12px -14px 10px;overflow:hidden}.mgroup-stage .mp{border:0;border-radius:0;width:100%}.mgroup-media{background:var(--muted);border-radius:var(--radius-xl) var(--radius-xl) 0 0;cursor:default;border:0;width:calc(100% + 28px);height:132px;margin:-12px -14px 10px;padding:0;display:block;position:relative;overflow:hidden}.mgroup-media.is-playable{cursor:pointer}.mgroup-media-img{object-fit:cover;width:100%;height:100%;display:block}.mgroup-media-blank{opacity:.35;justify-content:center;align-items:center;width:100%;height:100%;display:flex}.mgroup-media-play{color:#fff;background:#00000094;border-radius:999px;justify-content:center;align-items:center;width:40px;height:40px;transition:transform .16s cubic-bezier(.16,1,.3,1);display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.mgroup-media.is-playable:hover .mgroup-media-play{transform:translate(-50%,-50%)scale(1.08)}.mgroup-stage{border-radius:var(--radius-xl) var(--radius-xl) 0 0;--stage-max:300px;width:calc(100% + 28px);margin:-12px -14px 10px;overflow:hidden}.mentions{flex-direction:column;margin-top:8px;display:flex}.mention{cursor:pointer;align-items:flex-start;gap:calc(var(--spacing) * 3);transition:var(--transition);padding:11px 2px;display:flex}.mention+.mention{border-top:1px solid var(--border)}.mention:hover{background:var(--card-hover)}.mention.picked{background:var(--tag)}.mention-pick{width:15px;height:15px;accent-color:var(--accent);cursor:pointer;flex:none;margin-top:11px}.mention-av{background:var(--tag);border:1px solid var(--border);border-radius:3.40282e38px;flex:none;width:36px;height:36px;position:relative;overflow:visible}.mention-av-init{color:var(--muted);border-radius:3.40282e38px;justify-content:center;align-items:center;font-size:14px;font-weight:700;display:flex;position:absolute;inset:0}.mention-av-img{object-fit:cover;border-radius:3.40282e38px;width:100%;height:100%;position:absolute;inset:0}.mention-av-badge{background:var(--card);width:16px;height:16px;color:var(--brand);border:1px solid var(--border);border-radius:3.40282e38px;justify-content:center;align-items:center;display:flex;position:absolute;bottom:-3px;right:-3px}.mention-av-badge svg{fill:currentColor;width:9.5px;height:9.5px}.mention-body{gap:calc(var(--spacing) * .5);flex-direction:column;flex:1;min-width:0;display:flex}.mention-head{align-items:baseline;gap:calc(var(--spacing) * 2);flex-wrap:wrap;display:flex}.mention-who{color:var(--fg);font-size:13px;font-weight:650}.mention-when{color:var(--muted);font-size:11.5px}.mention-when:before{content:"·";color:var(--border);margin-right:7px}.mention-hits{color:var(--fg);background:var(--tag);border:1px solid var(--border);border-radius:3.40282e38px;margin-left:auto;padding:1px 7px;font-size:10.5px;font-weight:700}.mention-text{color:var(--fg);word-break:break-word;margin-top:4px;font-size:13.5px;line-height:1.5}.mention-text mark{color:inherit;background:#f43f5e26;border-radius:4px;padding:1px 3px;font-weight:600}.mention-note{border-left:2px solid var(--brand,#f43f5e);background:var(--tag);color:var(--fg);white-space:pre-wrap;word-break:break-word;border-radius:0 6px 6px 0;margin-top:6px;padding:6px 9px;font-size:12.5px;line-height:1.5;display:block}.mention-meta{align-items:center;gap:calc(var(--spacing) * 3.5);margin-top:6px;display:flex}.mention-stat{align-items:center;gap:var(--spacing);color:var(--muted);font-size:11px;display:inline-flex}.mention-stat svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:12px;height:12px}.chip{text-transform:capitalize;letter-spacing:.01em;border:1px solid var(--border);color:var(--muted);border-radius:3.40282e38px;padding:1px 7px;font-size:10px;font-weight:600}.chip-positive{color:#15803d;background:#15803d14;border-color:#15803d55}.chip-negative{color:#b91c1c;background:#b91c1c14;border-color:#b91c1c55}.chip-mixed{color:#a16207;background:#a1620714;border-color:#a1620755}.chip-neutral{color:var(--muted)}.chip-cat{background:var(--tag)}.mention-more{cursor:pointer;border-radius:var(--radius-xl);width:100%;color:var(--fg);background:var(--tag);border:1px solid var(--border);transition:var(--transition);margin-top:12px;padding:10px;font-size:13px;font-weight:600;display:block}.mention-more:hover:not(:disabled){border-color:var(--muted)}.mention-more:disabled{opacity:.6;cursor:default}.sm-thumb-badged{flex:none;position:relative;overflow:visible}.sm-thumb-img{object-fit:cover;border-radius:var(--radius-lg);width:100%;height:100%;display:block}.sm-thumb{border-radius:var(--radius-lg);object-fit:cover;background:var(--tag);border:1px solid var(--border);flex:none;width:56px;height:56px}.tag.copyable{cursor:pointer;border:1px solid var(--border);font:inherit;align-items:center;gap:5px;font-size:12px;display:inline-flex}.tag.copyable:hover{border-color:var(--accent)}.tag.warn{background:var(--red)}@supports (color:color-mix(in lab, red, red)){.tag.warn{background:color-mix(in srgb, var(--red) 12%, transparent)}}.tag.warn{color:var(--red);border:1px solid var(--red)}@supports (color:color-mix(in lab, red, red)){.tag.warn{border:1px solid color-mix(in srgb, var(--red) 35%, transparent)}}.lede-box{background:var(--tag);border-radius:var(--radius-sm);margin-bottom:12px;padding:11px 13px;font-size:13.5px;line-height:1.6}.steps-list{gap:calc(var(--spacing) * 2);flex-direction:column;display:flex}.step-row{align-items:flex-start;gap:calc(var(--spacing) * 2.5);grid-template-columns:78px 1fr;display:grid}.step-k{letter-spacing:.05em;text-transform:uppercase;color:var(--muted);padding-top:2px;font-size:10.5px;font-weight:700}.step-v{font-size:13px;line-height:1.5}.an-list{margin:0;padding-left:18px;font-size:13px;line-height:1.55}.an-list li{margin:4px 0}.clamp6{-webkit-line-clamp:6;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.hook-bar-track{align-items:center;gap:calc(var(--spacing) * 2.5);margin-top:6px;display:flex}.hook-bar{background:var(--tag);border-radius:3.40282e38px;flex:1;height:10px;overflow:hidden}.hook-bar-fill{border-radius:3.40282e38px;height:100%;transition:width .8s cubic-bezier(.4,0,.2,1)}.hook-score{text-align:right;min-width:40px;font-size:15px;font-weight:800}.quote-box{border-radius:var(--radius-md);background:var(--tag);border-left:3px solid var(--blue);margin:6px 0;padding:10px 14px;font-size:13px;font-weight:600;line-height:1.45;position:relative}.quote-at{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--muted);margin-bottom:4px;font-size:11px;font-weight:700;display:block}.quote-box .copy-btn{cursor:pointer;border-radius:var(--radius-md);background:var(--card);border:1px solid var(--border);color:var(--muted);transition:var(--transition);opacity:0;padding:3px 8px;font-size:10px;position:absolute;top:8px;right:8px}.quote-box:hover .copy-btn{opacity:1}.copy-btn:hover{background:var(--accent);color:var(--card)}.theme-chip{align-items:center;gap:calc(var(--spacing) * 1.5);background:var(--tag);border:1px solid var(--border);color:var(--fg);border-radius:3.40282e38px;margin:0 4px 5px 0;padding:4px 10px;font-size:12px;display:inline-flex}.theme-chip b{color:var(--brand,var(--blue));font-variant-numeric:tabular-nums}.sec-label{letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin-bottom:7px;font-size:11px;font-weight:700}.cbadge{white-space:nowrap;border-radius:4px;padding:1px 5px;font-size:10px;font-weight:700}.cbadge.pin{color:#b45309;background:#fef3c7}.cbadge.liked{color:#be185d;background:#fce7f3}.cmeta{align-items:center;gap:calc(var(--spacing) * 2);color:var(--muted);flex-wrap:wrap;margin-top:5px;font-size:11px;display:flex}.ctext{color:var(--fg);font-size:13px;line-height:1.45}.ctext.clamp{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.cmore{color:var(--blue);cursor:pointer;background:0 0;border:none;padding:3px 0 0;font-family:inherit;font-size:11.5px;font-weight:600}.comment-row{justify-content:space-between;align-items:flex-start;gap:calc(var(--spacing) * 2.5);border-radius:var(--radius-md);border-bottom:1px solid var(--border);transition:var(--transition);padding:10px 0;display:flex}.comment-row:last-child{border-bottom:none}.comment-row:hover{background:var(--tag)}.creator-card{border-radius:var(--radius-xl);border:1px solid var(--border);background:var(--card);width:min(240px,80vw);min-width:min(240px,80vw);transition:var(--transition);scroll-snap-align:start;flex-shrink:0;padding:16px;display:block}.creator-card:hover{border-color:var(--muted)}.avatar{object-fit:cover;border:2px solid var(--border);border-radius:3.40282e38px;width:52px;height:52px}.avatar-placeholder{border-radius:3.40282e38px;justify-content:center;align-items:center;width:52px;height:52px;font-size:22px;display:flex}.verified{color:#fff;border-radius:3.40282e38px;justify-content:center;align-items:center;width:18px;height:18px;margin-left:4px;font-size:10px;display:inline-flex}.sound-card{border-radius:var(--radius-xl);border:1px solid var(--border);background:var(--card);width:min(300px,88vw);min-width:min(300px,88vw);transition:var(--transition);scroll-snap-align:start;flex-shrink:0;padding:14px;display:block}.sound-card:hover{border-color:var(--muted)}.sound-cover{border-radius:var(--radius-md);object-fit:cover;width:68px;height:68px}.mp{--ar-w:9;--ar-h:16;width:min(100%, calc(var(--stage-max,520px) * var(--ar-w) / var(--ar-h)));background:#000;border:2px solid #0000;border-radius:18px;margin-inline:auto;position:relative;overflow:hidden}.mp.playing{border-color:var(--brand)}.card-media>.mp{width:100%}.mp.h{--ar-w:16;--ar-h:9}.mp.sq{--ar-w:1;--ar-h:1}.mp-stage{width:100%;aspect-ratio:var(--ar-w) / var(--ar-h);max-height:var(--stage-max,520px);background:#000;position:relative;overflow:hidden}.mp .mp-stage>video{object-fit:contain;background:#000;width:100%;height:100%;max-height:none;display:block}.mp .mp-slide{object-fit:contain;opacity:0;background:#000;width:100%;height:100%;max-height:none;transition:opacity .45s;position:absolute;inset:0;transform:none}.mp-slide.active{opacity:1}.mp-ov{pointer-events:none;z-index:2;position:absolute;inset:0}.mp-ov:after{content:"";pointer-events:none;background:linear-gradient(#0000,#00000047 38%,#000000b8);height:46%;position:absolute;bottom:0;left:0;right:0}.mp-ov:before{content:"";pointer-events:none;background:linear-gradient(#00000073,#0000);height:16%;position:absolute;top:0;left:0;right:0}.mp-badge,.mp-chip,.mp-rail,.mp-meta,.mp-tap,.mp-nav{z-index:1}.mp-ov>*{pointer-events:auto}.mp-badge{text-transform:capitalize;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#fff;background:#0000008c;border-radius:3.40282e38px;align-items:center;gap:5px;padding:4px 9px;font-size:11px;font-weight:700;display:inline-flex;position:absolute;top:10px;left:10px}.mp-pick{z-index:3;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#0000;width:26px;height:26px;transition:var(--transition);background:#0000006b;border:2px solid #ffffffd9;border-radius:3.40282e38px;justify-content:center;align-items:center;padding:0;display:flex;position:absolute;top:9px;right:9px}.mp-pick:hover{background:#000000a8;transform:scale(1.08)}.mp-open{z-index:3;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#fff;width:26px;height:26px;transition:var(--transition);background:#0000006b;border:2px solid #ffffffd9;border-radius:3.40282e38px;justify-content:center;align-items:center;padding:0;text-decoration-line:none;display:flex;position:absolute;top:9px;right:9px}.mp-open:hover{background:#000000a8;transform:scale(1.08)}.mp-open.with-pick{right:43px}.mp-pick[aria-pressed=true]{background:var(--brand,#ff4d23);color:#fff;border-color:#fff}.mp.picked{outline:2px solid var(--brand,#ff4d23);outline-offset:-2px}.mp-pick~.mp-chip,.mp[data-mp=slides] .mp-chip{top:42px}.pickbar{z-index:20;align-items:center;gap:calc(var(--spacing) * 2.5);background:var(--card);border:1px solid var(--border);box-shadow:var(--shadow-lg);border-radius:3.40282e38px;margin:12px 0 0;padding:10px 12px;animation:.2s ease-out fadeIn;display:flex;position:sticky;bottom:0}.pickbar .n{white-space:nowrap;font-size:13px;font-weight:700}.pickbar .sp{flex:1}.pickbar button{cursor:pointer;white-space:nowrap;border:1px solid var(--border);background:var(--card);color:var(--fg);font:inherit;transition:var(--transition);border-radius:3.40282e38px;padding:6px 13px;font-size:12.5px;font-weight:600}.pickbar button.primary{background:var(--brand,#ff4d23);color:#fff;border-color:#0000}.pickbar button:hover{filter:brightness(1.08)}.pickbar button:disabled{opacity:.5;cursor:not-allowed}.pickbar .hint{color:var(--muted);font-size:11.5px}.mp-chip{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#fff;font-variant-numeric:tabular-nums;background:#0000008c;border-radius:3.40282e38px;padding:3px 9px;font-size:11px;font-weight:700;position:absolute;top:10px;right:10px}.mp-rail{align-items:center;gap:calc(var(--spacing) * 3.5);flex-direction:column;display:flex;position:absolute;bottom:76px;right:8px}.mp-act{cursor:default;background:0 0;border:none;flex-direction:column;align-items:center;gap:3px;padding:0;display:flex}.mp-act .ic{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#fff;width:38px;height:38px;transition:var(--transition);background:#0006;border-radius:3.40282e38px;justify-content:center;align-items:center;display:flex}.mp-act:hover .ic{background:#0000009e;transform:scale(1.06)}.mp-act .n{color:#fff;text-shadow:0 1px 3px #000c;font-variant-numeric:tabular-nums;font-size:11px;font-weight:700}.mp-meta{color:#fff;text-shadow:0 1px 3px #000000d9;position:absolute;bottom:60px;left:12px;right:64px}.mp-handle{margin-bottom:3px;font-size:13px;font-weight:800}.mp-cap{-webkit-line-clamp:2;opacity:.95;-webkit-box-orient:vertical;font-size:12px;line-height:1.4;display:-webkit-box;overflow:hidden}.mp-song{white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:5px;margin-top:6px;font-size:11px;font-weight:600;display:flex;overflow:hidden}.mp-song .note{flex:none;display:inline-flex}.mp.playing .mp-song .note{animation:3s linear infinite spin}.mp-song-t{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}@keyframes spin{to{transform:rotate(360deg)}}.mp-tap{cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.mp-tap span{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);color:#fff;width:64px;height:64px;transition:var(--transition);opacity:1;background:#00000073;border-radius:3.40282e38px;justify-content:center;align-items:center;font-size:26px;display:flex}.mp.playing .mp-tap span{opacity:0}.mp.playing:hover .mp-tap span{opacity:.65}.mp-nav{cursor:pointer;color:#fff;opacity:0;width:34px;height:34px;transition:var(--transition);background:#0000008c;border:none;border-radius:3.40282e38px;justify-content:center;align-items:center;font-size:18px;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.mp:hover .mp-nav,.mp:focus-within .mp-nav{opacity:1}.mp-nav.prev{left:8px}.mp-nav.next{right:8px}.mp-nav:hover{background:#000c}.mp-ctl{z-index:3;background:linear-gradient(#0000,#000000d9);align-items:center;gap:9px;padding:9px 11px;display:flex;position:absolute;bottom:0;left:0;right:0}.mp-btn{cursor:pointer;color:#111;width:30px;height:30px;transition:var(--transition);background:#fffffff2;border:none;border-radius:3.40282e38px;flex:none;justify-content:center;align-items:center;font-size:12px;display:flex}.mp-btn:hover{transform:scale(1.09)}.mp-time{color:#fff;font-variant-numeric:tabular-nums;text-shadow:0 1px 2px #000c;flex-shrink:0;font-size:10px;font-weight:700}.mp-seek{cursor:pointer;flex:1;align-items:center;min-width:0;height:14px;display:flex;position:relative}.mp-segs{gap:calc(var(--spacing) * .5);border-radius:3.40282e38px;width:100%;height:3px;transition:height .15s;display:flex;overflow:hidden}.mp-seek:hover .mp-segs{height:5px}.mp-seg{background:#ffffff52;border-radius:3.40282e38px;flex:1;height:100%;overflow:hidden}.mp-seg>i{background:#fff;border-radius:3.40282e38px;width:0;height:100%;display:block}.mp-seg.done>i{width:100%}.mp-icon{color:#fff;cursor:pointer;opacity:.9;background:0 0;border:none;flex-shrink:0;padding:0;font-size:14px;line-height:1}.mp-icon:hover{opacity:1}.mp-spin{pointer-events:none;z-index:2;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.mp-spin>i{border:3px solid #ffffff40;border-top-color:#fff;border-radius:3.40282e38px;width:34px;height:34px;animation:.8s linear infinite spin}.mp-err{pointer-events:none;z-index:4;justify-content:center;align-items:center;gap:calc(var(--spacing) * 2);text-align:center;color:#fff;background:#000000d1;flex-direction:column;padding:16px;font-size:12px;font-weight:600;display:flex;position:absolute;inset:0}.mp:focus-visible{outline-offset:-2px;outline:2px solid #fff}.mp-btn:focus-visible,.mp-icon:focus-visible,.mp-nav:focus-visible,.mp-tap:focus-visible,.au-play:focus-visible,.gallery-nav:focus-visible,.dot:focus-visible{outline-offset:2px;outline:2px solid #fff}@media (prefers-reduced-motion:reduce){.mp-song .note{animation:none}.mp-slide{transition:none}.mp-spin>i{animation-duration:2s}*{scroll-behavior:auto!important}}.au{align-items:center;gap:calc(var(--spacing) * 2.5);margin-top:10px;display:flex}.au-play{cursor:pointer;color:#fff;background:var(--brand);width:34px;height:34px;transition:var(--transition);border:none;border-radius:3.40282e38px;flex:none;justify-content:center;align-items:center;display:flex}.au-body{flex:1;min-width:0}.au-seek{cursor:pointer;background:var(--fg);border-radius:3.40282e38px;width:100%;height:5px;position:relative;overflow:hidden}@supports (color:color-mix(in lab, red, red)){.au-seek{background:color-mix(in srgb, var(--fg) 22%, transparent)}}.au-seek>i{background:var(--accent);border-radius:3.40282e38px;width:0;height:100%;display:block}.au-time{color:var(--muted);font-variant-numeric:tabular-nums;justify-content:space-between;margin-top:3px;font-size:10px;display:flex}.au-missing{align-items:center;gap:calc(var(--spacing) * 1.5);color:var(--muted);margin-top:8px;font-size:11px;display:flex}.own-title{color:var(--fg);font-size:16px;font-weight:700}.own-sub{color:var(--muted);margin:3px 0 12px;font-size:12.5px}.own-head{align-items:center;gap:calc(var(--spacing) * 2);color:var(--fg);font-size:16px;font-weight:700;display:flex}.own-tick{color:var(--green);display:inline-flex}.own-connect{text-align:center;flex-direction:column;align-items:center;padding:30px 20px 22px;display:flex}.own-connect .btn{background:var(--accent);color:var(--bg)}.mono{font-family:var(--font-mono)}.conn-row{align-items:flex-start;gap:calc(var(--spacing) * 3);border-bottom:1px solid var(--border);padding:12px 0;display:flex}.conn-row:last-child{border-bottom:none}.conn-body{flex:1;min-width:0}.conn-who{color:var(--fg);font-size:13px;font-weight:650}.conn-sub{color:var(--muted);margin-top:1px;font-size:11.5px}.conn-note{color:var(--muted);margin-top:5px;font-size:11px}.conn-status,.conn-connect{align-self:flex-start;margin-top:2px}.conn-av{background:var(--tag);border:1px solid var(--border);border-radius:3.40282e38px;flex-shrink:0;width:32px;height:32px;position:relative;overflow:visible}.conn-av-empty{background:0 0;border-style:dashed}.conn-av-mark{color:var(--muted);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.credits-card{border-radius:var(--radius-2xl);border:1px solid var(--border);background:var(--card);max-width:380px;margin:8px 0;padding:24px}.pack{cursor:pointer;border-radius:var(--radius-xl);text-align:center;border:1px solid var(--border);transition:var(--transition);padding:16px}.pack:hover{border-color:var(--muted)}.pack-featured{border-radius:var(--radius-xl);text-align:center;border:2px solid var(--accent);padding:16px}.tier-badge{color:#1e40af;background:#dbeafe;border-radius:3.40282e38px;align-items:center;padding:4px 12px;font-size:12px;font-weight:700;display:inline-flex}.free-tag{align-items:center;gap:var(--spacing);color:#065f46;transition:var(--transition);background:#d1fae5;border-radius:3.40282e38px;margin:2px;padding:4px 10px;font-size:11px;font-weight:600;display:inline-flex}.json-block{border-radius:var(--radius-md);background:var(--tag);border:1px solid var(--border);white-space:pre-wrap;word-break:break-all;max-height:320px;margin-top:10px;padding:14px;font-family:SF Mono,Monaco,monospace;font-size:12px;overflow-y:auto}.empty-state{text-align:center;color:var(--muted);padding:48px 24px}.empty-state .icon{margin-bottom:12px;font-size:48px}.empty-state .text{font-size:14px}.amz-head{align-items:center;gap:calc(var(--spacing) * 3);padding:2px 2px 12px;display:flex}.amz-mark{border-radius:var(--radius-sm);background:#232f3e;flex:none;justify-content:center;align-items:center;width:34px;height:34px;display:inline-flex}.mkt-generic{color:#fff;font-weight:700}.amz-head-text{flex:1;min-width:0}.amz-head-title{text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:700;overflow:hidden}.amz-head-sub{color:var(--muted);margin-top:1px;font-size:12px}.amz-running{flex:none}.amz-strip{gap:calc(var(--spacing) * 2);flex-wrap:wrap;margin-bottom:12px;display:flex}.amz-stat{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--card);flex:130px;padding:8px 12px}.amz-stat-k{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-size:10px;font-weight:700}.amz-stat-v{margin-top:2px;font-size:16px;font-weight:700}.amz-stat-d{color:var(--muted);margin-top:1px;font-size:11px}.amz-grid{gap:calc(var(--spacing) * 2);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));display:grid}.amz-tile{gap:calc(var(--spacing) * 3);text-align:left;border:1px solid var(--border);border-radius:var(--radius);background:var(--card);cursor:pointer;transition:var(--transition);width:100%;padding:10px;display:flex}.amz-tile:hover{background:var(--card-hover)}.amz-tile-open{border-color:#f90}.amz-tile-body{flex-direction:column;gap:2px;min-width:0;display:flex}.amz-brand{color:var(--muted);text-transform:uppercase;letter-spacing:.03em;font-size:11px;font-weight:700}.amz-title{-webkit-line-clamp:3;-webkit-box-orient:vertical;font-size:12px;font-weight:600;line-height:1.35;display:-webkit-box;overflow:hidden}.amz-title-lg{-webkit-line-clamp:4;font-size:14px}.amz-line{flex-wrap:wrap;align-items:center;gap:6px;margin-top:2px;display:flex}.amz-stars{color:#f90;letter-spacing:.5px;font-size:12px}.amz-rating{font-size:12px;font-weight:700}.amz-count{color:var(--muted);font-size:11px}.amz-price{font-size:14px;font-weight:700}.amz-list{color:var(--muted);font-size:11px;text-decoration:line-through}.amz-neg{color:var(--red);border:1px solid var(--border);border-radius:999px;padding:0 6px;font-size:11px;font-weight:700}.amz-sub{color:var(--muted);font-size:11px}.amz-thumb{border-radius:var(--radius-sm);border:1px solid var(--border);background:#fff;flex:none;justify-content:center;align-items:center;width:64px;height:64px;display:inline-flex;overflow:hidden}.amz-thumb img{object-fit:contain;width:100%;height:100%}.amz-thumb-empty{background:var(--tag);color:var(--muted);font-size:18px;font-weight:700}.amz-detail{border:1px solid var(--border);border-radius:var(--radius);background:var(--card);border-top:3px solid #f90;margin-top:12px;padding:14px}.amz-detail-head{gap:calc(var(--spacing) * 3);margin-bottom:12px;display:flex}.amz-detail-facts{flex:1;min-width:0}.amz-open{margin-top:8px}.amz-block{margin-top:14px}.amz-blocknote{color:var(--muted);margin:-4px 0 8px;font-size:11.5px}.amz-feats{color:var(--muted);margin:0;padding-left:18px;font-size:12.5px}.amz-feats li{margin:3px 0}.amz-summary{border-left:3px solid #f90;margin-top:12px;padding-left:10px}.amz-note{color:var(--muted);background:var(--tag);border-radius:var(--radius-sm);margin-top:10px;padding:8px 10px;font-size:11.5px}.amz-hist{margin-top:10px}.amz-hrow{align-items:center;gap:calc(var(--spacing) * 2);margin:3px 0;display:flex}.amz-hstar{color:var(--muted);flex:none;width:26px;font-size:11px}.amz-htrack{background:var(--tag);border-radius:999px;flex:1;height:8px;overflow:hidden}.amz-hfill{border-radius:999px;height:100%;display:block}.amz-hpct{color:var(--muted);text-align:right;flex:none;width:34px;font-size:11px}.amz-bar-good{background:var(--green)}.amz-bar-mid{background:var(--amber)}.amz-bar-bad{background:var(--red)}.amz-rev{border:1px solid var(--border);border-left:3px solid var(--border);border-radius:var(--radius-sm);background:var(--card);margin:6px 0;padding:9px 11px}.amz-rev-good{border-left-color:var(--green)}.amz-rev-mid{border-left-color:var(--amber)}.amz-rev-bad{border-left-color:var(--red)}.amz-rev-focus{background:var(--card-hover);border-color:#f90}.amz-rev-head{align-items:center;gap:calc(var(--spacing) * 2);flex-wrap:wrap;display:flex}.amz-rev-title{font-size:12.5px;font-weight:700}.amz-rev-body{margin-top:4px;font-size:12.5px;line-height:1.5}.amz-rev-meta{color:var(--muted);margin-top:5px;font-size:11px}.amz-verified{color:var(--green);font-weight:600}.amz-arow{align-items:center;gap:calc(var(--spacing) * 3);margin:7px 0;display:flex}.amz-aname{flex:40%;min-width:0;font-size:12.5px;font-weight:600}.amz-abrands{color:var(--muted);font-size:11px;font-weight:400;display:block}.amz-atrack{background:var(--tag);border-radius:999px;flex:40%;height:8px;overflow:hidden}.amz-afill{border-radius:999px;height:100%;display:block}.amz-amentions{color:var(--muted);text-align:right;flex:none;width:48px;font-size:11.5px}.amz-find{border:1px solid var(--border);border-left:3px solid var(--border);border-radius:var(--radius-sm);background:var(--card);margin:7px 0;padding:10px 12px}.amz-find-driver{border-left-color:var(--green)}.amz-find-barrier{border-left-color:var(--red)}.amz-find-gap{border-left-color:var(--blue)}.amz-find-head{align-items:center;gap:calc(var(--spacing) * 2);flex-wrap:wrap;display:flex}.amz-find-label{font-size:13px;font-weight:700}.amz-find-detail{color:var(--muted);margin-top:4px;font-size:12.5px;line-height:1.5}.amz-evrow{gap:var(--spacing);flex-wrap:wrap;margin-top:7px;display:flex}.amz-ev{border:1px solid var(--border);background:var(--tag);color:var(--muted);cursor:pointer;border-radius:999px;padding:2px 8px;font-family:SF Mono,Monaco,monospace;font-size:10.5px}.amz-ev:hover{color:var(--fg);border-color:#f90}.amz-ev-quote{cursor:default;font-family:inherit}.amz-strength{gap:calc(var(--spacing) * 2);margin:6px 0;font-size:12.5px;display:flex}.amz-strength-brand{flex:none;min-width:110px;font-weight:700}.amz-strength-detail{color:var(--muted)}.amz-angle{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--card);margin:7px 0;padding:10px 12px}.amz-angle-claim{font-size:13px;font-weight:700}.amz-angle-row{color:var(--muted);margin-top:3px;font-size:12px}.amz-angle-risk{color:var(--amber)}.replies-strip{border-top:1px solid var(--border);margin-top:10px;padding-top:9px}.replies-head{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-bottom:6px;font-size:10.5px;font-weight:700}.replies-none{color:var(--muted);font-size:11.5px;font-style:italic}.reply-row{border-left:2px solid var(--border);margin-bottom:7px;padding-left:8px}.reply-meta{align-items:center;gap:var(--spacing);flex-wrap:wrap;margin-bottom:2px;display:flex}.reply-who{font-size:11px;font-weight:700}.reply-stat{color:var(--muted);font-size:10.5px}.reply-text{color:var(--fg);font-size:12.5px;line-height:1.45}}@layer utilities{.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.bottom-3{bottom:calc(var(--spacing) * 3)}.left-3{left:calc(var(--spacing) * 3)}.isolate{isolation:isolate}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-0{margin:0}.mx-auto{margin-inline:auto}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mb-1{margin-bottom:var(--spacing)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.h-2{height:calc(var(--spacing) * 2)}.h-full{height:100%}.w-full{width:100%}.max-w-sm{max-width:var(--container-sm)}.shrink{flex-shrink:1}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.gap-1{gap:var(--spacing)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-line{border-color:var(--border)}.bg-black{background-color:var(--color-black)}.bg-soft{background-color:var(--tag)}.bg-surface{background-color:var(--card)}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-3{padding:calc(var(--spacing) * 3)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-1{padding-block:var(--spacing)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-10{padding-block:calc(var(--spacing) * 10)}.pl-5{padding-left:calc(var(--spacing) * 5)}.text-center{text-align:center}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-wrap{text-wrap:wrap}.text-ink{color:var(--fg)}.text-muted{color:var(--muted)}.text-white{color:var(--color-white)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.select-all{-webkit-user-select:all;user-select:all}}:root{color-scheme:light dark;--bg:#fafbfc;--fg:#111827;--muted:#5f6773;--border:#e5e7eb;--card:#fff;--card-hover:#f3f4f6;--tag:#f3f4f6;--accent:#14151a;--brand:#ff4d23;--brand-2:#ff8a3d;--brand-soft:#ff4d2321;--radius:10px;--radius-sm:6px;--transition:all .25s cubic-bezier(.4, 0, .2, 1);--shadow-md:0 4px 12px #00000014;--shadow-lg:0 8px 24px #0000001f;--green:#047857;--amber:#b45309;--red:#dc2626;--blue:#2563eb}@media (prefers-color-scheme:dark){:root{--bg:#0f172a;--fg:#f1f5f9;--muted:#a8b8cc;--border:#334155;--green:#34d399;--amber:#fbbf24;--red:#f87171;--blue:#60a5fa;--card:#1e293b;--card-hover:#273548;--tag:#1e293b;--accent:#e2e8f0;--brand:#ff5c33;--brand-2:#ff9351;--brand-soft:#ff5c3329;--shadow-md:0 4px 12px #0000004d;--shadow-lg:0 8px 24px #0006}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}
21
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--shadow-sm:0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;--shadow-md:0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}html{overflow:hidden auto}[hidden]{display:none!important}a{color:inherit;text-decoration:none}body{color:var(--fg);background:0 0;max-width:100vw;padding:10px;font-family:system-ui,-apple-system,Segoe UI,sans-serif;line-height:1.5;overflow-x:hidden}}@layer components{.load-bar{background:var(--tag);border-radius:3.40282e38px;height:3px;margin-bottom:14px;position:relative;overflow:hidden}.load-bar:after{content:"";background:var(--brand);border-radius:3.40282e38px;width:42%;animation:1.35s cubic-bezier(.45,0,.55,1) infinite sweep;position:absolute;top:0;bottom:0}@keyframes sweep{0%{left:-45%}50%{left:58%}to{left:-45%}}.load-head{align-items:center;gap:calc(var(--spacing) * 2);color:var(--muted);margin-bottom:11px;font-size:12.5px;font-weight:600;display:flex}.load-price{color:var(--brand);white-space:nowrap;margin-left:auto;font-weight:700}.mk{color:var(--fg);flex-shrink:0;display:block}.mk .iris{animation:3.6s cubic-bezier(.5,0,.5,1) infinite mkScan}.mk .lid{transform-box:fill-box;transform-origin:50%;animation:5.4s ease-in-out infinite mkBlink}@keyframes mkScan{0%{transform:translate(0)}18%{transform:translate(-15px,7px)}34%{transform:translate(11px,-5px)}52%{transform:translate(-8px,12px)}70%{transform:translate(14px,3px)}86%{transform:translate(-4px,-6px)}to{transform:translate(0)}}@keyframes mkBlink{0%,88%,to{transform:scaleY(1)}93%{transform:scaleY(.08)}}.load-known{gap:calc(var(--spacing) * 2);flex-wrap:wrap;margin-bottom:11px;display:flex}.load-fact{align-items:center;gap:calc(var(--spacing) * 2);border:1px solid var(--border);background:var(--card);color:var(--fg);border-radius:3.40282e38px;padding:4px 11px;font-size:12px;font-weight:600;display:inline-flex}.load-fact-mark{color:var(--brand);display:inline-flex}.load-fact-mark svg{fill:currentColor;width:13px;height:13px}.led .card-body{padding:4px 14px 12px}.led-row{align-items:flex-start;gap:calc(var(--spacing) * 3);border-bottom:1px solid var(--border);padding:10px 0;display:flex}.led-row:last-of-type{border-bottom:none}.led-body{flex:1;min-width:0}.led-label{color:var(--fg);font-size:12.5px;font-weight:600}.led-detail{color:var(--muted);margin-top:1px;font-size:11px}.led-cost{background:var(--tag);color:var(--fg);font-variant-numeric:tabular-nums;border-radius:3.40282e38px;flex:none;align-items:center;padding:2px 9px;font-size:11.5px;font-weight:700;display:inline-flex}.led-mark{width:16px;color:var(--brand);flex:none;justify-content:center;align-items:center;margin-top:1px;display:inline-flex}.led-mark svg{fill:currentColor;width:13px;height:13px}.led-dot{border:1px solid var(--border);border-radius:50%;flex:none;width:13px;height:13px;margin-top:2px}.led-foot{color:var(--muted);margin-top:10px;font-size:11.5px;line-height:1.5}.load-centre{text-align:center;flex-direction:column;align-items:center;padding:30px 0 22px;display:flex}.load-centre .load-what{color:var(--fg);margin-top:20px;font-size:14px;font-weight:700}.load-centre .load-sub{color:var(--muted);margin-top:5px;font-size:12.5px}.load-centre .load-bar{width:210px;margin:16px 0 0}.sk{border-radius:var(--radius-md);background:var(--tag);position:relative;overflow:hidden}.sk-media{aspect-ratio:9/16;width:100%;max-height:var(--stage-max,420px);border-radius:0}.sk-media.h{aspect-ratio:16/9}.sk-line{height:11px;margin-top:8px}.sk-line.w40{width:40%}.sk-line.w60{width:60%}.sk-line.w80{width:80%}.sk-pill{border-radius:999px;width:76px;height:22px;margin:0 5px 5px 0;display:inline-block}.sk-card{border-radius:var(--radius-xl);border:1px solid var(--border);background:var(--card);flex-shrink:0;width:min(340px,86vw);min-width:min(340px,86vw);overflow:hidden}.sk-body{padding:13px 14px}.sk-row{align-items:center;gap:calc(var(--spacing) * 3);border-bottom:1px solid var(--border);padding:11px 0;display:flex}.sk-avatar{border-radius:10px;flex-shrink:0;width:44px;height:44px}.sk-strip{gap:calc(var(--spacing) * 3);padding:2px 0 8px;display:flex;overflow:hidden}@media (prefers-reduced-motion:reduce){.load-bar:after,.mk .iris,.mk .lid{animation:none}.load-bar:after{opacity:.5;width:100%;left:0}}.fade-in{animation:.4s ease-out fadeIn}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.stagger>*{opacity:0;animation:.4s ease-out forwards fadeIn}.stagger>:first-child{animation-delay:50ms}.stagger>:nth-child(2){animation-delay:.1s}.stagger>:nth-child(3){animation-delay:.15s}.stagger>:nth-child(4){animation-delay:.2s}.stagger>:nth-child(5){animation-delay:.25s}.stagger>:nth-child(6){animation-delay:.3s}.stagger>:nth-child(7){animation-delay:.35s}.stagger>:nth-child(8){animation-delay:.4s}.gallery-wrap{max-width:100%;position:relative;overflow:hidden}.gallery{gap:calc(var(--spacing) * 3);scroll-snap-type:x mandatory;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scrollbar-width:none;width:100%;max-width:100%;padding:2px 0 8px;display:flex;overflow-x:auto}.gallery::-webkit-scrollbar{display:none}.gallery-dots{justify-content:center;gap:calc(var(--spacing) * 1.5);flex-wrap:wrap;margin-top:10px;display:flex}.gallery-dots .dot{background:var(--border);cursor:pointer;width:8px;height:8px;transition:var(--transition);border:none;border-radius:50%;padding:0}.gallery-dots .dot.active{background:var(--accent);border-radius:999px;width:20px}.gallery-nav{z-index:2;cursor:pointer;background:var(--card);border:1px solid var(--border);width:32px;height:32px;color:var(--fg);transition:var(--transition);opacity:0;border-radius:50%;justify-content:center;align-items:center;font-size:14px;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.gallery-wrap:hover .gallery-nav{opacity:1}.gallery-nav:hover{background:var(--accent);color:var(--card)}.gallery-nav.prev{left:2px}.gallery-nav.next{right:2px}.card{border-radius:var(--radius-xl);border:1px solid var(--border);background:var(--card);width:min(380px,100%);min-width:min(380px,100%);max-width:100%;transition:var(--transition);cursor:default;scroll-snap-align:center;flex-shrink:0;display:block}.card.card-media{--ar-w:9;--ar-h:16;width:min(100%, calc(var(--stage-max,520px) * var(--ar-w) / var(--ar-h)));background:0 0;border-color:#0000;min-width:0;margin:0 auto}.card.card-media.h{--ar-w:16;--ar-h:9}.card.card-media.sq{--ar-w:1;--ar-h:1}.card-media .card-foot{background:0 0;justify-content:flex-end;padding:8px 4px 0;display:flex}.card-media .btn-sm{margin-top:0}.card:hover{border-color:var(--muted)}.card-media:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.card-wide{width:100%}.card img:not(.mp-slide){object-fit:cover;width:100%;height:260px;display:block}.card-wide img:not(.mp-slide){max-height:340px}.card video{object-fit:contain;background:#000;border:none;outline:none;width:100%;min-height:220px;max-height:520px;display:block}.card-wide video{max-height:520px}.card-body{padding:14px 16px}.badge{align-items:center;gap:var(--spacing);text-transform:capitalize;transition:var(--transition);border-radius:3.40282e38px;padding:3px 10px;font-size:11px;font-weight:700;display:inline-flex}.handle{color:var(--muted);margin-left:auto;font-size:12px}.tag{align-items:center;gap:var(--spacing);transition:var(--transition);cursor:default;border-radius:3.40282e38px;margin:2px;padding:4px 10px;font-size:12px;display:inline-flex}.tag.clickable{cursor:pointer;-webkit-user-select:none;user-select:none}.tag.clickable:hover{background:var(--tag)}.tag.copied{background:var(--green)!important;color:#fff!important}.title{margin:6px 0;font-size:14px;font-weight:600;line-height:1.35}.card-wide .title{font-size:16px;font-weight:700}.caption{color:var(--muted);margin:6px 0 0;font-size:13px;line-height:1.5}.stats{align-items:center;gap:calc(var(--spacing) * 1.5);flex-wrap:wrap;margin-top:8px;display:flex}.stat-pill{align-items:center;gap:var(--spacing);color:var(--fg);background:var(--tag);transition:var(--transition);border-radius:3.40282e38px;padding:5px 12px;font-size:12px;display:inline-flex}.stat-pill:hover{background:var(--border)}.btn{cursor:pointer;align-items:center;gap:calc(var(--spacing) * 1.5);border-radius:var(--radius-lg);color:#fff;background:var(--brand);transition:var(--transition);border:none;margin-top:12px;padding:8px 18px;font-size:13px;font-weight:600;text-decoration-line:none;display:inline-flex}.btn:hover{background:var(--brand-2)}.btn:active{opacity:.9}.btn-sm{margin-top:8px;padding:5px 12px;font-size:11px}.section{border-bottom:1px solid var(--border);margin-bottom:6px;overflow:hidden}.section-header{cursor:pointer;-webkit-user-select:none;user-select:none;transition:var(--transition);justify-content:space-between;align-items:center;padding:10px 2px;display:flex}.section-header:hover .section-label{color:var(--fg)}.section-label{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:11px;font-weight:700}.section-chevron{color:var(--muted);font-size:12px;transition:transform .2s}.section-header.open .section-chevron{transform:rotate(180deg)}.section-content{max-height:0;padding:0 2px;transition:max-height .28s,padding .28s;overflow:hidden}.section-content.open{max-height:2400px;padding:4px 2px 14px}.section-text{color:var(--fg);font-size:13px;line-height:1.6}.ai-actions{gap:calc(var(--spacing) * 2);flex-wrap:wrap;margin-top:14px;display:flex}.ai-btn{cursor:pointer;align-items:center;gap:calc(var(--spacing) * 2);border:1px solid var(--border);background:var(--card);color:var(--fg);font:inherit;transition:var(--transition);border-radius:3.40282e38px;padding:8px 13px;font-size:13px;font-weight:600;display:inline-flex}.ai-btn:hover:not(:disabled){border-color:var(--brand);background:var(--brand-soft)}.ai-btn:disabled{opacity:.55;cursor:not-allowed}.ai-btn .spark{color:var(--brand);flex-shrink:0;display:inline-flex}.ai-btn .price{white-space:nowrap;color:var(--brand);background:var(--brand-soft);border-radius:3.40282e38px;align-items:center;padding:2px 7px;font-size:11px;font-weight:700;display:inline-flex}.ai-btn.busy .spark{animation:1.1s linear infinite spin}.ai-note{color:var(--muted);margin-top:8px;font-size:11.5px}.an-title{align-items:center;gap:calc(var(--spacing) * 2);margin-bottom:14px;font-size:16px;font-weight:700;display:flex}.verdict{gap:calc(var(--spacing) * 2.5);grid-template-columns:repeat(1,minmax(0,1fr));margin-bottom:12px;display:grid}@media (min-width:420px){.verdict{grid-template-columns:1fr 1fr}}.meter{border-radius:var(--radius-md);background:var(--tag);padding:9px 11px}.meter-top{justify-content:space-between;align-items:baseline;gap:calc(var(--spacing) * 2);letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-size:11px;font-weight:700;display:flex}.meter-top b{letter-spacing:0;font-size:14px}.meter-track{background:var(--border);border-radius:3.40282e38px;height:5px;margin-top:6px;overflow:hidden}.meter-track>i{border-radius:3.40282e38px;height:100%;display:block}.chiprow{gap:calc(var(--spacing) * 1.5);flex-wrap:wrap;display:flex}.mhead{z-index:3;background:var(--bg);border-bottom:1px solid var(--border);padding:2px 0 10px;position:sticky;top:0}.mhead-top{justify-content:space-between;align-items:flex-end;gap:calc(var(--spacing) * 2.5);flex-wrap:wrap;display:flex}.mention-term{color:var(--muted);margin-bottom:2px;font-size:13px}.mention-term b{color:var(--fg)}.mention-total{color:var(--fg);letter-spacing:-.01em;font-size:20px;font-weight:650}.mention-down{color:var(--muted);margin-top:8px;font-size:12px}.mention-window{color:var(--muted);border:1px solid var(--border);border-radius:3.40282e38px;margin-left:6px;padding:1px 8px;font-size:11px;display:inline-block}.mention-summary{color:var(--muted);max-width:60ch;margin-top:6px;font-size:13px;line-height:1.45}.msort{background:var(--tag);border-radius:3.40282e38px;flex:none;align-items:center;gap:2px;padding:3px;display:inline-flex}.msort-btn{color:var(--muted);cursor:pointer;transition:var(--transition);white-space:nowrap;background:0 0;border:0;border-radius:999px;padding:5px 14px;font-size:11.5px;font-weight:600}.msort-btn:hover{color:var(--fg)}.msort-btn.on{color:var(--card);background:var(--accent)}.mchips{gap:calc(var(--spacing) * 1.5);flex-wrap:wrap;margin-top:10px;display:flex}.mchip{cursor:pointer;align-items:center;gap:calc(var(--spacing) * 2);color:var(--muted);border:1px solid var(--border);transition:var(--transition);white-space:nowrap;background:0 0;border-radius:3.40282e38px;padding:5px 12px;font-size:12px;font-weight:600;display:inline-flex}.mchip:hover{color:var(--fg);border-color:var(--muted)}.mchip b{color:var(--fg);background:var(--tag);font-variant-numeric:tabular-nums;border-radius:3.40282e38px;padding:1px 7px;font-weight:700}.mchip.on{color:var(--card);background:var(--accent);border-color:#0000}.mchip.on b{color:inherit;background:0 0;padding:1px 0}.mchip.on .mchip-mark{color:inherit}.mchip.quiet{opacity:.5;cursor:default}.mchip.quiet:hover{color:var(--muted);border-color:var(--border)}.mchip-mark{color:var(--brand);display:inline-flex}.mchip-mark svg{fill:currentColor;width:13px;height:13px}.mgroups{gap:calc(var(--spacing) * 2.5);flex-direction:column;margin-top:12px;display:flex}.mgroup{border-radius:var(--radius-xl);border:1px solid var(--border);background:var(--card);padding:12px 14px 6px}.mgroup-head{align-items:center;gap:calc(var(--spacing) * 2);flex-wrap:wrap;margin-bottom:6px;display:flex}.mgroup-plat{align-items:center;gap:calc(var(--spacing) * 1.5);color:var(--brand);font-size:11px;font-weight:600;display:inline-flex}.mgroup-plat svg{fill:currentColor;width:12px;height:12px}.mgroup-about{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);border:1px solid var(--border);border-radius:3.40282e38px;padding:1px 7px;font-size:10.5px}.mgroup-reach{color:var(--muted);margin-left:auto;font-size:11px}.mgroup-title{color:var(--fg);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:13px;font-weight:600;line-height:1.35;display:-webkit-box;overflow:hidden}.mgroup-rest{color:var(--muted);cursor:pointer;transition:var(--transition);background:0 0;border:0;align-self:flex-start;margin-top:2px;padding:2px 0;font-size:11.5px;font-weight:600}.mgroup-rest:hover{color:var(--fg)}.mgroup-actions{align-items:center;gap:calc(var(--spacing) * 3);margin-top:5px;display:flex}.mgroup-link{color:var(--muted);font-size:11.5px;text-decoration:none}.mgroup-link:hover{color:var(--fg);text-decoration:underline}.mgroup-all{color:var(--muted);cursor:pointer;transition:var(--transition);background:0 0;border:0;padding:0;font-size:11.5px;font-weight:600}.mgroup-all:hover{color:var(--fg)}.mgroup-none{color:var(--muted);margin-top:8px;font-size:12px}.mgroup-stage{--stage-max:300px;border-radius:var(--radius-xl) var(--radius-xl) 0 0;width:calc(100% + 28px);margin:-12px -14px 10px;overflow:hidden}.mgroup-stage .mp{border:0;border-radius:0;width:100%}.mgroup-media{background:var(--muted);border-radius:var(--radius-xl) var(--radius-xl) 0 0;cursor:default;border:0;width:calc(100% + 28px);height:132px;margin:-12px -14px 10px;padding:0;display:block;position:relative;overflow:hidden}.mgroup-media.is-playable{cursor:pointer}.mgroup-media-img{object-fit:cover;width:100%;height:100%;display:block}.mgroup-media-blank{opacity:.35;justify-content:center;align-items:center;width:100%;height:100%;display:flex}.mgroup-media-play{color:#fff;background:#00000094;border-radius:999px;justify-content:center;align-items:center;width:40px;height:40px;transition:transform .16s cubic-bezier(.16,1,.3,1);display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.mgroup-media.is-playable:hover .mgroup-media-play{transform:translate(-50%,-50%)scale(1.08)}.mgroup-stage{border-radius:var(--radius-xl) var(--radius-xl) 0 0;--stage-max:300px;width:calc(100% + 28px);margin:-12px -14px 10px;overflow:hidden}.mentions{flex-direction:column;margin-top:8px;display:flex}.mention{cursor:pointer;align-items:flex-start;gap:calc(var(--spacing) * 3);transition:var(--transition);padding:11px 2px;display:flex}.mention+.mention{border-top:1px solid var(--border)}.mention:hover{background:var(--card-hover)}.mention.picked{background:var(--tag)}.mention-pick{width:15px;height:15px;accent-color:var(--accent);cursor:pointer;flex:none;margin-top:11px}.mention-av{background:var(--tag);border:1px solid var(--border);border-radius:3.40282e38px;flex:none;width:36px;height:36px;position:relative;overflow:visible}.mention-av-init{color:var(--muted);border-radius:3.40282e38px;justify-content:center;align-items:center;font-size:14px;font-weight:700;display:flex;position:absolute;inset:0}.mention-av-img{object-fit:cover;border-radius:3.40282e38px;width:100%;height:100%;position:absolute;inset:0}.mention-av-badge{background:var(--card);width:16px;height:16px;color:var(--brand);border:1px solid var(--border);border-radius:3.40282e38px;justify-content:center;align-items:center;display:flex;position:absolute;bottom:-3px;right:-3px}.mention-av-badge svg{fill:currentColor;width:9.5px;height:9.5px}.mention-body{gap:calc(var(--spacing) * .5);flex-direction:column;flex:1;min-width:0;display:flex}.mention-head{align-items:baseline;gap:calc(var(--spacing) * 2);flex-wrap:wrap;display:flex}.mention-who{color:var(--fg);font-size:13px;font-weight:650}.mention-when{color:var(--muted);font-size:11.5px}.mention-when:before{content:"·";color:var(--border);margin-right:7px}.mention-hits{color:var(--fg);background:var(--tag);border:1px solid var(--border);border-radius:3.40282e38px;margin-left:auto;padding:1px 7px;font-size:10.5px;font-weight:700}.mention-text{color:var(--fg);word-break:break-word;margin-top:4px;font-size:13.5px;line-height:1.5}.mention-text mark{color:inherit;background:#f43f5e26;border-radius:4px;padding:1px 3px;font-weight:600}.mention-note{border-left:2px solid var(--brand,#f43f5e);background:var(--tag);color:var(--fg);white-space:pre-wrap;word-break:break-word;border-radius:0 6px 6px 0;margin-top:6px;padding:6px 9px;font-size:12.5px;line-height:1.5;display:block}.mention-meta{align-items:center;gap:calc(var(--spacing) * 3.5);margin-top:6px;display:flex}.mention-stat{align-items:center;gap:var(--spacing);color:var(--muted);font-size:11px;display:inline-flex}.mention-stat svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:12px;height:12px}.chip{text-transform:capitalize;letter-spacing:.01em;border:1px solid var(--border);color:var(--muted);border-radius:3.40282e38px;padding:1px 7px;font-size:10px;font-weight:600}.chip-positive{color:#15803d;background:#15803d14;border-color:#15803d55}.chip-negative{color:#b91c1c;background:#b91c1c14;border-color:#b91c1c55}.chip-mixed{color:#a16207;background:#a1620714;border-color:#a1620755}.chip-neutral{color:var(--muted)}.chip-cat{background:var(--tag)}.mention-more{cursor:pointer;border-radius:var(--radius-xl);width:100%;color:var(--fg);background:var(--tag);border:1px solid var(--border);transition:var(--transition);margin-top:12px;padding:10px;font-size:13px;font-weight:600;display:block}.mention-more:hover:not(:disabled){border-color:var(--muted)}.mention-more:disabled{opacity:.6;cursor:default}.sm-thumb-badged{flex:none;position:relative;overflow:visible}.sm-thumb-img{object-fit:cover;border-radius:var(--radius-lg);width:100%;height:100%;display:block}.sm-thumb{border-radius:var(--radius-lg);object-fit:cover;background:var(--tag);border:1px solid var(--border);flex:none;width:56px;height:56px}.tag.copyable{cursor:pointer;border:1px solid var(--border);font:inherit;align-items:center;gap:5px;font-size:12px;display:inline-flex}.tag.copyable:hover{border-color:var(--accent)}.tag.warn{background:var(--red)}@supports (color:color-mix(in lab, red, red)){.tag.warn{background:color-mix(in srgb, var(--red) 12%, transparent)}}.tag.warn{color:var(--red);border:1px solid var(--red)}@supports (color:color-mix(in lab, red, red)){.tag.warn{border:1px solid color-mix(in srgb, var(--red) 35%, transparent)}}.lede-box{background:var(--tag);border-radius:var(--radius-sm);margin-bottom:12px;padding:11px 13px;font-size:13.5px;line-height:1.6}.steps-list{gap:calc(var(--spacing) * 2);flex-direction:column;display:flex}.step-row{align-items:flex-start;gap:calc(var(--spacing) * 2.5);grid-template-columns:78px 1fr;display:grid}.step-k{letter-spacing:.05em;text-transform:uppercase;color:var(--muted);padding-top:2px;font-size:10.5px;font-weight:700}.step-v{font-size:13px;line-height:1.5}.an-list{margin:0;padding-left:18px;font-size:13px;line-height:1.55}.an-list li{margin:4px 0}.clamp6{-webkit-line-clamp:6;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.hook-bar-track{align-items:center;gap:calc(var(--spacing) * 2.5);margin-top:6px;display:flex}.hook-bar{background:var(--tag);border-radius:3.40282e38px;flex:1;height:10px;overflow:hidden}.hook-bar-fill{border-radius:3.40282e38px;height:100%;transition:width .8s cubic-bezier(.4,0,.2,1)}.hook-score{text-align:right;min-width:40px;font-size:15px;font-weight:800}.quote-box{border-radius:var(--radius-md);background:var(--tag);border-left:3px solid var(--blue);margin:6px 0;padding:10px 14px;font-size:13px;font-weight:600;line-height:1.45;position:relative}.quote-at{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--muted);margin-bottom:4px;font-size:11px;font-weight:700;display:block}.quote-box .copy-btn{cursor:pointer;border-radius:var(--radius-md);background:var(--card);border:1px solid var(--border);color:var(--muted);transition:var(--transition);opacity:0;padding:3px 8px;font-size:10px;position:absolute;top:8px;right:8px}.quote-box:hover .copy-btn{opacity:1}.copy-btn:hover{background:var(--accent);color:var(--card)}.theme-chip{align-items:center;gap:calc(var(--spacing) * 1.5);background:var(--tag);border:1px solid var(--border);color:var(--fg);border-radius:3.40282e38px;margin:0 4px 5px 0;padding:4px 10px;font-size:12px;display:inline-flex}.theme-chip b{color:var(--brand,var(--blue));font-variant-numeric:tabular-nums}.sec-label{letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin-bottom:7px;font-size:11px;font-weight:700}.cbadge{white-space:nowrap;border-radius:4px;padding:1px 5px;font-size:10px;font-weight:700}.cbadge.pin{color:#b45309;background:#fef3c7}.cbadge.liked{color:#be185d;background:#fce7f3}.cmeta{align-items:center;gap:calc(var(--spacing) * 2);color:var(--muted);flex-wrap:wrap;margin-top:5px;font-size:11px;display:flex}.ctext{color:var(--fg);font-size:13px;line-height:1.45}.ctext.clamp{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.cmore{color:var(--blue);cursor:pointer;background:0 0;border:none;padding:3px 0 0;font-family:inherit;font-size:11.5px;font-weight:600}.comment-row{justify-content:space-between;align-items:flex-start;gap:calc(var(--spacing) * 2.5);border-radius:var(--radius-md);border-bottom:1px solid var(--border);transition:var(--transition);padding:10px 0;display:flex}.comment-row:last-child{border-bottom:none}.comment-row:hover{background:var(--tag)}.creator-card{border-radius:var(--radius-xl);border:1px solid var(--border);background:var(--card);width:min(240px,80vw);min-width:min(240px,80vw);transition:var(--transition);scroll-snap-align:start;flex-shrink:0;padding:16px;display:block}.creator-card:hover{border-color:var(--muted)}.avatar{object-fit:cover;border:2px solid var(--border);border-radius:3.40282e38px;width:52px;height:52px}.avatar-placeholder{border-radius:3.40282e38px;justify-content:center;align-items:center;width:52px;height:52px;font-size:22px;display:flex}.verified{color:#fff;border-radius:3.40282e38px;justify-content:center;align-items:center;width:18px;height:18px;margin-left:4px;font-size:10px;display:inline-flex}.sound-card{border-radius:var(--radius-xl);border:1px solid var(--border);background:var(--card);width:min(300px,88vw);min-width:min(300px,88vw);transition:var(--transition);scroll-snap-align:start;flex-shrink:0;padding:14px;display:block}.sound-card:hover{border-color:var(--muted)}.sound-cover{border-radius:var(--radius-md);object-fit:cover;width:68px;height:68px}.mp{--ar-w:9;--ar-h:16;width:min(100%, calc(var(--stage-max,520px) * var(--ar-w) / var(--ar-h)));background:#000;border:2px solid #0000;border-radius:18px;margin-inline:auto;position:relative;overflow:hidden}.mp.playing{border-color:var(--brand)}.card-media>.mp{width:100%}.mp.h{--ar-w:16;--ar-h:9}.mp.sq{--ar-w:1;--ar-h:1}.mp-stage{width:100%;aspect-ratio:var(--ar-w) / var(--ar-h);max-height:var(--stage-max,520px);background:#000;position:relative;overflow:hidden}.mp .mp-stage>video{object-fit:contain;background:#000;width:100%;height:100%;max-height:none;display:block}.mp .mp-slide{object-fit:contain;opacity:0;background:#000;width:100%;height:100%;max-height:none;transition:opacity .45s;position:absolute;inset:0;transform:none}.mp-slide.active{opacity:1}.mp-ov{pointer-events:none;z-index:2;position:absolute;inset:0}.mp-ov:after{content:"";pointer-events:none;background:linear-gradient(#0000,#00000047 38%,#000000b8);height:46%;position:absolute;bottom:0;left:0;right:0}.mp-ov:before{content:"";pointer-events:none;background:linear-gradient(#00000073,#0000);height:16%;position:absolute;top:0;left:0;right:0}.mp-badge,.mp-chip,.mp-rail,.mp-meta,.mp-tap,.mp-nav{z-index:1}.mp-ov>*{pointer-events:auto}.mp-badge{text-transform:capitalize;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#fff;background:#0000008c;border-radius:3.40282e38px;align-items:center;gap:5px;padding:4px 9px;font-size:11px;font-weight:700;display:inline-flex;position:absolute;top:10px;left:10px}.mp-pick{z-index:3;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#0000;width:26px;height:26px;transition:var(--transition);background:#0000006b;border:2px solid #ffffffd9;border-radius:3.40282e38px;justify-content:center;align-items:center;padding:0;display:flex;position:absolute;top:9px;right:9px}.mp-pick:hover{background:#000000a8;transform:scale(1.08)}.mp-open{z-index:3;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#fff;width:26px;height:26px;transition:var(--transition);background:#0000006b;border:2px solid #ffffffd9;border-radius:3.40282e38px;justify-content:center;align-items:center;padding:0;text-decoration-line:none;display:flex;position:absolute;top:9px;right:9px}.mp-open:hover{background:#000000a8;transform:scale(1.08)}.mp-open.with-pick{right:43px}.mp-pick[aria-pressed=true]{background:var(--brand,#ff4d23);color:#fff;border-color:#fff}.mp.picked{outline:2px solid var(--brand,#ff4d23);outline-offset:-2px}.mp-pick~.mp-chip,.mp[data-mp=slides] .mp-chip{top:42px}.pickbar{z-index:20;align-items:center;gap:calc(var(--spacing) * 2.5);background:var(--card);border:1px solid var(--border);box-shadow:var(--shadow-lg);border-radius:3.40282e38px;margin:12px 0 0;padding:10px 12px;animation:.2s ease-out fadeIn;display:flex;position:sticky;bottom:0}.pickbar .n{white-space:nowrap;font-size:13px;font-weight:700}.pickbar .sp{flex:1}.pickbar button{cursor:pointer;white-space:nowrap;border:1px solid var(--border);background:var(--card);color:var(--fg);font:inherit;transition:var(--transition);border-radius:3.40282e38px;padding:6px 13px;font-size:12.5px;font-weight:600}.pickbar button.primary{background:var(--brand,#ff4d23);color:#fff;border-color:#0000}.pickbar button:hover{filter:brightness(1.08)}.pickbar button:disabled{opacity:.5;cursor:not-allowed}.pickbar .hint{color:var(--muted);font-size:11.5px}.mp-chip{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#fff;font-variant-numeric:tabular-nums;background:#0000008c;border-radius:3.40282e38px;padding:3px 9px;font-size:11px;font-weight:700;position:absolute;top:10px;right:10px}.mp-rail{align-items:center;gap:calc(var(--spacing) * 3.5);flex-direction:column;display:flex;position:absolute;bottom:76px;right:8px}.mp-act{cursor:default;background:0 0;border:none;flex-direction:column;align-items:center;gap:3px;padding:0;display:flex}.mp-act .ic{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#fff;width:38px;height:38px;transition:var(--transition);background:#0006;border-radius:3.40282e38px;justify-content:center;align-items:center;display:flex}.mp-act:hover .ic{background:#0000009e;transform:scale(1.06)}.mp-act .n{color:#fff;text-shadow:0 1px 3px #000c;font-variant-numeric:tabular-nums;font-size:11px;font-weight:700}.mp-meta{color:#fff;text-shadow:0 1px 3px #000000d9;position:absolute;bottom:60px;left:12px;right:64px}.mp-handle{margin-bottom:3px;font-size:13px;font-weight:800}.mp-cap{-webkit-line-clamp:2;opacity:.95;-webkit-box-orient:vertical;font-size:12px;line-height:1.4;display:-webkit-box;overflow:hidden}.mp-song{white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:5px;margin-top:6px;font-size:11px;font-weight:600;display:flex;overflow:hidden}.mp-song .note{flex:none;display:inline-flex}.mp.playing .mp-song .note{animation:3s linear infinite spin}.mp-song-t{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}@keyframes spin{to{transform:rotate(360deg)}}.mp-tap{cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.mp-tap span{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);color:#fff;width:64px;height:64px;transition:var(--transition);opacity:1;background:#00000073;border-radius:3.40282e38px;justify-content:center;align-items:center;font-size:26px;display:flex}.mp.playing .mp-tap span{opacity:0}.mp.playing:hover .mp-tap span{opacity:.65}.mp-nav{cursor:pointer;color:#fff;opacity:0;width:34px;height:34px;transition:var(--transition);background:#0000008c;border:none;border-radius:3.40282e38px;justify-content:center;align-items:center;font-size:18px;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.mp:hover .mp-nav,.mp:focus-within .mp-nav{opacity:1}.mp-nav.prev{left:8px}.mp-nav.next{right:8px}.mp-nav:hover{background:#000c}.mp-ctl{z-index:3;background:linear-gradient(#0000,#000000d9);align-items:center;gap:9px;padding:9px 11px;display:flex;position:absolute;bottom:0;left:0;right:0}.mp-btn{cursor:pointer;color:#111;width:30px;height:30px;transition:var(--transition);background:#fffffff2;border:none;border-radius:3.40282e38px;flex:none;justify-content:center;align-items:center;font-size:12px;display:flex}.mp-btn:hover{transform:scale(1.09)}.mp-time{color:#fff;font-variant-numeric:tabular-nums;text-shadow:0 1px 2px #000c;flex-shrink:0;font-size:10px;font-weight:700}.mp-seek{cursor:pointer;flex:1;align-items:center;min-width:0;height:14px;display:flex;position:relative}.mp-segs{gap:calc(var(--spacing) * .5);border-radius:3.40282e38px;width:100%;height:3px;transition:height .15s;display:flex;overflow:hidden}.mp-seek:hover .mp-segs{height:5px}.mp-seg{background:#ffffff52;border-radius:3.40282e38px;flex:1;height:100%;overflow:hidden}.mp-seg>i{background:#fff;border-radius:3.40282e38px;width:0;height:100%;display:block}.mp-seg.done>i{width:100%}.mp-icon{color:#fff;cursor:pointer;opacity:.9;background:0 0;border:none;flex-shrink:0;padding:0;font-size:14px;line-height:1}.mp-icon:hover{opacity:1}.mp-spin{pointer-events:none;z-index:2;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.mp-spin>i{border:3px solid #ffffff40;border-top-color:#fff;border-radius:3.40282e38px;width:34px;height:34px;animation:.8s linear infinite spin}.mp-err{pointer-events:none;z-index:4;justify-content:center;align-items:center;gap:calc(var(--spacing) * 2);text-align:center;color:#fff;background:#000000d1;flex-direction:column;padding:16px;font-size:12px;font-weight:600;display:flex;position:absolute;inset:0}.mp:focus-visible{outline-offset:-2px;outline:2px solid #fff}.mp-btn:focus-visible,.mp-icon:focus-visible,.mp-nav:focus-visible,.mp-tap:focus-visible,.au-play:focus-visible,.gallery-nav:focus-visible,.dot:focus-visible{outline-offset:2px;outline:2px solid #fff}@media (prefers-reduced-motion:reduce){.mp-song .note{animation:none}.mp-slide{transition:none}.mp-spin>i{animation-duration:2s}*{scroll-behavior:auto!important}}.au{align-items:center;gap:calc(var(--spacing) * 2.5);margin-top:10px;display:flex}.au-play{cursor:pointer;color:#fff;background:var(--brand);width:34px;height:34px;transition:var(--transition);border:none;border-radius:3.40282e38px;flex:none;justify-content:center;align-items:center;display:flex}.au-body{flex:1;min-width:0}.au-seek{cursor:pointer;background:var(--fg);border-radius:3.40282e38px;width:100%;height:5px;position:relative;overflow:hidden}@supports (color:color-mix(in lab, red, red)){.au-seek{background:color-mix(in srgb, var(--fg) 22%, transparent)}}.au-seek>i{background:var(--accent);border-radius:3.40282e38px;width:0;height:100%;display:block}.au-time{color:var(--muted);font-variant-numeric:tabular-nums;justify-content:space-between;margin-top:3px;font-size:10px;display:flex}.au-missing{align-items:center;gap:calc(var(--spacing) * 1.5);color:var(--muted);margin-top:8px;font-size:11px;display:flex}.own-title{color:var(--fg);font-size:16px;font-weight:700}.own-sub{color:var(--muted);margin:3px 0 12px;font-size:12.5px}.own-head{align-items:center;gap:calc(var(--spacing) * 2);color:var(--fg);font-size:16px;font-weight:700;display:flex}.own-tick{color:var(--green);display:inline-flex}.own-connect{text-align:center;flex-direction:column;align-items:center;padding:30px 20px 22px;display:flex}.own-connect .btn{background:var(--accent);color:var(--bg)}.mono{font-family:var(--font-mono)}.conn-row{align-items:flex-start;gap:calc(var(--spacing) * 3);border-bottom:1px solid var(--border);padding:12px 0;display:flex}.conn-row:last-child{border-bottom:none}.conn-body{flex:1;min-width:0}.conn-who{color:var(--fg);font-size:13px;font-weight:650}.conn-sub{color:var(--muted);margin-top:1px;font-size:11.5px}.conn-note{color:var(--muted);margin-top:5px;font-size:11px}.conn-status,.conn-connect{align-self:flex-start;margin-top:2px}.conn-av{background:var(--tag);border:1px solid var(--border);border-radius:3.40282e38px;flex-shrink:0;width:32px;height:32px;position:relative;overflow:visible}.conn-av-empty{background:0 0;border-style:dashed}.conn-av-mark{color:var(--muted);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.credits-card{border-radius:var(--radius-2xl);border:1px solid var(--border);background:var(--card);max-width:380px;margin:8px 0;padding:24px}.pack{cursor:pointer;border-radius:var(--radius-xl);text-align:center;border:1px solid var(--border);transition:var(--transition);padding:16px}.pack:hover{border-color:var(--muted)}.pack-featured{border-radius:var(--radius-xl);text-align:center;border:2px solid var(--accent);padding:16px}.tier-badge{color:#1e40af;background:#dbeafe;border-radius:3.40282e38px;align-items:center;padding:4px 12px;font-size:12px;font-weight:700;display:inline-flex}.free-tag{align-items:center;gap:var(--spacing);color:#065f46;transition:var(--transition);background:#d1fae5;border-radius:3.40282e38px;margin:2px;padding:4px 10px;font-size:11px;font-weight:600;display:inline-flex}.json-block{border-radius:var(--radius-md);background:var(--tag);border:1px solid var(--border);white-space:pre-wrap;word-break:break-all;max-height:320px;margin-top:10px;padding:14px;font-family:SF Mono,Monaco,monospace;font-size:12px;overflow-y:auto}.empty-state{text-align:center;color:var(--muted);padding:48px 24px}.empty-state .icon{margin-bottom:12px;font-size:48px}.empty-state .text{font-size:14px}.amz-head{align-items:center;gap:calc(var(--spacing) * 3);padding:2px 2px 12px;display:flex}.amz-mark{flex:none;align-items:center;display:inline-flex}.mkt-logo{border-radius:var(--radius-sm);background:#fff;justify-content:center;align-items:center;min-width:34px;padding:0 7px;display:inline-flex;box-shadow:inset 0 0 0 1px #1118271f}.mkt-logo svg{width:auto;max-width:96px;height:60%;display:block}.mkt-generic{color:#fff;font-weight:700}.amz-head-text{flex:1;min-width:0}.amz-head-title{text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:700;overflow:hidden}.amz-head-sub{color:var(--muted);margin-top:1px;font-size:12px}.amz-running{flex:none}.amz-strip{gap:calc(var(--spacing) * 2);flex-wrap:wrap;margin-bottom:12px;display:flex}.amz-stat{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--card);flex:130px;padding:8px 12px}.amz-stat-k{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-size:10px;font-weight:700}.amz-stat-v{margin-top:2px;font-size:16px;font-weight:700}.amz-stat-d{color:var(--muted);margin-top:1px;font-size:11px}.amz-grid{gap:calc(var(--spacing) * 2);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));display:grid}.amz-tile{gap:calc(var(--spacing) * 3);text-align:left;border:1px solid var(--border);border-radius:var(--radius);background:var(--card);cursor:pointer;transition:var(--transition);width:100%;padding:10px;display:flex}.amz-tile:hover{background:var(--card-hover)}.amz-tile-open{border-color:#f90}.amz-tile-body{flex-direction:column;gap:2px;min-width:0;display:flex}.amz-brand{color:var(--muted);text-transform:uppercase;letter-spacing:.03em;font-size:11px;font-weight:700}.amz-title{-webkit-line-clamp:3;-webkit-box-orient:vertical;font-size:12px;font-weight:600;line-height:1.35;display:-webkit-box;overflow:hidden}.amz-title-lg{-webkit-line-clamp:4;font-size:14px}.amz-line{flex-wrap:wrap;align-items:center;gap:6px;margin-top:2px;display:flex}.amz-stars{color:#f90;letter-spacing:.5px;font-size:12px}.amz-rating{font-size:12px;font-weight:700}.amz-count{color:var(--muted);font-size:11px}.amz-price{font-size:14px;font-weight:700}.amz-list{color:var(--muted);font-size:11px;text-decoration:line-through}.amz-neg{color:var(--red);border:1px solid var(--border);border-radius:999px;padding:0 6px;font-size:11px;font-weight:700}.amz-sub{color:var(--muted);font-size:11px}.amz-thumb{border-radius:var(--radius-sm);border:1px solid var(--border);background:#fff;flex:none;justify-content:center;align-items:center;width:64px;height:64px;display:inline-flex;overflow:hidden}.amz-thumb img{object-fit:contain;width:100%;height:100%}.amz-thumb-empty{background:var(--tag);color:var(--muted);font-size:18px;font-weight:700}.amz-detail{border:1px solid var(--border);border-radius:var(--radius);background:var(--card);border-top:3px solid #f90;margin-top:12px;padding:14px}.amz-detail-head{gap:calc(var(--spacing) * 3);margin-bottom:12px;display:flex}.amz-detail-facts{flex:1;min-width:0}.amz-open{margin-top:8px}.amz-block{margin-top:14px}.amz-blocknote{color:var(--muted);margin:-4px 0 8px;font-size:11.5px}.amz-feats{color:var(--muted);margin:0;padding-left:18px;font-size:12.5px}.amz-feats li{margin:3px 0}.amz-summary{border-left:3px solid #f90;margin-top:12px;padding-left:10px}.amz-note{color:var(--muted);background:var(--tag);border-radius:var(--radius-sm);margin-top:10px;padding:8px 10px;font-size:11.5px}.amz-hist{margin-top:10px}.amz-hrow{align-items:center;gap:calc(var(--spacing) * 2);margin:3px 0;display:flex}.amz-hstar{color:var(--muted);flex:none;width:26px;font-size:11px}.amz-htrack{background:var(--tag);border-radius:999px;flex:1;height:8px;overflow:hidden}.amz-hfill{border-radius:999px;height:100%;display:block}.amz-hpct{color:var(--muted);text-align:right;flex:none;width:34px;font-size:11px}.amz-bar-good{background:var(--green)}.amz-bar-mid{background:var(--amber)}.amz-bar-bad{background:var(--red)}.amz-rev{border:1px solid var(--border);border-left:3px solid var(--border);border-radius:var(--radius-sm);background:var(--card);margin:6px 0;padding:9px 11px}.amz-rev-good{border-left-color:var(--green)}.amz-rev-mid{border-left-color:var(--amber)}.amz-rev-bad{border-left-color:var(--red)}.amz-rev-focus{background:var(--card-hover);border-color:#f90}.amz-rev-head{align-items:center;gap:calc(var(--spacing) * 2);flex-wrap:wrap;display:flex}.amz-rev-title{font-size:12.5px;font-weight:700}.amz-rev-body{margin-top:4px;font-size:12.5px;line-height:1.5}.amz-rev-meta{color:var(--muted);margin-top:5px;font-size:11px}.amz-verified{color:var(--green);font-weight:600}.amz-arow{align-items:center;gap:calc(var(--spacing) * 3);margin:7px 0;display:flex}.amz-aname{flex:40%;min-width:0;font-size:12.5px;font-weight:600}.amz-abrands{color:var(--muted);font-size:11px;font-weight:400;display:block}.amz-atrack{background:var(--tag);border-radius:999px;flex:40%;height:8px;overflow:hidden}.amz-afill{border-radius:999px;height:100%;display:block}.amz-amentions{color:var(--muted);text-align:right;flex:none;width:48px;font-size:11.5px}.amz-find{border:1px solid var(--border);border-left:3px solid var(--border);border-radius:var(--radius-sm);background:var(--card);margin:7px 0;padding:10px 12px}.amz-find-driver{border-left-color:var(--green)}.amz-find-barrier{border-left-color:var(--red)}.amz-find-gap{border-left-color:var(--blue)}.amz-find-head{align-items:center;gap:calc(var(--spacing) * 2);flex-wrap:wrap;display:flex}.amz-find-label{font-size:13px;font-weight:700}.amz-find-detail{color:var(--muted);margin-top:4px;font-size:12.5px;line-height:1.5}.amz-evrow{gap:var(--spacing);flex-wrap:wrap;margin-top:7px;display:flex}.amz-ev{border:1px solid var(--border);background:var(--tag);color:var(--muted);cursor:pointer;border-radius:999px;padding:2px 8px;font-family:SF Mono,Monaco,monospace;font-size:10.5px}.amz-ev:hover{color:var(--fg);border-color:#f90}.amz-ev-quote{cursor:default;font-family:inherit}.amz-strength{gap:calc(var(--spacing) * 2);margin:6px 0;font-size:12.5px;display:flex}.amz-strength-brand{flex:none;min-width:110px;font-weight:700}.amz-strength-detail{color:var(--muted)}.amz-angle{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--card);margin:7px 0;padding:10px 12px}.amz-angle-claim{font-size:13px;font-weight:700}.amz-angle-row{color:var(--muted);margin-top:3px;font-size:12px}.amz-angle-risk{color:var(--amber)}.replies-strip{border-top:1px solid var(--border);margin-top:10px;padding-top:9px}.replies-head{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-bottom:6px;font-size:10.5px;font-weight:700}.replies-none{color:var(--muted);font-size:11.5px;font-style:italic}.reply-row{border-left:2px solid var(--border);margin-bottom:7px;padding-left:8px}.reply-meta{align-items:center;gap:var(--spacing);flex-wrap:wrap;margin-bottom:2px;display:flex}.reply-who{font-size:11px;font-weight:700}.reply-stat{color:var(--muted);font-size:10.5px}.reply-text{color:var(--fg);font-size:12.5px;line-height:1.45}}@layer utilities{.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.bottom-3{bottom:calc(var(--spacing) * 3)}.left-3{left:calc(var(--spacing) * 3)}.isolate{isolation:isolate}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-0{margin:0}.mx-auto{margin-inline:auto}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mb-1{margin-bottom:var(--spacing)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.h-2{height:calc(var(--spacing) * 2)}.h-full{height:100%}.w-full{width:100%}.max-w-sm{max-width:var(--container-sm)}.shrink{flex-shrink:1}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.gap-1{gap:var(--spacing)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-line{border-color:var(--border)}.bg-black{background-color:var(--color-black)}.bg-soft{background-color:var(--tag)}.bg-surface{background-color:var(--card)}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-3{padding:calc(var(--spacing) * 3)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-1{padding-block:var(--spacing)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-10{padding-block:calc(var(--spacing) * 10)}.pl-5{padding-left:calc(var(--spacing) * 5)}.text-center{text-align:center}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-wrap{text-wrap:wrap}.text-ink{color:var(--fg)}.text-muted{color:var(--muted)}.text-white{color:var(--color-white)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.select-all{-webkit-user-select:all;user-select:all}}:root{color-scheme:light dark;--bg:#fafbfc;--fg:#111827;--muted:#5f6773;--border:#e5e7eb;--card:#fff;--card-hover:#f3f4f6;--tag:#f3f4f6;--accent:#14151a;--brand:#ff4d23;--brand-2:#ff8a3d;--brand-soft:#ff4d2321;--radius:10px;--radius-sm:6px;--transition:all .25s cubic-bezier(.4, 0, .2, 1);--shadow-md:0 4px 12px #00000014;--shadow-lg:0 8px 24px #0000001f;--green:#047857;--amber:#b45309;--red:#dc2626;--blue:#2563eb}@media (prefers-color-scheme:dark){:root{--bg:#0f172a;--fg:#f1f5f9;--muted:#a8b8cc;--border:#334155;--green:#34d399;--amber:#fbbf24;--red:#f87171;--blue:#60a5fa;--card:#1e293b;--card-hover:#273548;--tag:#1e293b;--accent:#e2e8f0;--brand:#ff5c33;--brand-2:#ff9351;--brand-soft:#ff5c3329;--shadow-md:0 4px 12px #0000004d;--shadow-lg:0 8px 24px #0006}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}
22
22
  </style>
23
23
  </head>
24
24
  <body>
@@ -3617,26 +3617,67 @@ export const NOOTICR_UI_TEMPLATE = `<!DOCTYPE html>
3617
3617
  }
3618
3618
 
3619
3619
  /**
3620
- * Each site's own colours, for the mark beside the header.
3620
+ * The seven wordmarks Simple Icons does not carry, as their own SVG files.
3621
3621
  *
3622
- * Initials on the brand's colour rather than its logo. Amazon's mark is here
3623
- * because Font Awesome publishes the path under CC BY 4.0; the other ten do
3624
- * not have one to hand, and drawing a brand's wordmark from memory produces
3625
- * a wrong logo rather than no logo. An <img> is not an option either: this
3626
- * view is one self-contained file in a sandboxed iframe with no remote
3627
- * fetches, so every asset is inline or it does not render.
3622
+ * Written by scripts/build-ui.mjs from assets/brand/marketplaces/*.svg
3623
+ * between the two markers below, so nothing here is hand-edited: the assets
3624
+ * are the source and this is a build product, the same arrangement the
3625
+ * stylesheet above has. A file name is a marketplace slug, so adding a site
3626
+ * is dropping an SVG in that folder and nothing else.
3627
+ *
3628
+ * These are full-colour wordmarks rather than the monochrome glyphs in
3629
+ * MARKET_BRAND's "path" key, which is why they are a separate map: Cdiscount
3630
+ * and Lazada and the rest have no single-path form to drop in, and the
3631
+ * previous commit's sweep of all 3,460 Simple Icons is why. Each mark's ids
3632
+ * are prefixed with its slug, because seven of them in one document share
3633
+ * one id namespace and a clipPath called "a" in two files clips the wrong
3634
+ * logo.
3635
+ *
3636
+ * The marks are their owners' trademarks, drawn to label whose listings are
3637
+ * on screen — which is what a trademark is for.
3638
+ */
3639
+ var MARKET_LOGO={
3640
+ /* BEGIN MARKETPLACE MARKS */
3641
+ cdiscount:'<svg xmlns="http://www.w3.org/2000/svg" fill="none" aria-label="Cdiscount.fr" viewBox="0 0 4069.89 939.17"><title>Cdiscount.fr</title><g fill="#3732ff"><path d="M795.77 352.69A2555 2555 0 0 1 694.33 692.2c-10.4-88.14-19.77-175.42-29.13-263.21-9.83-91.79-19.71-184.21-30.92-278.77l-115.03 14.22q2.78 28.2 5.9 56.35c5.32 48.73 10.64 97.45 12.66 146.4-216.4 123.06-291.2 272.82-290.38 372.52-163.4 63.7-319.46-25.89-276.4-198.54 42.77-141.03 216.17-179.93 342-136.75l37.74-109.64c-187.85-64.74-425.7 5.78-490.54 212.58-73.87 272.93 186.23 440.55 431.53 339.8 104.38 80.52 240.21 5.38 293.04-94.79a29460 29460 0 0 0 20.11 166.87l108.78 19.94c3.12-5.95 51.38-98.38 104.8-248.42l13.34 179.4 115.6-8.78c-4.45-58.72-37.28-500.71-37.28-500.71zM367.77 760C338.33 658.91 490.17 536.5 537.8 503.84c2.83 88.6-57.86 285.12-170.05 256.16m429.45-606.89-1.85 120.68 115.83 1.85 1.9-120.74zm1371.52 609.72c56.76-17.22 33.64-346.68 4.28-446.55l112.18-29.25c35.38 137.56 99.24 591.46-117.5 591.46-174.44-1.8-182.13-261.14-181.43-382.98a249 249 0 0 1-45.67 19.48c2.72 128.49-30.1 364.54-192.47 365.06-60.17-1.56-87.5-27.57-109.24-73.12-34.73 37-84.15 72.6-148.83 72.6-97.85 0-176-73.87-207.9-162.53-53 101.03-270.74 153.92-280.04 156.06l-26.88-112.71c96.64-22.95 176.93-65.9 199.24-90.05-22.66-23.24-53.64-42.31-85.03-61.62-66.06-40.57-133.97-82.36-130.74-166.69 7.05-99.07 125.31-158.2 252.18-207.38l41.9 108.08c-162.99 63.12-177.79 98.14-178.42 107.4 24.85 24.67 60.69 49 95.48 72.59 35.38 23.93 69.53 47.05 89.36 68.9-5.6-129.07 36.41-335.36 199.7-341.02 83.23-2.9 146.34 57.62 153.34 64.56l-81.5 82.6c-9.36-9.14-39.77-32.26-68.43-31.22-112.48 12.08-126.93 367.55 7.57 394.48 57.1 15.26 92.94-39.36 121.84-83.23q6.93-10.69 13.47-20.11c-9.71-125.89 10.52-388.87 163.68-389.8 64.85 0 149.93 59.13 161.84 126.23 31.39-17.68 53.47-47.5 71.9-77.68l107.16 35.84c-11.5 63.92-17.28 413.6 58.9 410.6m-424.01-336.85c-33.99 90.17-39.37 244.43 2.3 338.24 62.37-3.3 79.6-193.92 77.46-253.74-32.95-18.32-61.1-51.84-79.76-84.5m919.87 194.38-189.4-361.82-109.3 27.74 8.49 583.02 115.95-1.68-4.98-339.8 185.89 355.06 109.35-26.87V342.4h-116zm11.56-461.93 441.59 10.46-2.72 115.89-149.35-3.47c2.2 86.93 4.97 173.97 7.74 260.9 3.53 109.82 7.05 219.64 9.42 329.46l-115.83 2.6c-2.42-105.83-5.78-211.72-9.25-317.55-2.89-92.77-5.9-185.53-8.2-278.24l-176.23-4.17z"/><path d="m3679.25 118.37-631.28 266 40.86 97.1 18.96-7.98-1.85 194.2 136.93-11.15-30 201.72 86.64 47.57L3566.78 674l-35.44-41.04 292.58-23.81a23264 23264 0 0 0-144.67-490.84m-341.36 614.7 12.6-85.25 94.62-7.7zm-125.54-179.7 1.27-124.44 398.82-168.02c19.07 63.23 50.63 168.66 75.3 253.8zM3910.45 0c-1.04.8-102.88 87.05-144.79 119.41l64.4 83.23c43.69-33.75 144.08-118.6 148.3-122.24zm274.26 127.16L3872 247.15l37.75 98.37 312.69-120.05ZM3899.47 515.1a667 667 0 0 1 175.3-20.4l1.85-105.32a775 775 0 0 0-202.99 23.7z"/></g></svg>',
3642
+ flipkart:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="-2.85 -1.25 24.71 7.52"><path fill="#f8de00" fill-rule="evenodd" d="M13.96.85v3.91q0 .12.1.19.05.04.1.05h2.22v-.02l.14-.75V4.2h-.72l-.24-.02h-.3l-.23-.02h-.15l-.26-.01-.27-.01h.1l.2-.02h.2l.18-.02.21-.01.18-.01h.1l.1-.01.21-.01-.02-.08q0-.02-.03-.02l-.46-.06h.03l.36-.04h.08l-.04-.12-.76-.11.2-.02.64-.07h.8l.02-.01.07-.35q.04-.24.15-.46a1.4 1.4 0 0 1 1.22-.76h.24l.14.07.07.1.07.3-.02.12q-.03.04-.1.06c-.13.04-.27 0-.41.04a.5.5 0 0 0-.29.17 1 1 0 0 0-.15.37l-.07.35h.41q.08 0 .13.08.04.1.01.2l-.06.23a.3.3 0 0 1-.14.14h-.47l-.05.27-.09.52V5h1.41q.08 0 .13-.03l.06-.04.04-.05q.04-.04.04-.1H19V.85z"/><g fill-rule="evenodd" clip-path="url(#flipkart-b)" transform="matrix(.35278 0 0 -.35278 -93.73 87.77)"><path fill="#f6f4b6" d="m307.12 248.74-.78-.3q-.04-.01-.07-.05v-.79q0-.1.02-.17l-.09-.07-.86-.58q-.09-.04-.09-.14-.02-.07.05-.06l1.89.01h12.3q.05 0 .03.05 0 .06-.03.1-.2.11-.4.25l-.14.11-.4.26-.07.07.02.13v.77q.01.06-.04.1l-.72.28-.23.06h-10.26q-.08 0-.13-.03m-.02.03c.17.06.35.02.53.03h9.83c.2.01.37-.1.55-.15l.44-.17q.04-.02.07-.06v-.8l.02-.21q.05-.01.09-.07.19-.1.36-.23l.55-.38q.01-.08-.01-.15l-.01-.18h-14.27q.01.1-.02.2c0 .05-.02.12.03.15q.31.2.61.42l.36.24q.03.07.02.13v.88c.07.08.19.1.28.14z"/><path fill="#f3b21c" d="M306.28 248.33c.17-.08.36-.12.54-.2.1-.03.13-.13.17-.22l-.14-.1-.56-.38q-.02.08-.02.17zm11.67-.19.54.19v-.77l-.01-.13q-.24.14-.47.32l-.23.16c.04.09.07.19.17.23"/><path fill="#bca531" d="M309.34 248.06c.22.05.47-.15.45-.38 0-.23-.24-.41-.46-.36a.4.4 0 0 0-.22.16.4.4 0 0 0-.03.36q.08.17.26.22m5.73-.13c.09.1.24.16.37.12q.16-.05.25-.2a.4.4 0 0 0-.15-.49.4.4 0 0 0-.47.08.4.4 0 0 0 0 .49"/><path fill="#f7e400" d="m306.85 247.8.14.11.01-.01.01-.32v-.94h-1.76c-.02.07.04.1.09.14q.44.28.86.58l.09.07zm10.91.04q0 .04.02.07.1-.09.23-.16l.47-.32.07-.07.4-.26.15-.11q.19-.14.4-.25.02-.04.02-.1h-1.75l-.01.24z"/></g><path fill="#f6ce14" fill-rule="evenodd" d="m14.66.01-.04.01-.27.1q-.02 0-.03.03v.02l.2.07q.04.02.05.08l.01.11v.33h-.62q0 .03.02.02h5q.02 0 .01-.02h-.61V.32q.02-.05.06-.08l.2-.07-.02-.04-.25-.1-.09-.02zm2.77.47a.13.13 0 0 1 0-.17.1.1 0 0 1 .13-.04q.05 0 .08.07.04.1-.05.17l-.06.02a.1.1 0 0 1-.1-.05M15.4.52l-.08-.05a.1.1 0 0 1-.01-.13.1.1 0 0 1 .1-.07c.07-.02.16.05.15.13q-.01.12-.13.13z"/><path fill="#f8d409" fill-rule="evenodd" d="m17.59 1-.03.01.04.07.01.04.02.08.03-.02q.04-.02.04-.06c0-.02.02-.08-.03-.11L17.63 1zm-2.31 0q-.06.06-.03.11 0 .05.04.06l.03.02.02-.08v-.04L15.4 1h-.03l-.04-.01z"/><path fill="#bca531" fill-rule="evenodd" d="m17.51 1.53.03-.01q-.11.29-.33.51l-.05.04-.05.04-.05.03-.12.07q-.12.06-.26.08l-.1.02h-.21l-.06-.02-.06-.01c-.33-.1-.65-.35-.74-.68v-.07l.02.06c.14.28.4.51.7.58q.05 0 .08.02h.32a1 1 0 0 0 .41-.12l.06-.03.05-.04q.2-.16.32-.4z"/><path fill="#0664ae" fill-rule="evenodd" d="M17.4 2.16a1.5 1.5 0 0 1 .93-.19q.08.01.14.06l-.06-.01h-.18q-.26-.01-.5.05a1.2 1.2 0 0 0-.61.4q-.27.32-.34.72l-.07.42H15.2l.63-.07h.8l.03-.01.06-.35q.05-.24.16-.46.18-.35.52-.56"/><path fill="#1f74ba" fill-rule="evenodd" d="M17.72 2.07q.25-.06.51-.06l.18.01.06.01.07.1.06.3v.12l-.1.06c-.14.04-.29 0-.42.04a.5.5 0 0 0-.3.17 1 1 0 0 0-.14.37l-.07.35-.02.08h.56a.4.4 0 0 1 .01.2l-.06.23a.3.3 0 0 1-.15.14h-.46l-.05.27-.1.52V5h-.92v-.02V5q.05.01.07-.02l.14-.78h-.06l-.01.03V4.2h-.72l-.24-.02h-.3l-.23-.01-.15-.01-.26-.01-.27-.01h.1l.2-.02h.2l.18-.02.21-.01.18-.01.2-.01.21-.01-.02-.08q0-.03-.03-.02l-.46-.06h.03l.36-.04h.08l-.04-.12-.76-.11.2-.02h1.52l.07-.42q.07-.4.34-.72a1.3 1.3 0 0 1 .6-.4"/><path fill="#0664ae" fill-rule="evenodd" d="M17.57 3.54h.4q.1 0 .14.08h-.55zm-1.04.66h.06l-.14.78q-.02.03-.06.02v-.02l.13-.75z"/><path fill="#fff" fill-rule="evenodd" d="m17.64 1.1-.01-.04q-.02-.05-.08-.06-.04 0-.07.02-.03.07-.01.13v.01l-.01.09v.03l-.1.22-.06.1-.01.01-.06.06-.02.01-.08.07q-.29.17-.62.18-.29 0-.53-.12h-.02l-.08-.05h-.02l-.07-.06-.02-.02-.08-.07-.01-.01a1 1 0 0 1-.17-.29q-.04-.12-.03-.26-.05-.07-.13-.04l-.03.05a.8.8 0 0 0 .25.65l.08.08.02.01.09.07.01.01.12.07h.01a1 1 0 0 0 .48.13h.21q.34-.02.63-.2l.02-.01.08-.07.02-.02.1-.1v-.01l.08-.1v-.02l.1-.25v-.02l.01-.08z"/><path fill="#1f74ba" fill-rule="evenodd" d="M3.44 1.4q.17-.05.3.04.09.07.08.18 0 .17-.15.28a.5.5 0 0 1-.28.04.2.2 0 0 1-.16-.1c-.07-.17.02-.4.2-.44m-3.06.12q.02-.1.12-.1h1.33q.08-.02.13.05c.03.06 0 .12 0 .18-.02.08-.01.2-.1.22H.86l-.1.62v.03h.72c.07 0 .14.05.13.12l-.03.22q-.01.07-.1.1H.7l-.13.88q-.02.1-.11.11H.12c-.08 0-.13-.08-.11-.14q.17-1.15.36-2.29m1.96-.1h.3q.11 0 .14.1l-.02.15-.25 1.56c0 .08-.03.17 0 .25.02.09.15.05.18.14q.02.11 0 .22c0 .1-.12.12-.2.14-.16.03-.36.01-.48-.13q-.11-.16-.07-.36l.31-1.97q0-.09.1-.1m3.84.1q.02-.1.11-.1h.3c.07-.01.13.07.11.14l-.2 1.29q.17-.02.29-.12.18-.22.3-.46c.02-.06.03-.15.11-.17h.34c.07 0 .13.09.1.16q-.04.15-.12.29a2 2 0 0 1-.4.5q.11.33.24.64c.02.07.08.15.03.22s-.18.04-.26.05c-.09-.01-.21.03-.26-.07q-.14-.31-.26-.64h-.17l-.01.03-.1.58q0 .08-.09.1h-.31a.1.1 0 0 1-.1-.07q-.03-.06 0-.13zm5.38.21q.02-.08.12-.09h.23q.11.02.11.13l-.05.33h.23q.12.02.12.14l-.04.18a.1.1 0 0 1-.1.1h-.27l-.13.78q0 .1.03.18c.05.06.14.04.22.05q.1.04.08.14l-.02.2q-.06.08-.18.1a.7.7 0 0 1-.53-.06c-.15-.1-.17-.3-.15-.45l.13-.94q-.09.01-.16-.04-.04-.08-.01-.18c.01-.07 0-.15.08-.19q.08-.02.18 0zm-1.1.63q.19-.19.44-.27c.08-.04.17.02.17.1q-.02.17-.06.32-.01.09-.1.1a1 1 0 0 0-.49.29q-.06.06-.09.13l-.12.82q-.02.09-.12.1h-.3q-.1-.01-.11-.13l.25-1.6q0-.1.1-.12h.22q.1.01.11.11l-.01.26zm-7.23-.25q.16-.02.31 0 .1-.02.14.08 0 .09-.02.16l-.23 1.5q-.01.09-.11.1H3c-.07 0-.11-.08-.1-.14l.25-1.55q0-.1.08-.15m5.72.94a2 2 0 0 1-.3.39q-.12.11-.26.1c-.1-.02-.14-.12-.16-.2a1 1 0 0 1 .12-.64.4.4 0 0 1 .24-.18 1 1 0 0 1 .43.02zm.54-.9a3 3 0 0 0-.87-.07 1 1 0 0 0-.69.37c-.22.28-.3.66-.25 1.01q.04.27.24.45.2.14.46.08c.21-.04.4-.18.55-.33v.2q.01.1.11.1h.2q.1-.01.11-.1l.25-1.58q0-.1-.1-.13m-4.35.81a1 1 0 0 1-.2.5c-.16.15-.4.12-.6.07l-.01-.02q.03-.26.08-.5c.11-.18.24-.37.43-.46q.12-.06.21.03.12.17.09.38m.54-.2a.8.8 0 0 0-.19-.53.5.5 0 0 0-.37-.16q-.34.01-.6.25-.04.06-.1.1v-.2q-.01-.1-.1-.1h-.2q-.11.01-.12.1l-.37 2.33c-.02.07.05.15.12.14h.32c.09-.03.09-.13.1-.2l.07-.51c.38.07.83.02 1.11-.27.23-.25.34-.6.33-.94"/></svg>',
3643
+ lazada:'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 410.28 107.51"><defs><linearGradient id="lazada-a" x1="0" x2="1" y1=".5" y2=".5" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#ffb900"/><stop offset=".34" stop-color="#f38000"/><stop offset=".57" stop-color="#f83c72"/><stop offset=".78" stop-color="#fc1cbe"/><stop offset=".93" stop-color="#fe08ed"/><stop offset="1" stop-color="#f0f"/></linearGradient><linearGradient id="lazada-c"><stop offset="0" stop-color="#ed6600"/><stop offset="1" stop-color="#f98200"/></linearGradient><linearGradient id="lazada-b"><stop offset="0" stop-color="#ee0a3f"/><stop offset="1" stop-color="#ee0a3f" stop-opacity="0"/></linearGradient><linearGradient xlink:href="#lazada-a" id="lazada-d" x1="0" x2="66.76" y1=".5" y2="-.02" gradientUnits="userSpaceOnUse"/><linearGradient xlink:href="#lazada-b" id="lazada-e" x1="18.75" x2="86.82" y1="49.01" y2="11.32" gradientUnits="userSpaceOnUse"/><linearGradient xlink:href="#lazada-c" id="lazada-f" x1="41.79" x2="75.04" y1="39.35" y2="12.57" gradientUnits="userSpaceOnUse"/></defs><path fill="#000083" d="M167.7 15.02h9.29v44.73H193v8.82h-25.28zm46.82 13.43a15.7 15.7 0 0 1 12.63 6.06v-5.27h8.67v39.4h-8.68v-5.26a15.7 15.7 0 0 1-12.62 6.06c-10.81 0-19.01-9.22-19.01-20.5s8.21-20.5 19.01-20.5m1.57 7.9c-7 0-11.66 5.52-11.66 12.59 0 7.09 4.73 12.63 11.67 12.63s11.68-5.53 11.68-12.63-4.66-12.6-11.68-12.6m26.47 25.48 20.65-24.7h-20.36v-7.87h31.56v6.94l-20.58 24.6h21.05v7.87h-32.32zm54.37-33.36a15.7 15.7 0 0 1 12.61 6.06v-5.27h8.69v39.4h-8.69v-5.26a15.7 15.7 0 0 1-12.6 6.06c-10.83 0-19.01-9.22-19.01-20.5s8.18-20.5 19-20.5m1.57 7.9c-7.02 0-11.66 5.52-11.66 12.59 0 7.09 4.73 12.63 11.67 12.63s11.66-5.53 11.66-12.63-4.64-12.6-11.67-12.6M343 28.45a15.7 15.7 0 0 1 12.6 6.06V11.86h8.67v56.8h-8.68v-5.27A15.7 15.7 0 0 1 343 69.44c-10.82 0-19.02-9.22-19.02-20.5s8.2-20.5 19.02-20.5m1.56 7.9c-7.02 0-11.67 5.52-11.67 12.59 0 7.09 4.75 12.63 11.67 12.63s11.67-5.53 11.67-12.63-4.65-12.6-11.67-12.6m44.48-7.88a15.7 15.7 0 0 1 12.6 6.06v-5.27h8.65v39.4h-8.68v-5.26A15.7 15.7 0 0 1 389 69.44c-10.82 0-19.02-9.22-19.02-20.5s8.26-20.5 19.06-20.5m1.57 7.9c-7.02 0-11.66 5.52-11.66 12.59 0 7.09 4.74 12.63 11.67 12.63s11.67-5.53 11.67-12.63-4.65-12.6-11.67-12.6"/><path fill="url(#lazada-d)" d="M33.74 54.72q-.73 0-1.37-.36C28.81 52.3 2.4 35.74 1.41 35.24a2.4 2.4 0 0 1-1.37-1.91V10.1a2.5 2.5 0 0 1 1.13-2.16l.2-.11A788 788 0 0 1 13.82.29Q14.3 0 14.85 0q.51 0 .97.25s11.96 7.8 13.8 8.5c1.28.58 2.68.88 4.09.85a9 9 0 0 0 4.59-1.12c1.79-.94 13.22-8.2 13.34-8.2q.45-.26.96-.25a2 2 0 0 1 1.02.28c1.56.86 12.16 7.35 12.61 7.64.75.45 1.2 1.26 1.19 2.13V33.3c-.09.83-.6 1.56-1.37 1.91-1 .55-27.31 17.1-30.95 19.12q-.63.38-1.36.39" transform="translate(-.05)scale(1.96487)"/><path fill="url(#lazada-e)" d="M33.6 54.72h.14q.73 0 1.36-.36c3.57-2.06 29.96-18.62 30.95-19.12a2.4 2.4 0 0 0 1.37-1.91V10.1q0-.6-.26-1.14L33.6 27.4z" transform="translate(-.05)scale(1.96487)"/><path fill="url(#lazada-f)" d="M33.6 54.72h.14q.73 0 1.36-.36c3.57-2.06 29.96-18.62 30.95-19.12a2.4 2.4 0 0 0 1.37-1.91V10.1q0-.6-.26-1.14L33.6 27.4z" transform="matrix(-1.94394 0 0 1.94394 131.06 .5)"/></svg>',
3644
+ mercadolibre:'<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="1338.7 1396.4 112.83 46.94"><path fill="#2d3277" d="M1368.8 1421.68h1.04v20.77h-3.93v-18.25c0-.6 1.26-2.52 2.9-2.52m21.5 4.6a5 5 0 0 0-4.45 2.45v-7.05h-.44a3.8 3.8 0 0 0-3.49 1.93v-.15 11.94q0 7.04 7.34 7.05c4.9-.07 7.27-2.74 7.27-7.94 0-5.41-2.07-8.08-6.23-8.23m-1.18 12.76c-2.23 0-3.34-1.63-3.27-4.75.15-3.04 1.19-4.52 3.34-4.52s3.19 1.48 3.34 4.52c0 3.2-1.19 4.75-3.41 4.75m9.71-4.75c.15-5.04 2.6-7.86 7.87-7.86h1.18v4.08h-1.85c-2.23 0-3.2 1.4-3.2 3.7v8.17h-4zm15.28 4.08q.98.9 2.75.9c.81 0 1.56-.23 2.15-.68a3 3 0 0 0 1.11-1.33h3.71c-.6 1.85-1.48 3.11-2.74 3.93s-2.67 1.19-4.45 1.19c-1.2 0-2.3-.23-3.27-.6s-1.78-.96-2.45-1.63q-1-1.1-1.55-2.52c-.55-1.42-.52-2.08-.52-3.26 0-1.12.22-2.23.6-3.2a7.3 7.3 0 0 1 4-4.22 7.4 7.4 0 0 1 3.19-.6c1.26 0 2.44.23 3.4.75s1.79 1.18 2.38 2q.9 1.22 1.34 2.9c.3 1.03.37 2.22.3 3.4H1413q.22 2.1 1.11 2.97m4.75-8.01q-.76-.8-2.3-.82c-.67 0-1.26.15-1.7.37s-.82.52-1.04.82c-.3.37-.45.67-.6 1.04s-.14.74-.22 1.04h6.83a3.7 3.7 0 0 0-.97-2.45m-44.8-8.68h3.93v3.56h-3.93zm0 5.34h3.93v15.36h-3.93zm71.73-13.57c-.67.74-1.56 1.18-2.67 1.18s-2-.44-2.67-1.18-.9-2-.9-3.49q0-2.32.9-3.41c.67-.74 1.56-1.19 2.67-1.19s2 .45 2.67 1.19.89 2 .89 3.41-.22 2.6-.9 3.49m3.12-9.2c-1.18-1.56-3.19-2.45-5.78-2.45-2.52 0-4.6.74-5.79 2.45a9.2 9.2 0 0 0-1.93 5.64c0 2.22.67 4.15 1.93 5.63 1.19 1.56 3.2 2.38 5.79 2.38 2.52 0 4.6-.74 5.78-2.38a9.2 9.2 0 0 0 1.93-5.63c.08-2.08-.6-4.01-1.93-5.64m-19.28 9.2a3 3 0 0 1-2.52 1.18c-1.12 0-2-.44-2.45-1.18-.52-.9-.74-2-.74-3.49 0-1.33.22-2.37.74-3.19.52-.89 1.33-1.33 2.52-1.33q1.11 0 2 .66c.9.74 1.41 2.23 1.41 4.16-.22 1.33-.37 2.44-.96 3.19m4.6-16.17s-4-.45-4 2.74v4.23a6 6 0 0 0-1.79-1.7 4.4 4.4 0 0 0-2.45-.53c-2 0-3.56.74-4.82 2.23-1.19 1.4-1.78 3.56-1.78 6.23 0 2.22.52 4.15 1.78 5.41 1.19 1.41 3.56 2 5.64 2 7.34 0 7.2-6.22 7.2-6.22zm-19.73 14.31c0 1.34-.45 2.23-1.12 2.75a4.7 4.7 0 0 1-2.37.74c-.52 0-.97-.08-1.34-.45s-.52-.74-.52-1.4q0-1.14.9-1.71c.3-.22.96-.45 1.77-.52l.9-.22c.44-.08.74-.23 1.1-.23.23-.07.53-.22.75-.3zm2-8.68a9.6 9.6 0 0 0-4.45-.96c-2.52 0-4.38.67-5.42 2a6.3 6.3 0 0 0-1.11 3.2h3.78c.08-.53.3-.97.52-1.34q.67-.67 2-.67c.9 0 1.41.07 1.93.3q.67.33.67 1.33 0 .78-.89 1.11c-.3.08-.89.23-1.56.3l-1.33.07c-1.56.23-2.67.52-3.49.97-1.4.74-2.15 2.22-2.15 4q0 2.12 1.34 3.34c.89.74 2 1.11 3.4 1.19 8.69.3 8.61-4.6 8.61-5.56v-5.64c.08-1.63-.52-2.97-1.85-3.64m-19.66 2.45q1.45 0 2.23.9c.3.44.52.96.52 1.55h4.22c-.22-2.15-.96-3.71-2.22-4.45-1.19-.9-2.9-1.19-4.9-1.19-2.37 0-4.23.67-5.56 2.15q-2 2.23-2 6.01c0 2.37.52 4.16 1.78 5.56 1.18 1.41 3.11 2.16 5.63 2.16s4.45-.9 5.79-2.53a8 8 0 0 0 1.33-3.48h-4.22c-.08.74-.3 1.4-.75 1.93-.44.44-1.1.74-2.15.74-1.33 0-2.37-.67-2.74-1.93-.22-.67-.45-1.56-.45-2.67s.08-2.15.45-2.75c.67-1.33 1.56-2 3.04-2m-8.83-3.34c-8.82 0-8.23 7.8-8.23 7.8v7.85h4v-7.34c0-1.19.08-2.15.45-2.67.52-.96 1.56-1.56 3.19-1.56h.44q.34-.02.67.08v-4h-.3c-.07-.16-.07-.16-.22-.16m-19.88 4.08a3.3 3.3 0 0 1 2.38-.89q1.35-.01 2.37.74c1.02.75.96 1.34.96 2.38h-6.82c.22-.9.52-1.63 1.11-2.23m5.34 7.35a1 1 0 0 1-.52.52c-.51.44-1.33.52-2.22.52s-1.56-.08-2.15-.52c-.97-.52-1.56-1.71-1.56-3.12H1378c0-1.33 0-2.37-.08-2.97a7 7 0 0 0-1.18-3.11c-.67-.97-1.56-1.78-2.52-2.23s-2.23-.67-3.56-.67c-2.23 0-4.01.67-5.35 2.16-1.33 1.4-2.15 3.4-2.15 6 0 2.75.74 4.83 2.38 6.01a8.7 8.7 0 0 0 5.34 1.93c2.45 0 4.37-.74 5.64-2.22a4.6 4.6 0 0 0 1.33-2.38zm-12.01 4.15h-3.71v-9.12c0-.9-.22-2.75-2.67-2.75a2.65 2.65 0 0 0-2.75 2.75v9.12h-3.7v-9.12c0-.9-.23-2.75-2.68-2.75-1.55 0-2.67 1.11-2.67 2.75v9.12h-3.7v-9.05c0-3.78 2.44-6.68 6.3-6.68a5.6 5.6 0 0 1 4.6 2.16 5.8 5.8 0 0 1 4.6-2.16c4 0 6.3 2.75 6.3 6.68z"/></svg>',
3645
+ otto:'<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="0 0 651.3 219.9"><defs><clipPath id="otto-a" clipPathUnits="userSpaceOnUse"><path d="M0 175.79V0h520.95v175.79"/></clipPath></defs><g clip-path="url(#otto-a)" transform="matrix(1.25 0 0 -1.25 0 219.9)"><path fill="#db1f26" d="m471.71 99.24-.47-5.67C467.93 52.93 454.7 40.4 438.4 40.4c-14.66 0-25.05 9.93-22.93 36.39l.48 5.9c3.3 40.41 16.53 53.17 32.84 53.17 14.41 0 25.05-10.16 22.92-36.62m-366.23 0-.48-5.67C101.7 52.93 88.46 40.4 72.16 40.4c-14.65 0-25.04 9.93-22.92 36.39l.47 5.9c3.31 40.41 16.54 53.17 32.85 53.17 14.4 0 25.04-10.16 22.92-36.62m348.04 76.55c-25.96 0-47.08-8-62-24.56q3.19 8.63 3.4 21.02h-90.97c-19.85 0-31.19-8.74-38.99-31.2l4.02 31.2h-91.91c-16.83 0-28.38-8.05-32.56-23.8-11.39 18.25-31.63 27.34-57.23 27.34-48.67 0-80.33-28.12-86-88.13L.57 80.1C-4.4 26.46 23.72 0 67.43 0c48.68 0 80.34 28.35 86.01 88.37l.71 7.56c1.28 13.76.35 25.72-2.47 35.91h41.22L181.09 30.71c-2.37-20.08 8.5-29.3 26.7-29.3 11.1 0 14.88.72 19.13 1.42l14.65 129.01h47.97L277.72 30.71c-2.36-20.08 8.5-29.3 26.7-29.3 11.1 0 14.89.72 19.14 1.42l14.65 129.01h23.63q12.25.01 19.87 5.66c-7.44-13.1-12.3-29.66-14.2-49.84l-.7-7.56C361.83 26.46 389.94 0 433.66 0c48.67 0 80.33 28.35 86 88.37l.71 7.56c4.96 53.4-23.15 79.86-66.87 79.86"/></g></svg>',
3646
+ temu:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256"><path fill="#fcfcfc" d="M199.1 0A56.9 56.9 0 0 1 256 56.9v142.2a56.9 56.9 0 0 1-56.9 56.9H56.9A56.9 56.9 0 0 1 0 199.1V56.9A56.9 56.9 0 0 1 56.9 0z"/><path fill="#fb7701" d="M199.1 0A56.9 56.9 0 0 1 256 56.9v142.2a56.9 56.9 0 0 1-56.9 56.9H56.9A56.9 56.9 0 0 1 0 199.1V56.9A56.9 56.9 0 0 1 56.9 0zm-64 132.98h-3.4a5.46 5.46 0 0 0-5.47 5.48v37.62a5.5 5.5 0 1 0 10.97 0v-24.7l9.25 13.05a4.84 4.84 0 0 0 7.88 0l9.24-13.05v24.7a5.5 5.5 0 0 0 5.5 5.5c3.03 0 5.5-2.45 5.48-5.5v-37.63c0-3.02-2.45-5.5-5.48-5.47h-3.4c-1.3 0-2.55.63-3.3 1.7l-11.97 18-12-18a4 4 0 0 0-3.3-1.7m85.05 0a5.5 5.5 0 0 0-5.5 5.48v22.97c0 7.22-4.08 10.92-10.78 10.9-6.7 0-10.77-3.83-10.75-11.23v-22.65c0-3.02-2.45-5.5-5.5-5.47a5.46 5.46 0 0 0-5.47 5.48v22.9c0 13.4 8.2 20.22 21.6 20.22s21.9-6.75 21.87-20.55v-22.58c0-3.02-2.45-5.5-5.47-5.47m-154.22 0H33.85a5.5 5.5 0 1 0 0 10.97H44.4v32.08a5.5 5.5 0 1 0 10.98 0v-32.08h10.55a5.5 5.5 0 0 0 5.5-5.5c0-3.02-2.45-5.5-5.5-5.47m47.47 0H83.68a5.5 5.5 0 0 0-5.5 5.48v37.57a5.5 5.5 0 0 0 5.5 5.5h29.72a5.5 5.5 0 0 0 0-11H89.15v-7.8h21.1a5.5 5.5 0 1 0 0-10.98h-21.1v-7.8h24.25c3.03 0 5.5-2.45 5.48-5.5 0-3.02-2.45-5.5-5.48-5.47M59.78 75.63l-1.03.03c-4.27.27-7.2 2.12-8.85 4.62-1.92-2.87-5.52-4.9-10.95-4.6l-.12.18c-.63 1-2.98 5.47.82 10.35.78.82 2.68 3.15 1.9 6.12l-11.02 17.83a3.2 3.2 0 0 0 .87 4.3c2.85 2 8.58 4.75 18.5 4.75 9.9 0 15.63-2.75 18.48-4.75l.37-.33a3.2 3.2 0 0 0 .5-3.97l-11-17.83.08.33-.13-.5c-.6-2.68.9-4.8 1.73-5.75l.2-.2a8.8 8.8 0 0 0 .82-10.35l-.1-.18zm35.7 8.35c-3.78-7.5-8.68-8.78-11.13-6.83-1.87 1.5-6.2 7.43-6.5 7.83-4.77 6.77-4.5 8.42 1.63 12.27 3.45 2.18 6.22-.62 7.42-1.45-.57 3.58-2.32 9.2-4.95 13.15a46 46 0 0 1-3.12-2.5 2.1 2.1 0 0 0-2.88.08q-.57.59-.55 1.43c.03.52.25 1.02.63 1.37a35 35 0 0 0 23.67 9.15 35 35 0 0 0 23.75-9.15c.83-.75.85-2 .1-2.8-.8-.8-2.05-.82-2.87-.07q-.74.67-1.53 1.3l-2.8-6.26a63 63 0 0 1-1.5-4.05c.28-.67.85-1.32 1.68-2.17q.9-.9 1.47-1.77c1.85-2.93.8-4.66.23-5.8-1.33-2.7-3.4-1.83-4.9-.23-1.85 1.95-3.65 2.8-6.55 3.45-2.43.55-4.3.28-5.85-.7-2.15-1.32-5.45-6.25-5.45-6.25m69.32-7.63c-8 7.6-.32 24.13-14.87 31.15-1.6.78-2.93-1.77-5.08-1.77-6.07.05-17.67 5.4-18.12 8.1-.38 2.22 4.57 4 19.17 4.02 12.7 0 16.8-19.32 21.25-19.35 4.45 0 2.38 17.53 1.9 19.35h4.65c-.4-1.82-.7-7.32-.67-15.1 0-7.77 1.4-9.5 2.53-15.37.97-5.1-6.58-9.52-10.75-11.02m45.6.63h-13.02a16.04 16.04 0 0 0-16 14.92l-.95 13.48a11.1 11.1 0 0 0 11.02 11.85h24.85c6.43 0 11.48-5.43 11.05-11.85l-.95-13.48a16.05 16.05 0 0 0-16-14.92m-110.65 31c3.93 0 6.93 1.92 8.03 5.5q-4 1.06-8.08 1.02c-4.1 0-5.55-.37-8.17-1.07 1.05-3.15 4.52-5.45 8.22-5.45m98.23-19.83v.38c0 3.25 2.65 5.92 5.9 5.92s5.92-2.65 5.92-5.92v-.38c0-1.45 5.25-1.45 5.25 0v.38a11.17 11.17 0 0 1-22.32 0v-.38c0-1.45 5.22-1.45 5.25 0"/></svg>',
3647
+ trendyol:'<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="0 0 111 45"><path fill="#231f20" d="M39.69 23.74H27.12c.58 2.36 2.49 4.14 4.98 4.14 1.4 0 2.78-.6 3.7-1.64l3.04.07a7.7 7.7 0 0 1-6.85 4.17c-4.32 0-7.72-3.75-7.72-7.99a7.8 7.8 0 0 1 7.78-7.97c4.3 0 7.73 3.54 7.73 7.81-.01.46-.04.96-.09 1.41m-7.68-6.63a4.93 4.93 0 0 0-4.9 4.44h9.8a4.9 4.9 0 0 0-4.9-4.44M52.28 30.1v-8.24c0-2.57-.77-4.74-3.79-4.74-2.79 0-4 2.16-4 4.72v8.27h-2.84V14.93h2.66v1.61h.05a5.3 5.3 0 0 1 4.44-2.03c2.16 0 4.19.85 5.37 2.71.73 1.15.96 2.54.96 3.89v8.99zm17.99 0v-2.16h-.05a6.4 6.4 0 0 1-5.37 2.54 7.7 7.7 0 0 1-7.89-7.91c0-4.55 3.29-8.06 7.89-8.06 1.91 0 3.94.73 5.15 2.27h.05V9.83h2.84V30.1zm-5.26-12.99c-3.01 0-5.2 2.46-5.2 5.43a5.3 5.3 0 0 0 5.18 5.35 5.3 5.3 0 0 0 5.28-5.35c0-3.04-2.16-5.43-5.26-5.43m16.13 18.06h-2.95l2.21-5.37-6.05-14.87h3.07l4.47 11.78 4.57-11.78h3.07zm16.49-4.69a8.15 8.15 0 0 1-8.19-8.08c0-4.47 3.81-7.89 8.19-7.89 4.44 0 8.19 3.45 8.19 7.94a8.13 8.13 0 0 1-8.19 8.03m0-13.37a5.38 5.38 0 0 0 0 10.77 5.38 5.38 0 0 0 0-10.77m10.51 12.99V9.83H111V30.1zM2.82 27.11q.18.73.46 1.18t.69.81q1.36 1.19 3.39 1.19 2.01 0 3.73-.96V26.6a7 7 0 0 1-3.37 1.05q-2.18 0-2.19-2.62V17.6h4.78v-2.63H5.56V10.1H2.74v4.86H0v2.63h2.62v6.74q0 2.06.2 2.78m17.23-9.64q1.33 0 2.88 1.45l1.55-2.57a6 6 0 0 0-3.67-1.68h-.2c-1.02 0-2.73 0-4.11 2.25l-.05.09.01-2.04h-2.95v15.04h2.95v-7.86q0-1.9 1.06-3.29 1.07-1.39 2.53-1.39"/></svg>'
3648
+ /* END MARKETPLACE MARKS */
3649
+ };
3650
+
3651
+ /**
3652
+ * Each site's name, its colour, and its glyph where one exists.
3653
+ *
3654
+ * Amazon's path is Font Awesome's (CC BY 4.0) and AliExpress's and
3655
+ * Rakuten's are Simple Icons' (CC0). Otto had one too and no longer needs
3656
+ * it: the repo now carries Otto's own wordmark, which supersedes a
3657
+ * monochrome tracing of it.
3658
+ *
3659
+ * That leaves Jumia as the only site drawn as initials on a colour — no
3660
+ * asset, no glyph, and a wordmark drawn from memory is a wrong logo rather
3661
+ * than no logo, which is worse because it misattributes a real company's
3662
+ * identity. Either key fixes that: an official SVG in
3663
+ * assets/brand/marketplaces, or a single official path here.
3664
+ *
3665
+ * An <img> is not an option for any of them: this view is one
3666
+ * self-contained file in a sandboxed iframe with no remote fetches, so every
3667
+ * asset is inline or it does not render.
3628
3668
  */
3629
3669
  var MARKET_BRAND={
3630
3670
  amazon:{label:"Amazon",color:"#FF9900",on:"#111"},
3631
- aliexpress:{label:"AliExpress",color:"#E62E04",on:"#fff"},
3671
+ aliexpress:{label:"AliExpress",color:"#FF4747",on:"#fff",path:"M5.166 9.096a.022.022 0 0 0-.022.021c0 .396-.32.717-.713.717a.021.021 0 0 0-.021.022c0 .012.01.021.021.021.394 0 .713.322.713.718 0 .012.01.021.022.021.011 0 .021-.01.021-.021A.717.717 0 0 1 5.9 9.88a.021.021 0 0 0 0-.043.716.716 0 0 1-.713-.718v-.002a.021.021 0 0 0-.006-.015.022.022 0 0 0-.015-.006zm-3.693.526L0 13.462h.48l.355-.922h1.782l.354.922h.481L1.98 9.622zm2.264.002v3.838h.491V9.624zm2.375 0v3.838h2.413v-.502H6.613v-1.19H8.19v-.477H6.613v-1.166h1.773v-.502zm-4.386.592l.698 1.82H1.028zm14.689.402a1.466 1.466 0 0 0-.966.366V10.7h-.491v2.763h.49c.002-.477 0-.955.002-1.433a.969.969 0 0 1 .965-.918zm4.18.007c-.053 0-.105.003-.158.01-.315.031-.606.175-.753.377a.689.689 0 0 0-.14.465c.007.2.066.357.233.496.184.147.42.2.657.259.311.067.426.095.546.186.08.07.133.127.136.27 0 .25-.221.372-.42.41a.89.89 0 0 1-.894-.344l-.371.288c.33.382.777.505 1.09.5.54-.01.891-.217 1.029-.534.066-.153.063-.309.063-.38a.677.677 0 0 0-.267-.545c-.228-.177-.583-.228-.636-.242-.437-.078-.658-.196-.697-.341-.043-.192.102-.35.297-.411a.76.76 0 0 1 .857.277l.367-.247a1.166 1.166 0 0 0-.939-.494zm2.387 0c-.052 0-.105.003-.157.01-.316.031-.607.175-.753.377a.689.689 0 0 0-.14.465c.006.2.065.357.233.496.183.147.42.2.657.259.31.067.426.095.545.186.081.07.134.127.136.27.001.25-.221.372-.42.41a.89.89 0 0 1-.894-.344l-.371.288c.33.382.777.505 1.09.5.541-.01.891-.217 1.03-.534.065-.153.062-.309.062-.38a.677.677 0 0 0-.267-.545c-.227-.177-.583-.228-.636-.242-.437-.078-.658-.196-.696-.341-.043-.192.101-.35.297-.411a.76.76 0 0 1 .857.277l.367-.247a1.167 1.167 0 0 0-.94-.494zm-9.84.002a1.461 1.461 0 0 0-1.42 1.117 1.305 1.305 0 0 0-.041.327v2.833h.491v-1.813c.17.18.487.42.96.454a1.447 1.447 0 0 0 1.208-.627 1.457 1.457 0 0 0-1.199-2.292zm4.804 0a1.448 1.448 0 0 0-1.288 2.08c.255.53.811.87 1.412.833a1.452 1.452 0 0 0 1.012-.51l-.363-.291a.968.968 0 0 1-1.106.273 1.01 1.01 0 0 1-.602-.69h2.239l.002-.427a1.295 1.295 0 0 0-1.306-1.268zm-9.2.08l1.062 1.377-1.062 1.378h.581l.779-1.01.778 1.01h.581l-1.062-1.378 1.062-1.378h-.581l-.778 1.01-.779-1.01zm-3.825.015v2.74h.49v-2.74zm8.233.37a.96.96 0 0 1 .95.993.963.963 0 0 1-.863.998.962.962 0 0 1-1.034-.739c-.074-.382 0-.746.307-1.019a.959.959 0 0 1 .64-.233zm4.79.015a.823.823 0 0 1 .819.755h-1.76a.964.964 0 0 1 .94-.755z"},
3632
3672
  cdiscount:{label:"Cdiscount",color:"#C4161C",on:"#fff"},
3633
3673
  flipkart:{label:"Flipkart",color:"#2874F0",on:"#fff"},
3634
3674
  mercadolibre:{label:"Mercado Libre",color:"#FFE600",on:"#111"},
3635
3675
  lazada:{label:"Lazada",color:"#0F146D",on:"#fff"},
3636
- otto:{label:"Otto",color:"#E4001B",on:"#fff"},
3637
- rakuten:{label:"Rakuten",color:"#BF0000",on:"#fff"},
3676
+ otto:{label:"Otto",color:"#D4021D",on:"#fff"},
3677
+ rakuten:{label:"Rakuten",color:"#BF0000",on:"#fff",path:"M23.277 21.3L3.939 24 .722 21.3h22.555zM7.6 19.276H3.939V0h6.052a6.653 6.653 0 0 1 6.65 6.646c0 2.234-1.108 4.204-2.799 5.418l5.418 7.211h-4.585l-4.486-5.979H7.6v5.98zm0-9.64h2.392a2.992 2.992 0 0 0 2.989-2.989 2.994 2.994 0 0 0-2.989-2.986H7.6v5.975z"},
3638
3678
  trendyol:{label:"Trendyol",color:"#F27A1A",on:"#fff"},
3639
3679
  jumia:{label:"Jumia",color:"#F68B1E",on:"#111"},
3680
+ vinted:{label:"Vinted",color:"#007782",on:"#fff"},
3640
3681
  temu:{label:"Temu",color:"#FB7701",on:"#fff"}
3641
3682
  };
3642
3683
 
@@ -3646,11 +3687,31 @@ export const NOOTICR_UI_TEMPLATE = `<!DOCTYPE html>
3646
3687
  return b?b.label:(name?String(name):"Marketplace");
3647
3688
  }
3648
3689
 
3649
- /** The mark for whichever marketplace a payload came from. */
3690
+ /**
3691
+ * The mark for whichever marketplace a payload came from.
3692
+ *
3693
+ * Every real mark goes on a white tile, whichever of the three sources it
3694
+ * came from. Five of the seven wordmarks are navy or near-black — Mercado
3695
+ * Libre, Lazada, Cdiscount, Trendyol, and Flipkart's lettering — and this
3696
+ * view follows the host's colour scheme, so on a dark host they would be a
3697
+ * logo-shaped hole. Recolouring them is not the fix: a brand's wordmark in
3698
+ * the wrong colour is a wrong logo. The tile is what lets each one stay the
3699
+ * mark its owner ships, and putting the glyphs on it too is what stops the
3700
+ * header looking like two different designs depending on the site.
3701
+ */
3650
3702
  function marketplaceMark(name,size){
3651
3703
  var key=String(name||"").toLowerCase();
3652
- if(key==="amazon")return amazonMark(size);
3653
3704
  var b=MARKET_BRAND[key];
3705
+ var mark=MARKET_LOGO[key]||"";
3706
+ if(!mark&&key==="amazon")mark=amazonMark(size);
3707
+ if(!mark&&b&&b.path){
3708
+ mark='<svg viewBox="0 0 24 24" aria-hidden="true" focusable="false">'
3709
+ +'<path fill="'+b.color+'" d="'+b.path+'"></path></svg>';
3710
+ }
3711
+ if(mark){
3712
+ return '<span class="mkt-logo" style="height:'+size+'px" aria-label="'
3713
+ +esc(marketLabel(name))+'" role="img">'+mark+"</span>";
3714
+ }
3654
3715
  var initials=(b?b.label:String(name||"market")).replace(/[^A-Za-z]/g,"").slice(0,2).toUpperCase();
3655
3716
  return '<span class="mkt-generic" style="display:inline-flex;align-items:center;justify-content:center;'
3656
3717
  +"width:"+size+"px;height:"+size+"px;border-radius:5px;font-weight:800;line-height:1;"
@@ -3679,11 +3740,59 @@ export const NOOTICR_UI_TEMPLATE = `<!DOCTYPE html>
3679
3740
  return '<span class="amz-stars">'+out+"</span>";
3680
3741
  }
3681
3742
 
3743
+ /**
3744
+ * What this scan is priced in.
3745
+ *
3746
+ * Read off the products rather than assumed. A live amazon.de scan drew
3747
+ * "EUR 19.99" on the tile, because the collector sends a formatted price
3748
+ * string, and "$19.99" two inches above it in the rollup, because that one
3749
+ * formats the raw number. Same product, two currencies, one of them wrong —
3750
+ * and wrong on every storefront that is not the US, which is ten of the
3751
+ * eleven sites plus most of Amazon.
3752
+ */
3753
+ function marketCurrency(){
3754
+ var ps=(amazonState&&amazonState.products)||[];
3755
+ for(var i=0;i<ps.length;i++){
3756
+ var c=String(ps[i].currency||"").trim();
3757
+ if(c)return c.length<=3?c:"";
3758
+ }
3759
+ // Deliberately not a regex. This template is embedded in a Rust raw string
3760
+ // AND in a TS template literal, and the literal eats a backslash — so
3761
+ // "[^\d\s.,]" arrives as "[^ds.,]", which does not exclude digits and
3762
+ // matched "EUR19" out of "EUR19.99", printing "median EUR1919.99". The
3763
+ // file already carries one comment about this trap; this is the second
3764
+ // time it has been paid for.
3765
+ for(var j=0;j<ps.length;j++){
3766
+ var t=String(ps[j].price||"").replace(/^ +/,"");
3767
+ var sym="";
3768
+ for(var k=0;k<t.length&&sym.length<3;k++){
3769
+ var ch=t.charAt(k);
3770
+ if(ch>="0"&&ch<="9")break;
3771
+ if(ch===" "||ch==="."||ch===",")break;
3772
+ sym+=ch;
3773
+ }
3774
+ if(sym)return sym;
3775
+ }
3776
+ return "$";
3777
+ }
3778
+
3779
+ /**
3780
+ * A symbol butts against its number and a code does not: "€19.99", but
3781
+ * "SGD 49.90". Getting this one wrong is what made the rollup read
3782
+ * "€ 19.99" two inches under a tile saying "€19.99".
3783
+ */
3784
+ function joinPrice(cur,v){
3785
+ var n=Number(v).toFixed(2);
3786
+ return /^[A-Za-z]{2,3}$/.test(cur)?(cur+" "+n):(cur+n);
3787
+ }
3788
+
3789
+ /** A price, preferring the string the collector already formatted. */
3682
3790
  function money(p){
3683
3791
  var t=String(p.price||"");
3684
3792
  if(t)return t;
3685
3793
  var v=Number(p.priceValue);
3686
- return v?("$"+v.toFixed(2)):"";
3794
+ if(!v)return "";
3795
+ return joinPrice(marketCurrency(),v);
3687
3796
  }
3688
3797
 
3689
3798
  /** A percent string ("73%") as a number, or null. */
@@ -3896,8 +4005,10 @@ export const NOOTICR_UI_TEMPLATE = `<!DOCTYPE html>
3896
4005
  var rating=r.rating||{};
3897
4006
  var cells=[];
3898
4007
  if(price.min!=null&&price.max!=null){
3899
- cells.push(["Price", "$"+Number(price.min).toFixed(2)+" – $"+Number(price.max).toFixed(2),
3900
- price.median!=null?("median $"+Number(price.median).toFixed(2)):""]);
4008
+ var cur=marketCurrency();
4009
+ var amt=function(v){return joinPrice(cur,v);};
4010
+ cells.push(["Price", amt(price.min)+" – "+amt(price.max),
4011
+ price.median!=null?("median "+amt(price.median)):""]);
3901
4012
  }
3902
4013
  if(rating.mean!=null){
3903
4014
  cells.push(["Rating", String(rating.mean),
@@ -3991,7 +4102,7 @@ export const NOOTICR_UI_TEMPLATE = `<!DOCTYPE html>
3991
4102
  var prog=s.progress||{};
3992
4103
  var sub=n+" listing"+(n===1?"":"s")+" · "+reviews+" review"+(reviews===1?"":"s")+" read";
3993
4104
  return '<div class="amz-head">'
3994
- +'<span class="amz-mark">'+marketplaceMark(s.marketplace,22)+"</span>"
4105
+ +'<span class="amz-mark">'+marketplaceMark(s.marketplace,34)+"</span>"
3995
4106
  +'<div class="amz-head-text">'
3996
4107
  +'<div class="amz-head-title">'+esc(s.title||"Category scan")+"</div>"
3997
4108
  +'<div class="amz-head-sub">'+esc(marketDomain(s.domain))+" · "+esc(sub)+"</div>"
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@nooticr/mcp",
3
3
  "mcpName": "com.nooticr/mcp",
4
- "version": "1.26.38",
4
+ "version": "1.26.40",
5
5
  "description": "MCP server for nooticr - fetch, discover and understand TikTok/Instagram/YouTube/X/Reddit/LinkedIn/Weibo posts with AI (media metadata, niche discovery, brand monitoring, hook & viral analysis)",
6
6
  "homepage": "https://mcp.nooticr.com",
7
7
  "repository": {