@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 +2 -2
- package/dist/shared/amazon.js +49 -2
- package/dist/shared/marketplace.js +54 -5
- package/dist/shared/tools.js +1 -1
- package/dist/shared/ui-template.js +128 -17
- package/package.json +1 -1
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
|
|
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
|
|
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
|
package/dist/shared/amazon.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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. " +
|
package/dist/shared/tools.js
CHANGED
|
@@ -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.
|
|
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
|
-
*
|
|
3620
|
+
* The seven wordmarks Simple Icons does not carry, as their own SVG files.
|
|
3621
3621
|
*
|
|
3622
|
-
*
|
|
3623
|
-
*
|
|
3624
|
-
*
|
|
3625
|
-
*
|
|
3626
|
-
*
|
|
3627
|
-
*
|
|
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:"#
|
|
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:"#
|
|
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
|
-
/**
|
|
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
|
-
|
|
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
|
-
|
|
3900
|
-
|
|
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,
|
|
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.
|
|
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": {
|