@primestyleai/tryon 5.10.126 → 5.10.127

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-Dp72UhB4.js","sources":["../src/session.ts","../src/api-client.ts","../src/sse-client.ts","../src/image-utils.ts","../src/i18n.ts","../src/locales/ja.ts","../src/locales/ko.ts","../src/locales/zh.ts","../src/locales/es.ts","../src/locales/fr.ts","../src/locales/de.ts","../src/locales/it.ts","../src/locales/pt.ts","../src/locales/nl.ts","../src/locales/ru.ts","../src/locales/ar.ts","../src/locales/tr.ts","../src/locales/pl.ts","../src/locales/sv.ts","../src/locales/da.ts","../src/locales/nb.ts","../src/locales/fi.ts","../src/locales/th.ts","../src/locales/vi.ts","../src/locales/index.ts"],"sourcesContent":["/**\n * Anonymous storefront session tracking.\n *\n * A single UUID per browser, persisted in localStorage with a sliding 30-day\n * expiry. Attached to every try-on / sizing / event call the SDK makes so the\n * backend can stitch a customer's actions together without ever knowing their\n * identity.\n */\n\nconst STORAGE_KEY = \"ps_session\";\nconst MAX_AGE_MS = 30 * 24 * 60 * 60 * 1000; // 30 days\nconst FALLBACK_PREFIX = \"ps_mem_\";\n\nlet memoryFallback: SessionRecord | null = null;\n\ninterface SessionRecord {\n\tid: string;\n\tissuedAt: number;\n\tlastSeenAt: number;\n}\n\nfunction hasLocalStorage(): boolean {\n\ttry {\n\t\treturn typeof window !== \"undefined\" && typeof window.localStorage !== \"undefined\";\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction uuid(): string {\n\t// Prefer crypto.randomUUID when available. Fall back to a good-enough v4\n\t// based on Math.random — this is an opaque anonymous id, not a security token.\n\tif (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n\t\treturn crypto.randomUUID();\n\t}\n\tconst chars = \"0123456789abcdef\";\n\tlet out = FALLBACK_PREFIX;\n\tfor (let i = 0; i < 32; i++) out += chars[Math.floor(Math.random() * 16)];\n\treturn out;\n}\n\nfunction readRecord(): SessionRecord | null {\n\tif (!hasLocalStorage()) return memoryFallback;\n\ttry {\n\t\tconst raw = window.localStorage.getItem(STORAGE_KEY);\n\t\tif (!raw) return null;\n\t\tconst parsed = JSON.parse(raw) as Partial<SessionRecord>;\n\t\tif (typeof parsed.id !== \"string\" || typeof parsed.issuedAt !== \"number\") return null;\n\t\treturn {\n\t\t\tid: parsed.id,\n\t\t\tissuedAt: parsed.issuedAt,\n\t\t\tlastSeenAt: typeof parsed.lastSeenAt === \"number\" ? parsed.lastSeenAt : parsed.issuedAt,\n\t\t};\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nfunction writeRecord(record: SessionRecord): void {\n\tmemoryFallback = record;\n\tif (!hasLocalStorage()) return;\n\ttry {\n\t\twindow.localStorage.setItem(STORAGE_KEY, JSON.stringify(record));\n\t} catch {\n\t\t// Quota full / disabled — keep memory fallback.\n\t}\n}\n\n/**\n * Return the current session id, creating one if absent or expired.\n * Safe to call repeatedly — cheap local-storage read + occasional write.\n */\nexport function getOrCreateSessionId(): string {\n\tconst now = Date.now();\n\tconst existing = readRecord();\n\tif (existing && now - existing.lastSeenAt < MAX_AGE_MS) {\n\t\t// Slide the expiry forward, but don't write more than once per 5 minutes.\n\t\tif (now - existing.lastSeenAt > 5 * 60 * 1000) {\n\t\t\twriteRecord({ ...existing, lastSeenAt: now });\n\t\t}\n\t\treturn existing.id;\n\t}\n\tconst fresh: SessionRecord = { id: uuid(), issuedAt: now, lastSeenAt: now };\n\twriteRecord(fresh);\n\treturn fresh.id;\n}\n\n/**\n * Best-effort device hint derived from userAgent. The backend has a full\n * UA parser; this is purely for servers that fall back to client-reported\n * hints (e.g. rate-limited environments with no UA header).\n */\nexport function getDeviceHint(): \"mobile\" | \"tablet\" | \"desktop\" | null {\n\tif (typeof navigator === \"undefined\") return null;\n\tconst ua = (navigator.userAgent || \"\").toLowerCase();\n\tif (/ipad|tablet|(android(?!.*mobile))/.test(ua)) return \"tablet\";\n\tif (/mobile|android|iphone|ipod|blackberry|iemobile|opera mini/.test(ua)) return \"mobile\";\n\treturn \"desktop\";\n}\n","import type { TryOnResponse, TryOnStatus, FitAreaInfo } from \"./types\";\nimport { getOrCreateSessionId, getDeviceHint } from \"./session\";\n\nconst DEFAULT_API_URL = \"http://localhost:4000\";\n\nexport interface TryOnContext {\n /** Storefront product the customer is currently viewing — shown in analytics. */\n productId?: string;\n productTitle?: string;\n /** Free-text product description forwarded to the try-on prompt so Gemini\n * knows the garment context (e.g. \"Brown slip maxi dress, spaghetti straps\"). */\n productDescription?: string;\n /** Material / fabric composition (e.g. \"100% Cotton\", \"60% Polyester / 40% Polyester\")\n * — forwarded to the prompt so Gemini drapes the fabric correctly without\n * having to guess from the image alone. */\n productMaterial?: string;\n /** Optional silhouette-prompt context forwarded to the backend Gemini try-on\n * call. Enables doc-example-grade fit reasoning (\"X tension at button\n * because waist 54.4 exceeds size 50 drop\"). All fields optional. */\n silhouetteContext?: {\n recommendedSize?: string;\n sizeChartSummary?: string;\n userMeasurementsText?: string;\n };\n /** True when `modelImage` is a previous try-on result rather than the\n * user's raw photo. Switches the backend to an edit-mode prompt that\n * preserves accessories (socks, ties, pocket squares, cufflinks, shoes)\n * the prior call already painted, instead of re-deriving them. */\n editFromPrevious?: boolean;\n /** Backend-cached photo id from a previous /tryon response. When provided\n * the SDK may pass an empty `modelImage` (or omit it) and the backend\n * will use the cached photo. Saves uploading 700–900 KB on every regen\n * AND guarantees byte-identical photo across regens (no JPEG-recompression\n * drift). On cache miss the SDK should fall back to sending the full image. */\n modelImageId?: string;\n}\n\nexport class ApiClient {\n private apiKey: string;\n private baseUrl: string;\n\n constructor(apiKey: string, apiUrl?: string) {\n this.apiKey = apiKey;\n this.baseUrl = (apiUrl || DEFAULT_API_URL).replace(/\\/+$/, \"\");\n }\n\n private get headers(): Record<string, string> {\n return {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${this.apiKey}`,\n };\n }\n\n async submitTryOn(\n modelImage: string,\n garmentImage: string,\n fitInfo?: FitAreaInfo[],\n category?: \"apparel\" | \"hat\" | \"sunglasses\",\n context?: TryOnContext\n ): Promise<TryOnResponse> {\n const body: Record<string, unknown> = {\n garmentImage,\n // Attribution fields — backend logs these into the TryOnEvent collection\n // so non-technical operators can answer \"which products are being tried on\n // and by how many customers\". Safe fallbacks when absent.\n sessionId: getOrCreateSessionId(),\n deviceHint: getDeviceHint(),\n };\n // When we already have a backend-cached photo id, send only that — the\n // backend will reuse the same canonical bytes for every regen. modelImage\n // is still sent if present so the backend can fall back gracefully on a\n // cache miss (e.g. across PM2 worker boundaries or after the 1h TTL).\n if (context?.modelImageId) body.modelImageId = context.modelImageId;\n if (modelImage) body.modelImage = modelImage;\n if (fitInfo && fitInfo.length > 0) body.fitInfo = fitInfo;\n if (category && category !== \"apparel\") body.category = category;\n if (context?.productId) body.productId = context.productId;\n if (context?.productTitle) body.productTitle = context.productTitle;\n if (context?.productDescription) body.productDescription = context.productDescription;\n if (context?.productMaterial) body.productMaterial = context.productMaterial;\n if (context?.silhouetteContext) body.silhouetteContext = context.silhouetteContext;\n if (context?.editFromPrevious) body.editFromPrevious = true;\n console.log(\"[ps-sdk:api] POST /api/v1/tryon payload\", {\n modelImageBytes: modelImage.length,\n garmentImageBytes: garmentImage.length,\n category: category || \"apparel\",\n fitInfo: fitInfo?.map(f => ({\n area: f.area,\n fit: f.fit,\n userValue: f.userValue,\n garmentRange: f.garmentRange,\n })) || null,\n silhouetteContext: context?.silhouetteContext || null,\n });\n // Single-glance table of what Gemini will see per body area. Makes it\n // trivial to eyeball \"my inseam pick is 30, my body is 32.5 — is that\n // what actually left the browser?\" without parsing the JSON above.\n if (fitInfo && fitInfo.length > 0) {\n console.log(\"[ps-sdk:api] Body vs Garment (what Gemini will see):\");\n for (const f of fitInfo) {\n const parts = (f.garmentRange || \"\").replace(/[^\\d.\\-–]/g, \" \").trim().split(/[\\s\\-–]+/).filter(Boolean).map(Number).filter(n => !isNaN(n));\n let gap = \"\";\n if (parts.length && f.userValue != null) {\n const mid = (Math.min(...parts) + Math.max(...parts)) / 2;\n const diff = Math.round((f.userValue - mid) * 10) / 10;\n gap = diff > 0 ? `garment ${diff} smaller` : diff < 0 ? `garment ${Math.abs(diff)} larger` : \"matched\";\n }\n console.log(`[ps-sdk:api] ${f.area.padEnd(10)} body=${f.userValue ?? \"?\"} garment=${f.garmentRange ?? \"?\"} → ${gap}`);\n }\n }\n const res = await fetch(`${this.baseUrl}/api/v1/tryon`, {\n method: \"POST\",\n headers: this.headers,\n body: JSON.stringify(body),\n });\n\n if (!res.ok) {\n const data = await res.json().catch(() => ({}));\n if (res.status === 402) {\n throw new PrimeStyleError(\n data.message || \"Insufficient try-ons\",\n \"INSUFFICIENT_BALANCE\"\n );\n }\n throw new PrimeStyleError(\n data.message || \"Failed to submit try-on\",\n \"API_ERROR\"\n );\n }\n\n return res.json();\n }\n\n async getStatus(jobId: string): Promise<TryOnStatus> {\n const res = await fetch(`${this.baseUrl}/api/v1/tryon/status/${jobId}`, {\n headers: this.headers,\n });\n\n if (!res.ok) {\n const data = await res.json().catch(() => ({}));\n throw new PrimeStyleError(\n data.message || \"Failed to get status\",\n \"API_ERROR\"\n );\n }\n\n return res.json();\n }\n\n getStreamUrl(): string {\n return `${this.baseUrl}/api/v1/tryon/stream?key=${encodeURIComponent(this.apiKey)}`;\n }\n}\n\nexport class PrimeStyleError extends Error {\n code: string;\n constructor(message: string, code: string) {\n super(message);\n this.name = \"PrimeStyleError\";\n this.code = code;\n }\n}\n","import type { VtoUpdate } from \"./types\";\n\ntype VtoUpdateCallback = (update: VtoUpdate) => void;\n\nexport class SseClient {\n private eventSource: EventSource | null = null;\n private streamUrl: string;\n private listeners: Map<string, Set<VtoUpdateCallback>> = new Map();\n private reconnectTimer: ReturnType<typeof setTimeout> | null = null;\n private reconnectAttempts = 0;\n private maxReconnectAttempts = 5;\n\n constructor(streamUrl: string) {\n this.streamUrl = streamUrl;\n }\n\n connect(): void {\n if (this.eventSource) return;\n\n this.eventSource = new EventSource(this.streamUrl);\n\n this.eventSource.addEventListener(\"vto-update\", (event) => {\n try {\n const data: VtoUpdate = JSON.parse(event.data);\n this.emit(data.galleryId, data);\n } catch {\n // ignore malformed events\n }\n });\n\n this.eventSource.onopen = () => {\n this.reconnectAttempts = 0;\n };\n\n this.eventSource.onerror = () => {\n this.eventSource?.close();\n this.eventSource = null;\n this.scheduleReconnect();\n };\n }\n\n private scheduleReconnect(): void {\n if (this.reconnectAttempts >= this.maxReconnectAttempts) return;\n if (this.listeners.size === 0) return;\n\n const delay = Math.min(1000 * 2 ** this.reconnectAttempts, 30000);\n this.reconnectAttempts++;\n\n this.reconnectTimer = setTimeout(() => {\n this.connect();\n }, delay);\n }\n\n onJob(jobId: string, callback: VtoUpdateCallback): () => void {\n if (!this.listeners.has(jobId)) {\n this.listeners.set(jobId, new Set());\n }\n this.listeners.get(jobId)!.add(callback);\n\n // Auto-connect if not already connected\n if (!this.eventSource) {\n this.connect();\n }\n\n // Return unsubscribe function\n return () => {\n const jobListeners = this.listeners.get(jobId);\n if (jobListeners) {\n jobListeners.delete(callback);\n if (jobListeners.size === 0) {\n this.listeners.delete(jobId);\n }\n }\n // Auto-disconnect if no more listeners\n if (this.listeners.size === 0) {\n this.disconnect();\n }\n };\n }\n\n private emit(jobId: string, update: VtoUpdate): void {\n const callbacks = this.listeners.get(jobId);\n if (callbacks) {\n callbacks.forEach((cb) => cb(update));\n }\n }\n\n disconnect(): void {\n if (this.reconnectTimer) {\n clearTimeout(this.reconnectTimer);\n this.reconnectTimer = null;\n }\n if (this.eventSource) {\n this.eventSource.close();\n this.eventSource = null;\n }\n this.listeners.clear();\n this.reconnectAttempts = 0;\n }\n}\n","const DEFAULT_MAX_DIMENSION = 512;\nconst DEFAULT_JPEG_QUALITY = 0.65;\n\nexport interface CompressOptions {\n /** Longest side, in pixels. Default 512. Raise for close-up photos\n * (face / head) where the product's detail IS on the face — 1536 gives\n * the try-on model enough pixels to render sharp frame edges. */\n maxDimension?: number;\n /** JPEG quality, 0–1. Default 0.65. Raise to 0.85+ for close-ups so the\n * face region isn't macroblocked before Gemini renders the frame. */\n quality?: number;\n}\n\n/** Compresses and resizes an image file, returns a base64 data URL. */\nexport function compressImage(file: File, opts: CompressOptions = {}): Promise<string> {\n const maxDim = opts.maxDimension ?? DEFAULT_MAX_DIMENSION;\n const quality = opts.quality ?? DEFAULT_JPEG_QUALITY;\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n const img = new Image();\n img.onload = () => {\n try {\n const canvas = document.createElement(\"canvas\");\n let { width, height } = img;\n\n if (width > maxDim || height > maxDim) {\n if (width > height) {\n height = Math.round((height * maxDim) / width);\n width = maxDim;\n } else {\n width = Math.round((width * maxDim) / height);\n height = maxDim;\n }\n }\n\n canvas.width = width;\n canvas.height = height;\n\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n reject(new Error(\"Canvas context not available\"));\n return;\n }\n\n ctx.drawImage(img, 0, 0, width, height);\n const dataUrl = canvas.toDataURL(\"image/jpeg\", quality);\n resolve(dataUrl);\n } catch (err) {\n reject(err);\n }\n };\n img.onerror = () => reject(new Error(\"Failed to load image\"));\n img.src = reader.result as string;\n };\n reader.onerror = () => reject(new Error(\"Failed to read file\"));\n reader.readAsDataURL(file);\n });\n}\n\n/** Validates that a file is an accepted image type. AVIF is accepted for\n * upload — Gemini's API doesn't support AVIF directly, but compressImage\n * re-encodes the canvas as JPEG before we ship it, so AVIF inputs land as\n * JPEG on the wire. */\nexport function isValidImageFile(file: File): boolean {\n const accepted = [\"image/jpeg\", \"image/png\", \"image/webp\", \"image/avif\"];\n return accepted.includes(file.type);\n}\n\n/**\n * Pre-upload age check. Sends the photo to the backend's\n * /api/v1/sizing/age-check endpoint. Backend uses Gemini Flash-Lite to\n * classify whether the subject is 18+. The bytes are NOT persisted by the\n * backend (no disk write, no logging of full base64).\n *\n * Accepts EITHER a File OR a base64 data URL. When a File is provided we\n * compress it to a tight 384px / 60% JPEG thumb on the way out — Gemini\n * Flash-Lite only needs facial maturity, not pixel detail, and a smaller\n * payload trims a noticeable chunk of network + decode latency end-to-end.\n *\n * Fail-open: if the network call errors or the backend is unreachable, we\n * return isAdult=true so a network hiccup doesn't block legitimate users.\n * The existing self-cert checkbox is the defense-in-depth fallback.\n */\nexport async function checkAgeBeforeUpload(\n imageOrBase64: string | File,\n apiUrl: string,\n apiKey: string,\n): Promise<{ isAdult: boolean; confidence: \"high\" | \"low\"; reasoning?: string }> {\n try {\n const base64 = typeof imageOrBase64 === \"string\"\n ? imageOrBase64\n : await compressImage(imageOrBase64, { maxDimension: 384, quality: 0.6 });\n const resp = await fetch(`${apiUrl}/api/v1/sizing/age-check`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${apiKey}`,\n },\n body: JSON.stringify({ bodyImage: base64 }),\n });\n if (!resp.ok) {\n console.warn(`[PS-SDK:AgeCheck] HTTP ${resp.status} — failing open`);\n return { isAdult: true, confidence: \"low\" };\n }\n const data = await resp.json();\n return {\n isAdult: data?.isAdult !== false, // anything other than explicit false → allow\n confidence: data?.confidence === \"high\" ? \"high\" : \"low\",\n reasoning: typeof data?.reasoning === \"string\" ? data.reasoning : undefined,\n };\n } catch (err) {\n console.warn(`[PS-SDK:AgeCheck] error — failing open:`, err);\n return { isAdult: true, confidence: \"low\" };\n }\n}\n","/**\n * i18n — lightweight pass-through translation module.\n *\n * English keys are used as-is (the key IS the English text).\n * Additional languages can be registered at runtime via `registerLocale()`.\n */\n\nexport type TranslateFn = (key: string) => string;\n\n// ── Locale registry ────────────────────────────────\nconst localeRegistry: Record<string, Record<string, string>> = {};\n\nexport function registerLocale(code: string, translations: Record<string, string>): void {\n localeRegistry[code] = { ...(localeRegistry[code] || {}), ...translations };\n}\n\n/**\n * Create a translate function for a given locale.\n * For \"en\" (or when no locale pack is registered), the key itself is the English text.\n */\nexport function createT(locale?: string): TranslateFn {\n const code = locale?.toLowerCase().split(\"-\")[0] || \"en\";\n return (key: string): string => {\n if (code === \"en\" || !localeRegistry[code]) return key;\n return localeRegistry[code][key] ?? key;\n };\n}\n\n/**\n * Detect the best locale from the browser environment.\n */\nexport function detectLanguage(): string {\n if (typeof navigator === \"undefined\") return \"en\";\n const lang = navigator.language || (navigator as any).userLanguage || \"en\";\n return lang.split(\"-\")[0].toLowerCase();\n}\n\n// ── Supported locales ──────────────────────────────\nexport const SUPPORTED_LOCALES: string[] = [\n \"en\", \"ja\", \"ko\", \"zh\", \"es\", \"fr\", \"de\", \"it\", \"pt\",\n \"nl\", \"ru\", \"ar\", \"tr\", \"pl\", \"sv\", \"da\", \"nb\", \"fi\", \"th\", \"vi\",\n];\n\nexport const LOCALE_LABELS: Record<string, string> = {\n en: \"English\",\n ja: \"日本語\",\n ko: \"한국어\",\n zh: \"中文\",\n es: \"Español\",\n fr: \"Français\",\n de: \"Deutsch\",\n it: \"Italiano\",\n pt: \"Português\",\n nl: \"Nederlands\",\n ru: \"Русский\",\n ar: \"العربية\",\n tr: \"Türkçe\",\n pl: \"Polski\",\n sv: \"Svenska\",\n da: \"Dansk\",\n nb: \"Norsk\",\n fi: \"Suomi\",\n th: \"ไทย\",\n vi: \"Tiếng Việt\",\n};\n\n// ── Translation keys ───────────────────────────────\n// All translatable UI strings used in the React component.\nexport const TRANSLATION_KEYS: string[] = [\n \"Virtual Try-On\",\n \"Find Your Size & See It On You\",\n \"Get the perfect fit, then try it on virtually\",\n \"Get Your Size\",\n \"Instant fit recommendation\",\n \"Try It On\",\n \"See how it looks on you\",\n \"Find My Size\",\n \"Takes less than a minute\",\n \"Upload a full body photo\",\n \"JPEG, PNG or WebP (max 10MB)\",\n \"Your photo\",\n \"Let's find your best fit\",\n \"Centimeters\",\n \"Inches\",\n \"Load saved profile...\",\n \"HEIGHT\",\n \"WEIGHT\",\n \"feet\",\n \"inches\",\n \"cm\",\n \"kg\",\n \"How to measure\",\n \"Hide guide\",\n \"I know my measurements\",\n \"Not sure? Use height & weight instead\",\n \"Please fill in height and weight\",\n \"Please fill in all required fields\",\n \"Next\",\n \"Analyzing your size...\",\n \"RECOMMENDED SIZE\",\n \"NOT RECOMMENDED\",\n \"Edit measurements\",\n \"Size guide\",\n \"Your fit\",\n \"Your measure\",\n \"perfect fit\",\n \"too tight\",\n \"tight\",\n \"a bit tight\",\n \"too loose\",\n \"loose\",\n \"a bit loose\",\n \"See fit on your photo\",\n \"Hide visual fit\",\n \"Analyzing...\",\n \"Try it on\",\n \"SIZE CHART\",\n \"YOUR ESTIMATED MEASUREMENTS\",\n \"Edit\",\n \"Download\",\n \"Size chart\",\n \"Preparing your image...\",\n \"Analyzing body proportions...\",\n \"Matching garment to your photo...\",\n \"Generating virtual try-on...\",\n \"Refining details...\",\n \"Almost there...\",\n \"Complete!\",\n \"This usually takes 15-25 seconds\",\n \"Something went wrong\",\n \"Try Again\",\n \"SDK not configured. Please provide an API key.\",\n \"Please upload a JPEG, PNG, or WebP image.\",\n \"Image must be under 10MB.\",\n \"Try-on generation failed\",\n \"Failed to start try-on\",\n \"No product image found. Please set the product-image attribute.\",\n \"Powered by\",\n \"My Profiles\",\n \"History\",\n \"No saved profiles yet.\",\n \"No history yet.\",\n \"Product\",\n \"Women's\",\n \"Men's\",\n \"Profiles\",\n \"Women's Profile\",\n \"Men's Profile\",\n \"Height\",\n \"Weight\",\n \"Chest\",\n \"Bust\",\n \"Waist\",\n \"Hips\",\n \"Shoulders\",\n \"Sleeve\",\n \"Inseam\",\n \"Neck\",\n \"Foot\",\n \"Shoe EU\",\n \"Shoe US\",\n \"Shoe UK\",\n \"Saved\",\n \"Delete Profile\",\n \"Shoe size (US)\",\n \"Shoe size (UK)\",\n \"Shoe size (EU)\",\n \"Generating...\",\n \"Foot length\",\n \"Size\",\n \"Try on size\",\n \"lbs\",\n \"in\",\n \"e.g.\",\n \"Drop your photo here or click to upload\",\n \"This usually takes 15-20 seconds\",\n \"Try-on result\",\n \"Try Another\",\n \"Back\",\n \"You\",\n \"Garment\",\n \"Your Height\",\n \"Your Weight\",\n \"Drag or scroll to set your height\",\n \"Drag or scroll to set your weight\",\n \"Enter height and weight first\",\n // ── Field labels (FaceSizeView, HeadSizeView, FootSizeView, accessory) ──\n \"Lens Width\",\n \"Bridge\",\n \"Arm Length\",\n \"Head Circumference\",\n \"Face Width\",\n \"Temple\",\n \"Around widest point\",\n \"Foot Length\",\n \"Chest\",\n \"Waist\",\n \"Hips\",\n \"Shoulder\",\n \"Sleeve\",\n \"Neck\",\n \"Inseam\",\n \"Thigh\",\n \"Hip\",\n // ── Units ──\n \"Centimeters\",\n \"Inches\",\n \"Millimetre\",\n \"Centimetre\",\n \"Millimeters\",\n // ── Fit descriptors ──\n \"Tight\",\n \"Loose\",\n \"Short\",\n \"Long\",\n \"Perfect\",\n \"Perfect fit\",\n \"✓ Fit\",\n // Lowercase variants used inline by fitLabelFn / lengthFitLabelFn\n \"tight\", \"loose\", \"short\", \"long\",\n \"perfect fit\",\n \"too tight\", \"a bit tight\",\n \"too loose\", \"a bit loose\",\n \"too short\", \"a bit short\",\n \"too long\", \"a bit long\",\n // ── Misc ──\n \"Product\",\n \"preview\",\n \"Length\",\n \"Length Adjustment\",\n \"Regular\",\n \"Big\",\n \"Big & Tall\",\n];\n","const ja: Record<string, string> = {\n \"Virtual Try-On\": \"バーチャル試着\",\n \"Find Your Size & See It On You\": \"あなたのサイズを見つけて試着\",\n \"Get the perfect fit, then try it on virtually\": \"最適なフィットを見つけて、バーチャルで試着しましょう\",\n \"Get Your Size\": \"サイズを確認\",\n \"Instant fit recommendation\": \"瞬時にフィット提案\",\n \"Try It On\": \"試着する\",\n \"See how it looks on you\": \"自分に似合うか確認\",\n \"Find My Size\": \"自分のサイズを見つける\",\n \"Takes less than a minute\": \"1分もかかりません\",\n \"Upload a full body photo\": \"全身写真をアップロード\",\n \"JPEG, PNG or WebP (max 10MB)\": \"JPEG、PNG、WebP(最大10MB)\",\n \"Your photo\": \"あなたの写真\",\n \"Let's find your best fit\": \"最適なフィットを見つけましょう\",\n \"Centimeters\": \"センチメートル\",\n \"Inches\": \"インチ\",\n \"Load saved profile...\": \"保存済みプロファイルを読み込む...\",\n \"HEIGHT\": \"身長\",\n \"WEIGHT\": \"体重\",\n \"feet\": \"フィート\",\n \"inches\": \"インチ\",\n \"cm\": \"cm\",\n \"kg\": \"kg\",\n \"lbs\": \"ポンド\",\n \"in\": \"インチ\",\n \"How to measure\": \"測り方\",\n \"Hide guide\": \"ガイドを隠す\",\n \"I know my measurements\": \"自分の寸法を知っています\",\n \"Not sure? Use height & weight instead\": \"分からない場合は身長と体重で\",\n \"Please fill in height and weight\": \"身長と体重を入力してください\",\n \"Please fill in all required fields\": \"すべての必須項目を入力してください\",\n \"Next\": \"次へ\",\n \"Analyzing your size...\": \"サイズを分析中...\",\n \"RECOMMENDED SIZE\": \"推奨サイズ\",\n \"NOT RECOMMENDED\": \"非推奨\",\n \"Edit measurements\": \"寸法を編集\",\n \"Size guide\": \"サイズガイド\",\n \"Your fit\": \"あなたのフィット\",\n \"Your measure\": \"あなたの寸法\",\n \"perfect fit\": \"ぴったり\",\n \"too tight\": \"きつすぎる\",\n \"tight\": \"きつい\",\n \"a bit tight\": \"少しきつい\",\n \"too loose\": \"ゆるすぎる\",\n \"loose\": \"ゆるい\",\n \"a bit loose\": \"少しゆるい\",\n \"See fit on your photo\": \"写真でフィットを確認\",\n \"Hide visual fit\": \"フィット表示を隠す\",\n \"Analyzing...\": \"分析中...\",\n \"Try it on\": \"試着する\",\n \"SIZE CHART\": \"サイズ表\",\n \"YOUR ESTIMATED MEASUREMENTS\": \"推定寸法\",\n \"Edit\": \"編集\",\n \"Download\": \"ダウンロード\",\n \"Size chart\": \"サイズ表\",\n \"Preparing your image...\": \"画像を準備中...\",\n \"Analyzing body proportions...\": \"体型を分析中...\",\n \"Matching garment to your photo...\": \"衣類を写真に合わせています...\",\n \"Generating virtual try-on...\": \"バーチャル試着を生成中...\",\n \"Refining details...\": \"細部を調整中...\",\n \"Almost there...\": \"もう少しです...\",\n \"Complete!\": \"完了!\",\n \"This usually takes 15-25 seconds\": \"通常15〜25秒かかります\",\n \"Something went wrong\": \"エラーが発生しました\",\n \"Try Again\": \"もう一度試す\",\n \"SDK not configured. Please provide an API key.\": \"SDKが設定されていません。APIキーを入力してください。\",\n \"Please upload a JPEG, PNG, or WebP image.\": \"JPEG、PNG、WebP画像をアップロードしてください。\",\n \"Image must be under 10MB.\": \"画像は10MB以下にしてください。\",\n \"Try-on generation failed\": \"試着の生成に失敗しました\",\n \"Failed to start try-on\": \"試着の開始に失敗しました\",\n \"No product image found. Please set the product-image attribute.\": \"商品画像が見つかりません。product-image属性を設定してください。\",\n \"Powered by\": \"Powered by\",\n \"My Profiles\": \"マイプロファイル\",\n \"History\": \"履歴\",\n \"No saved profiles yet.\": \"保存済みプロファイルはありません。\",\n \"No history yet.\": \"履歴はまだありません。\",\n \"Product\": \"商品\",\n \"Women's\": \"レディース\",\n \"Men's\": \"メンズ\",\n \"Profiles\": \"プロファイル\",\n \"Women's Profile\": \"レディースプロファイル\",\n \"Men's Profile\": \"メンズプロファイル\",\n \"Height\": \"身長\",\n \"Weight\": \"体重\",\n \"Chest\": \"胸囲\",\n \"Bust\": \"バスト\",\n \"Waist\": \"ウエスト\",\n \"Hips\": \"ヒップ\",\n \"Shoulders\": \"肩幅\",\n \"Sleeve\": \"袖丈\",\n \"Inseam\": \"股下\",\n \"Neck\": \"首周り\",\n \"Foot\": \"足\",\n \"Shoe EU\": \"靴 EU\",\n \"Shoe US\": \"靴 US\",\n \"Shoe UK\": \"靴 UK\",\n \"Saved\": \"保存済み\",\n \"Delete Profile\": \"プロファイルを削除\",\n \"Shoe size (US)\": \"靴のサイズ(US)\",\n \"Shoe size (UK)\": \"靴のサイズ(UK)\",\n \"Shoe size (EU)\": \"靴のサイズ(EU)\",\n \"Generating...\": \"生成中...\",\n \"Foot length\": \"足の長さ\",\n \"Size\": \"サイズ\",\n \"Try on size\": \"サイズを試着\",\n \"e.g.\": \"例\",\n \"Drop your photo here or click to upload\": \"ここに写真をドロップまたはクリックしてアップロード\",\n \"This usually takes 15-20 seconds\": \"通常15〜20秒かかります\",\n \"Try-on result\": \"試着結果\",\n \"Try Another\": \"別のものを試す\",\n \"Back\": \"戻る\",\n \"You\": \"あなた\",\n \"Garment\": \"衣類\",\n \"Your Height\": \"身長\",\n \"Your Weight\": \"体重\",\n \"Drag or scroll to set your height\": \"ドラッグまたはスクロールで身長を設定\",\n \"Drag or scroll to set your weight\": \"ドラッグまたはスクロールで体重を設定\",\n \"Enter height and weight first\": \"先に身長と体重を入力してください\",\n\n // ── Field labels ──\n \"Lens Width\": \"レンズ幅\",\n \"Bridge\": \"ブリッジ\",\n \"Arm Length\": \"テンプル長\",\n \"Head Circumference\": \"頭囲\",\n \"Face Width\": \"顔幅\",\n \"Temple\": \"テンプル\",\n \"Around widest point\": \"最も広い部分の周囲\",\n \"Foot Length\": \"足長\",\n \"Shoulder\": \"肩幅\",\n \"Thigh\": \"太もも\",\n \"Hip\": \"ヒップ\",\n\n // ── Units ──\n \"Millimetre\": \"ミリメートル\",\n \"Centimetre\": \"センチメートル\",\n \"Millimeters\": \"ミリメートル\",\n\n // ── Fit descriptors ──\n \"Tight\": \"きつい\",\n \"Loose\": \"ゆるい\",\n \"Short\": \"短い\",\n \"Long\": \"長い\",\n \"Perfect\": \"ぴったり\",\n \"Perfect fit\": \"ぴったりフィット\",\n \"✓ Fit\": \"✓ フィット\",\n \"too short\": \"短すぎる\",\n \"too long\": \"長すぎる\",\n \"a bit short\": \"少し短い\",\n \"a bit long\": \"少し長い\",\n\n // ── Length pills ──\n \"Length\": \"丈\",\n \"Length Adjustment\": \"丈の調整\",\n \"Regular\": \"レギュラー\",\n \"Big\": \"ビッグ\",\n \"Big & Tall\": \"ビッグ & トール\",\n\n // ── Misc ──\n \"preview\": \"プレビュー\",\n\n // ── BodyProfileView — photo upload area (left section) ──\n \"Upload your photo\": \"写真をアップロード\",\n \"Upload a photo\": \"写真をアップロード\",\n \"Click or drag a full-body photo\": \"全身写真をクリックまたはドラッグしてください\",\n \"Or upload a photo for AI sizing\": \"またはAIサイジング用の写真をアップロード\",\n \"Photo\": \"写真\",\n \"How to take a good photo\": \"良い写真の撮り方\",\n \"How to take the best photo\": \"最適な写真の撮り方\",\n \"Do\": \"推奨事項\",\n \"Don't\": \"避けるべき\",\n \"Quick Tip\": \"ワンポイント\",\n \"The simpler your photo is, the more accurate your virtual try-on results will be.\": \"シンプルな写真ほど、バーチャル試着の精度が高まります。\",\n \"Choose a plain background (a light wall is ideal)\": \"無地の背景を選んでください(明るい壁が理想的)\",\n \"Stand facing the camera with your full body in frame\": \"全身が写るようにカメラに正対して立ってください\",\n \"Stand straight and still, arms relaxed by your sides\": \"まっすぐ静止し、腕を自然に脇に下ろしてください\",\n \"Stand with your HEELS against a wall for best accuracy\": \"精度を高めるためにかかとを壁につけて立ってください\",\n \"Use natural or even lighting (e.g. near a window)\": \"自然光または均一な照明を使用してください(例:窓の近く)\",\n \"Wear fitted, simple clothing (e.g. neutral colors)\": \"体にフィットしたシンプルな服を着てください(例:無地の色)\",\n \"Don't wear loose, baggy, or layered clothing\": \"ゆったりした服や重ね着は避けてください\",\n \"Don't sit, pose, or bend your body\": \"座ったり、ポーズを取ったり、体を曲げたりしないでください\",\n \"Don't use strong backlighting\": \"強い逆光を使用しないでください\",\n \"Don't take mirror photos or selfies\": \"鏡越しや自撮りは避けてください\",\n \"Don't apply filters, effects, or edits\": \"フィルターやエフェクト、加工は加えないでください\",\n\n // ── Age gate ──\n \"Are you 18 or older?\": \"18歳以上ですか?\",\n \"Yes\": \"はい\",\n \"No\": \"いいえ\",\n \"Please confirm your age\": \"年齢を確認してください\",\n \"Please confirm that the person in the photo is 18 or older before uploading.\": \"アップロードする前に、写真の人物が18歳以上であることを確認してください。\",\n \"Under 18 — can't process this photo.\": \"18歳未満です — この写真は処理できません。\",\n \"This photo appears to be of a minor. Please upload a photo of someone 18 or older.\": \"この写真は未成年者のようです。18歳以上の人物の写真をアップロードしてください。\",\n \"Different photo needed\": \"別の写真が必要です\",\n \"Try another photo\": \"別の写真をお試しください\",\n\n // ── Photo step controls ──\n \"Continue\": \"続ける\",\n \"Analyze My Size\": \"サイズを分析\",\n \"Analyzing photo…\": \"写真を分析中…\",\n \"Details\": \"詳細\",\n \"Image must be under 10MB\": \"画像は10MB以下である必要があります\",\n \"Please upload an image file\": \"画像ファイルをアップロードしてください\",\n \"Please upload a photo\": \"写真をアップロードしてください\",\n \"Prefer not to upload a photo?\": \"写真をアップロードしませんか?\",\n \"Enter measurements manually\": \"手動でサイズを入力\",\n \"Legal Notice\": \"法的通知\",\n \"Your image will be used to generate a virtual try-on preview showing how selected items may look and fit. Images are processed securely and are not stored after generation.\": \"あなたの画像は、選択したアイテムの見え方とフィット感を示すバーチャル試着プレビューを生成するために使用されます。画像は安全に処理され、生成後は保存されません。\",\n\n // ── BodyProfileView — form (right section) ──\n \"Body details\": \"体型情報\",\n \"Your body details\": \"あなたの体型情報\",\n \"Body Measurements\": \"サイズ\",\n \"AGE\": \"年齢\",\n \"years\": \"歳\",\n \"Enter your height\": \"身長を入力してください\",\n \"Enter your weight\": \"体重を入力してください\",\n \"Enter your bra size\": \"ブラのサイズを入力してください\",\n \"Please enter your height\": \"身長を入力してください\",\n \"Please enter your weight\": \"体重を入力してください\",\n \"Please enter a valid height\": \"有効な身長を入力してください\",\n \"Please enter a valid weight\": \"有効な体重を入力してください\",\n \"Please enter a valid height (100-250 cm)\": \"有効な身長を入力してください(100-250 cm)\",\n \"Please enter a valid weight (30-300 kg)\": \"有効な体重を入力してください(30-300 kg)\",\n \"Please select both band and cup size\": \"アンダーとカップのサイズを選択してください\",\n \"Select your bra size\": \"ブラのサイズを選択してください\",\n \"BAND\": \"アンダー\",\n \"BAND SIZE\": \"アンダーサイズ\",\n \"CUP\": \"カップ\",\n \"CUP SIZE\": \"カップサイズ\",\n \"BRA REGION\": \"ブラ地域\",\n \"Imperial\": \"ヤード・ポンド法\",\n \"Metric\": \"メートル法\",\n \"These calibrate the AI — all required.\": \"これらはAIを較正するための必須項目です。\",\n \"Using\": \"使用中\",\n \"start fresh\": \"最初からやり直す\",\n \"Close\": \"閉じる\",\n\n // ── Body shape questions ──\n \"Which best describes your chest?\": \"胸の特徴に最も近いものは?\",\n \"WHICH BEST DESCRIBES YOUR CHEST?\": \"胸の特徴に最も近いものは?\",\n \"Which best describes your hips?\": \"ヒップの特徴に最も近いものは?\",\n \"WHICH BEST DESCRIBES YOUR HIPS?\": \"ヒップの特徴に最も近いものは?\",\n \"Which best describes your midsection?\": \"ウエストの特徴に最も近いものは?\",\n \"WHICH BEST DESCRIBES YOUR MIDSECTION?\": \"ウエストの特徴に最も近いものは?\",\n \"Which best describes your seat?\": \"おしりの特徴に最も近いものは?\",\n \"WHICH BEST DESCRIBES YOUR SEAT?\": \"おしりの特徴に最も近いものは?\",\n \"Average\": \"平均\",\n \"Narrow\": \"細い\",\n \"Broad\": \"広い\",\n \"Curvy\": \"曲線的\",\n \"A slimmer, narrower chest build\": \"細くてスリムな胸\",\n \"A moderate, proportionate chest\": \"標準的でバランスの良い胸\",\n \"A wider, more muscular chest\": \"広く筋肉質な胸\",\n \"A flatter midsection with minimal protrusion\": \"出っ張りが少ない平らなウエスト\",\n \"A moderate, natural midsection shape\": \"標準的で自然なウエスト\",\n \"A fuller, more rounded midsection\": \"丸みのあるふくよかなウエスト\",\n \"A flatter backside with less projection\": \"突出の少ない平らなおしり\",\n \"A moderate, natural backside shape\": \"標準的で自然なおしり\",\n \"A fuller, more rounded backside\": \"丸みのあるふくよかなおしり\",\n};\nexport default ja;\n","const ko: Record<string, string> = {\n \"Virtual Try-On\": \"가상 피팅\",\n \"Find Your Size & See It On You\": \"사이즈를 찾고 입어보세요\",\n \"Get the perfect fit, then try it on virtually\": \"완벽한 핏을 찾고 가상으로 입어보세요\",\n \"Get Your Size\": \"사이즈 확인\",\n \"Instant fit recommendation\": \"즉시 핏 추천\",\n \"Try It On\": \"입어보기\",\n \"See how it looks on you\": \"어떻게 보이는지 확인\",\n \"Find My Size\": \"내 사이즈 찾기\",\n \"Takes less than a minute\": \"1분도 걸리지 않아요\",\n \"Upload a full body photo\": \"전신 사진 업로드\",\n \"JPEG, PNG or WebP (max 10MB)\": \"JPEG, PNG 또는 WebP (최대 10MB)\",\n \"Your photo\": \"내 사진\",\n \"Let's find your best fit\": \"최적의 핏을 찾아보세요\",\n \"Centimeters\": \"센티미터\",\n \"Inches\": \"인치\",\n \"Load saved profile...\": \"저장된 프로필 불러오기...\",\n \"HEIGHT\": \"키\",\n \"WEIGHT\": \"체중\",\n \"feet\": \"피트\",\n \"inches\": \"인치\",\n \"cm\": \"cm\",\n \"kg\": \"kg\",\n \"lbs\": \"파운드\",\n \"in\": \"인치\",\n \"How to measure\": \"측정 방법\",\n \"Hide guide\": \"가이드 숨기기\",\n \"I know my measurements\": \"치수를 알고 있어요\",\n \"Not sure? Use height & weight instead\": \"모르겠다면 키와 체중으로\",\n \"Please fill in height and weight\": \"키와 체중을 입력해주세요\",\n \"Please fill in all required fields\": \"모든 필수 항목을 입력해주세요\",\n \"Next\": \"다음\",\n \"Analyzing your size...\": \"사이즈 분석 중...\",\n \"RECOMMENDED SIZE\": \"추천 사이즈\",\n \"NOT RECOMMENDED\": \"비추천\",\n \"Edit measurements\": \"치수 수정\",\n \"Size guide\": \"사이즈 가이드\",\n \"Your fit\": \"나의 핏\",\n \"Your measure\": \"내 치수\",\n \"perfect fit\": \"완벽한 핏\",\n \"too tight\": \"너무 타이트\",\n \"tight\": \"타이트\",\n \"a bit tight\": \"약간 타이트\",\n \"too loose\": \"너무 루즈\",\n \"loose\": \"루즈\",\n \"a bit loose\": \"약간 루즈\",\n \"See fit on your photo\": \"사진에서 핏 확인\",\n \"Hide visual fit\": \"핏 표시 숨기기\",\n \"Analyzing...\": \"분석 중...\",\n \"Try it on\": \"입어보기\",\n \"SIZE CHART\": \"사이즈 차트\",\n \"YOUR ESTIMATED MEASUREMENTS\": \"추정 치수\",\n \"Edit\": \"수정\",\n \"Download\": \"다운로드\",\n \"Size chart\": \"사이즈 차트\",\n \"Preparing your image...\": \"이미지 준비 중...\",\n \"Analyzing body proportions...\": \"체형 분석 중...\",\n \"Matching garment to your photo...\": \"의류를 사진에 맞추는 중...\",\n \"Generating virtual try-on...\": \"가상 피팅 생성 중...\",\n \"Refining details...\": \"세부 조정 중...\",\n \"Almost there...\": \"거의 완료...\",\n \"Complete!\": \"완료!\",\n \"This usually takes 15-25 seconds\": \"보통 15~25초 소요됩니다\",\n \"Something went wrong\": \"오류가 발생했습니다\",\n \"Try Again\": \"다시 시도\",\n \"SDK not configured. Please provide an API key.\": \"SDK가 설정되지 않았습니다. API 키를 입력해주세요.\",\n \"Please upload a JPEG, PNG, or WebP image.\": \"JPEG, PNG 또는 WebP 이미지를 업로드해주세요.\",\n \"Image must be under 10MB.\": \"이미지는 10MB 이하여야 합니다.\",\n \"Try-on generation failed\": \"피팅 생성 실패\",\n \"Failed to start try-on\": \"피팅 시작 실패\",\n \"No product image found. Please set the product-image attribute.\": \"상품 이미지를 찾을 수 없습니다. product-image 속성을 설정해주세요.\",\n \"Powered by\": \"Powered by\",\n \"My Profiles\": \"내 프로필\",\n \"History\": \"기록\",\n \"No saved profiles yet.\": \"저장된 프로필이 없습니다.\",\n \"No history yet.\": \"기록이 없습니다.\",\n \"Product\": \"상품\",\n \"Women's\": \"여성\",\n \"Men's\": \"남성\",\n \"Profiles\": \"프로필\",\n \"Women's Profile\": \"여성 프로필\",\n \"Men's Profile\": \"남성 프로필\",\n \"Height\": \"키\",\n \"Weight\": \"체중\",\n \"Chest\": \"가슴둘레\",\n \"Bust\": \"버스트\",\n \"Waist\": \"허리\",\n \"Hips\": \"엉덩이\",\n \"Shoulders\": \"어깨\",\n \"Sleeve\": \"소매\",\n \"Inseam\": \"안쪽 솔기\",\n \"Neck\": \"목둘레\",\n \"Foot\": \"발\",\n \"Shoe EU\": \"신발 EU\",\n \"Shoe US\": \"신발 US\",\n \"Shoe UK\": \"신발 UK\",\n \"Saved\": \"저장됨\",\n \"Delete Profile\": \"프로필 삭제\",\n \"Shoe size (US)\": \"신발 사이즈 (US)\",\n \"Shoe size (UK)\": \"신발 사이즈 (UK)\",\n \"Shoe size (EU)\": \"신발 사이즈 (EU)\",\n \"Generating...\": \"생성 중...\",\n \"Foot length\": \"발 길이\",\n \"Size\": \"사이즈\",\n \"Try on size\": \"사이즈 입어보기\",\n \"e.g.\": \"예)\",\n \"Drop your photo here or click to upload\": \"사진을 여기에 놓거나 클릭하여 업로드\",\n \"This usually takes 15-20 seconds\": \"보통 15~20초 소요됩니다\",\n \"Try-on result\": \"피팅 결과\",\n \"Try Another\": \"다시 시도\",\n \"Back\": \"뒤로\",\n \"You\": \"내 치수\",\n \"Garment\": \"의류\",\n \"Your Height\": \"키\",\n \"Your Weight\": \"체중\",\n \"Drag or scroll to set your height\": \"드래그 또는 스크롤하여 키를 설정하세요\",\n \"Drag or scroll to set your weight\": \"드래그 또는 스크롤하여 체중을 설정하세요\",\n \"Enter height and weight first\": \"먼저 키와 체중을 입력하세요\",\n\n // ── Field labels ──\n \"Lens Width\": \"렌즈 너비\",\n \"Bridge\": \"브릿지\",\n \"Arm Length\": \"다리 길이\",\n \"Head Circumference\": \"머리 둘레\",\n \"Face Width\": \"얼굴 너비\",\n \"Temple\": \"다리\",\n \"Around widest point\": \"가장 넓은 부분 주위\",\n \"Foot Length\": \"발 길이\",\n \"Shoulder\": \"어깨\",\n \"Thigh\": \"허벅지\",\n \"Hip\": \"엉덩이\",\n\n // ── Units ──\n \"Millimetre\": \"밀리미터\",\n \"Centimetre\": \"센티미터\",\n \"Millimeters\": \"밀리미터\",\n\n // ── Fit descriptors ──\n \"Tight\": \"꽉 끼는\",\n \"Loose\": \"헐렁한\",\n \"Short\": \"짧은\",\n \"Long\": \"긴\",\n \"Perfect\": \"완벽\",\n \"Perfect fit\": \"완벽한 핏\",\n \"✓ Fit\": \"✓ 적합\",\n \"too short\": \"너무 짧음\",\n \"too long\": \"너무 김\",\n \"a bit short\": \"약간 짧음\",\n \"a bit long\": \"약간 김\",\n\n // ── Length pills ──\n \"Length\": \"길이\",\n \"Length Adjustment\": \"길이 조절\",\n \"Regular\": \"보통\",\n \"Big\": \"빅\",\n \"Big & Tall\": \"빅 & 톨\",\n\n // ── Misc ──\n \"preview\": \"미리보기\",\n\n // ── BodyProfileView — photo upload area (left section) ──\n \"Upload your photo\": \"사진 업로드\",\n \"Upload a photo\": \"사진 업로드\",\n \"Click or drag a full-body photo\": \"전신 사진을 클릭하거나 드래그하세요\",\n \"Or upload a photo for AI sizing\": \"또는 AI 사이징을 위한 사진을 업로드하세요\",\n \"Photo\": \"사진\",\n \"How to take a good photo\": \"좋은 사진 찍는 방법\",\n \"How to take the best photo\": \"최고의 사진 찍는 방법\",\n \"Do\": \"권장사항\",\n \"Don't\": \"주의사항\",\n \"Quick Tip\": \"빠른 팁\",\n \"The simpler your photo is, the more accurate your virtual try-on results will be.\": \"사진이 단순할수록 가상 피팅 결과의 정확도가 높아집니다.\",\n \"Choose a plain background (a light wall is ideal)\": \"단색 배경을 선택하세요(밝은 벽이 이상적입니다)\",\n \"Stand facing the camera with your full body in frame\": \"전신이 화면에 들어오도록 카메라를 향해 서세요\",\n \"Stand straight and still, arms relaxed by your sides\": \"팔을 자연스럽게 내리고 똑바로 서서 움직이지 마세요\",\n \"Stand with your HEELS against a wall for best accuracy\": \"정확도를 위해 발뒤꿈치를 벽에 붙이고 서세요\",\n \"Use natural or even lighting (e.g. near a window)\": \"자연광이나 균일한 조명을 사용하세요(예: 창가)\",\n \"Wear fitted, simple clothing (e.g. neutral colors)\": \"몸에 맞는 단순한 옷을 입으세요(예: 무채색)\",\n \"Don't wear loose, baggy, or layered clothing\": \"헐렁하거나 겹쳐 입은 옷은 피하세요\",\n \"Don't sit, pose, or bend your body\": \"앉거나 포즈를 취하거나 몸을 굽히지 마세요\",\n \"Don't use strong backlighting\": \"강한 역광은 사용하지 마세요\",\n \"Don't take mirror photos or selfies\": \"거울 사진이나 셀카는 찍지 마세요\",\n \"Don't apply filters, effects, or edits\": \"필터, 효과, 편집을 적용하지 마세요\",\n\n // ── Age gate ──\n \"Are you 18 or older?\": \"만 18세 이상이신가요?\",\n \"Yes\": \"예\",\n \"No\": \"아니요\",\n \"Please confirm your age\": \"나이를 확인해 주세요\",\n \"Please confirm that the person in the photo is 18 or older before uploading.\": \"업로드하기 전에 사진의 인물이 만 18세 이상임을 확인해 주세요.\",\n \"Under 18 — can't process this photo.\": \"18세 미만 — 이 사진을 처리할 수 없습니다.\",\n \"This photo appears to be of a minor. Please upload a photo of someone 18 or older.\": \"이 사진은 미성년자로 보입니다. 만 18세 이상인 사람의 사진을 업로드해 주세요.\",\n \"Different photo needed\": \"다른 사진이 필요합니다\",\n \"Try another photo\": \"다른 사진을 시도해 보세요\",\n\n // ── Photo step controls ──\n \"Continue\": \"계속\",\n \"Analyze My Size\": \"내 사이즈 분석\",\n \"Analyzing photo…\": \"사진 분석 중…\",\n \"Details\": \"세부정보\",\n \"Image must be under 10MB\": \"이미지는 10MB 이하여야 합니다\",\n \"Please upload an image file\": \"이미지 파일을 업로드하세요\",\n \"Please upload a photo\": \"사진을 업로드하세요\",\n \"Prefer not to upload a photo?\": \"사진을 업로드하지 않으시겠습니까?\",\n \"Enter measurements manually\": \"직접 치수 입력\",\n \"Legal Notice\": \"법적 고지\",\n \"Your image will be used to generate a virtual try-on preview showing how selected items may look and fit. Images are processed securely and are not stored after generation.\": \"귀하의 이미지는 선택한 항목이 어떻게 보이고 맞을지를 보여주는 가상 피팅 미리보기를 생성하는 데 사용됩니다. 이미지는 안전하게 처리되며 생성 후에는 저장되지 않습니다.\",\n\n // ── BodyProfileView — form (right section) ──\n \"Body details\": \"신체 정보\",\n \"Your body details\": \"당신의 신체 정보\",\n \"Body Measurements\": \"신체 치수\",\n \"AGE\": \"나이\",\n \"years\": \"세\",\n \"Enter your height\": \"키를 입력하세요\",\n \"Enter your weight\": \"체중을 입력하세요\",\n \"Enter your bra size\": \"브라 사이즈를 입력하세요\",\n \"Please enter your height\": \"키를 입력하세요\",\n \"Please enter your weight\": \"체중을 입력하세요\",\n \"Please enter a valid height\": \"올바른 키를 입력하세요\",\n \"Please enter a valid weight\": \"올바른 체중을 입력하세요\",\n \"Please enter a valid height (100-250 cm)\": \"올바른 키를 입력하세요(100-250 cm)\",\n \"Please enter a valid weight (30-300 kg)\": \"올바른 체중을 입력하세요(30-300 kg)\",\n \"Please select both band and cup size\": \"밴드와 컵 사이즈를 모두 선택하세요\",\n \"Select your bra size\": \"브라 사이즈를 선택하세요\",\n \"BAND\": \"밴드\",\n \"BAND SIZE\": \"밴드 사이즈\",\n \"CUP\": \"컵\",\n \"CUP SIZE\": \"컵 사이즈\",\n \"BRA REGION\": \"브라 지역\",\n \"Imperial\": \"영국식\",\n \"Metric\": \"미터법\",\n \"These calibrate the AI — all required.\": \"이 항목들은 AI를 보정합니다 — 모두 필수입니다.\",\n \"Using\": \"사용 중\",\n \"start fresh\": \"새로 시작\",\n \"Close\": \"닫기\",\n\n // ── Body shape questions ──\n \"Which best describes your chest?\": \"가슴을 가장 잘 설명하는 것은?\",\n \"WHICH BEST DESCRIBES YOUR CHEST?\": \"가슴을 가장 잘 설명하는 것은?\",\n \"Which best describes your hips?\": \"엉덩이를 가장 잘 설명하는 것은?\",\n \"WHICH BEST DESCRIBES YOUR HIPS?\": \"엉덩이를 가장 잘 설명하는 것은?\",\n \"Which best describes your midsection?\": \"허리를 가장 잘 설명하는 것은?\",\n \"WHICH BEST DESCRIBES YOUR MIDSECTION?\": \"허리를 가장 잘 설명하는 것은?\",\n \"Which best describes your seat?\": \"엉덩이 모양을 가장 잘 설명하는 것은?\",\n \"WHICH BEST DESCRIBES YOUR SEAT?\": \"엉덩이 모양을 가장 잘 설명하는 것은?\",\n \"Average\": \"평균\",\n \"Narrow\": \"좁음\",\n \"Broad\": \"넓음\",\n \"Curvy\": \"곡선미\",\n \"A slimmer, narrower chest build\": \"더 가늘고 좁은 가슴\",\n \"A moderate, proportionate chest\": \"보통의 균형잡힌 가슴\",\n \"A wider, more muscular chest\": \"더 넓고 근육질의 가슴\",\n \"A flatter midsection with minimal protrusion\": \"최소한의 돌출이 있는 평평한 허리\",\n \"A moderate, natural midsection shape\": \"보통의 자연스러운 허리\",\n \"A fuller, more rounded midsection\": \"더 풍만하고 둥근 허리\",\n \"A flatter backside with less projection\": \"돌출이 적은 평평한 엉덩이\",\n \"A moderate, natural backside shape\": \"보통의 자연스러운 엉덩이\",\n \"A fuller, more rounded backside\": \"더 풍만하고 둥근 엉덩이\",\n};\nexport default ko;\n","const zh: Record<string, string> = {\n \"Virtual Try-On\": \"虚拟试穿\",\n \"Find Your Size & See It On You\": \"找到你的尺码并试穿\",\n \"Get the perfect fit, then try it on virtually\": \"找到最佳合身度,然后虚拟试穿\",\n \"Get Your Size\": \"获取尺码\",\n \"Instant fit recommendation\": \"即时合身推荐\",\n \"Try It On\": \"试穿\",\n \"See how it looks on you\": \"看看穿在你身上的效果\",\n \"Find My Size\": \"找到我的尺码\",\n \"Takes less than a minute\": \"不到一分钟\",\n \"Upload a full body photo\": \"上传全身照\",\n \"JPEG, PNG or WebP (max 10MB)\": \"JPEG、PNG 或 WebP(最大10MB)\",\n \"Your photo\": \"你的照片\",\n \"Let's find your best fit\": \"找到最适合你的尺码\",\n \"Centimeters\": \"厘米\",\n \"Inches\": \"英寸\",\n \"Load saved profile...\": \"加载已保存的档案...\",\n \"HEIGHT\": \"身高\",\n \"WEIGHT\": \"体重\",\n \"feet\": \"英尺\",\n \"inches\": \"英寸\",\n \"cm\": \"厘米\",\n \"kg\": \"公斤\",\n \"lbs\": \"磅\",\n \"in\": \"英寸\",\n \"How to measure\": \"如何测量\",\n \"Hide guide\": \"隐藏指南\",\n \"I know my measurements\": \"我知道我的尺寸\",\n \"Not sure? Use height & weight instead\": \"不确定?使用身高和体重\",\n \"Please fill in height and weight\": \"请填写身高和体重\",\n \"Please fill in all required fields\": \"请填写所有必填项\",\n \"Next\": \"下一步\",\n \"Analyzing your size...\": \"正在分析你的尺码...\",\n \"RECOMMENDED SIZE\": \"推荐尺码\",\n \"NOT RECOMMENDED\": \"不推荐\",\n \"Edit measurements\": \"编辑尺寸\",\n \"Size guide\": \"尺码指南\",\n \"Your fit\": \"你的合身度\",\n \"Your measure\": \"你的尺寸\",\n \"perfect fit\": \"完美合身\",\n \"too tight\": \"太紧\",\n \"tight\": \"偏紧\",\n \"a bit tight\": \"略紧\",\n \"too loose\": \"太松\",\n \"loose\": \"偏松\",\n \"a bit loose\": \"略松\",\n \"See fit on your photo\": \"在照片上查看合身度\",\n \"Hide visual fit\": \"隐藏合身显示\",\n \"Analyzing...\": \"分析中...\",\n \"Try it on\": \"试穿\",\n \"SIZE CHART\": \"尺码表\",\n \"YOUR ESTIMATED MEASUREMENTS\": \"你的预估尺寸\",\n \"Edit\": \"编辑\",\n \"Download\": \"下载\",\n \"Size chart\": \"尺码表\",\n \"Preparing your image...\": \"正在准备图片...\",\n \"Analyzing body proportions...\": \"正在分析体型...\",\n \"Matching garment to your photo...\": \"正在将服装匹配到照片...\",\n \"Generating virtual try-on...\": \"正在生成虚拟试穿...\",\n \"Refining details...\": \"正在优化细节...\",\n \"Almost there...\": \"即将完成...\",\n \"Complete!\": \"完成!\",\n \"This usually takes 15-25 seconds\": \"通常需要15-25秒\",\n \"Something went wrong\": \"出错了\",\n \"Try Again\": \"重试\",\n \"SDK not configured. Please provide an API key.\": \"SDK未配置,请提供API密钥。\",\n \"Please upload a JPEG, PNG, or WebP image.\": \"请上传JPEG、PNG或WebP图片。\",\n \"Image must be under 10MB.\": \"图片必须小于10MB。\",\n \"Try-on generation failed\": \"试穿生成失败\",\n \"Failed to start try-on\": \"无法开始试穿\",\n \"No product image found. Please set the product-image attribute.\": \"未找到商品图片,请设置product-image属性。\",\n \"Powered by\": \"技术支持\",\n \"My Profiles\": \"我的档案\",\n \"History\": \"历史记录\",\n \"No saved profiles yet.\": \"还没有保存的档案。\",\n \"No history yet.\": \"还没有历史记录。\",\n \"Product\": \"商品\",\n \"Women's\": \"女装\",\n \"Men's\": \"男装\",\n \"Profiles\": \"档案\",\n \"Women's Profile\": \"女性档案\",\n \"Men's Profile\": \"男性档案\",\n \"Height\": \"身高\",\n \"Weight\": \"体重\",\n \"Chest\": \"胸围\",\n \"Bust\": \"胸围\",\n \"Waist\": \"腰围\",\n \"Hips\": \"臀围\",\n \"Shoulders\": \"肩宽\",\n \"Sleeve\": \"袖长\",\n \"Inseam\": \"内缝\",\n \"Neck\": \"颈围\",\n \"Foot\": \"脚\",\n \"Shoe EU\": \"鞋码 EU\",\n \"Shoe US\": \"鞋码 US\",\n \"Shoe UK\": \"鞋码 UK\",\n \"Saved\": \"已保存\",\n \"Delete Profile\": \"删除档案\",\n \"Shoe size (US)\": \"鞋码(US)\",\n \"Shoe size (UK)\": \"鞋码(UK)\",\n \"Shoe size (EU)\": \"鞋码(EU)\",\n \"Generating...\": \"生成中...\",\n \"Foot length\": \"脚长\",\n \"Size\": \"尺码\",\n \"Try on size\": \"试穿尺码\",\n \"e.g.\": \"例如\",\n \"Drop your photo here or click to upload\": \"将照片拖放到此处或点击上传\",\n \"This usually takes 15-20 seconds\": \"通常需要15-20秒\",\n \"Try-on result\": \"试穿结果\",\n \"Try Another\": \"再试一次\",\n \"Back\": \"返回\",\n \"You\": \"你的\",\n \"Garment\": \"服装\",\n \"Your Height\": \"你的身高\",\n \"Your Weight\": \"你的体重\",\n \"Drag or scroll to set your height\": \"拖动或滚动设置身高\",\n \"Drag or scroll to set your weight\": \"拖动或滚动设置体重\",\n \"Enter height and weight first\": \"请先输入身高和体重\",\n\n // ── Field labels ──\n \"Lens Width\": \"镜片宽度\",\n \"Bridge\": \"鼻梁\",\n \"Arm Length\": \"镜腿长度\",\n \"Head Circumference\": \"头围\",\n \"Face Width\": \"脸宽\",\n \"Temple\": \"镜腿\",\n \"Around widest point\": \"围绕最宽处\",\n \"Foot Length\": \"脚长\",\n \"Shoulder\": \"肩宽\",\n \"Thigh\": \"大腿\",\n \"Hip\": \"臀部\",\n\n // ── Units ──\n \"Millimetre\": \"毫米\",\n \"Centimetre\": \"厘米\",\n \"Millimeters\": \"毫米\",\n\n // ── Fit descriptors ──\n \"Tight\": \"紧\",\n \"Loose\": \"松\",\n \"Short\": \"短\",\n \"Long\": \"长\",\n \"Perfect\": \"完美\",\n \"Perfect fit\": \"完美合身\",\n \"✓ Fit\": \"✓ 合身\",\n \"too short\": \"太短\",\n \"too long\": \"太长\",\n \"a bit short\": \"稍短\",\n \"a bit long\": \"稍长\",\n\n // ── Length pills ──\n \"Length\": \"长度\",\n \"Length Adjustment\": \"长度调整\",\n \"Regular\": \"标准\",\n \"Big\": \"大\",\n \"Big & Tall\": \"大号加长\",\n\n // ── Misc ──\n \"preview\": \"预览\",\n\n // ── BodyProfileView — photo upload area (left section) ──\n \"Upload your photo\": \"上传您的照片\",\n \"Upload a photo\": \"上传照片\",\n \"Click or drag a full-body photo\": \"点击或拖入全身照\",\n \"Or upload a photo for AI sizing\": \"或上传照片以进行AI尺寸分析\",\n \"Photo\": \"照片\",\n \"How to take a good photo\": \"如何拍出好照片\",\n \"How to take the best photo\": \"如何拍出最佳照片\",\n \"Do\": \"建议\",\n \"Don't\": \"避免\",\n \"Quick Tip\": \"小提示\",\n \"The simpler your photo is, the more accurate your virtual try-on results will be.\": \"照片越简洁,虚拟试穿的结果越准确。\",\n \"Choose a plain background (a light wall is ideal)\": \"选择简洁背景(浅色墙面最理想)\",\n \"Stand facing the camera with your full body in frame\": \"面向相机站立,全身入镜\",\n \"Stand straight and still, arms relaxed by your sides\": \"保持站直不动,双臂自然放松\",\n \"Stand with your HEELS against a wall for best accuracy\": \"脚后跟靠墙站立以获得最佳准确度\",\n \"Use natural or even lighting (e.g. near a window)\": \"使用自然光或均匀光线(例如靠近窗户)\",\n \"Wear fitted, simple clothing (e.g. neutral colors)\": \"穿合身简洁的衣服(例如纯色)\",\n \"Don't wear loose, baggy, or layered clothing\": \"不要穿宽松或多层叠加的衣服\",\n \"Don't sit, pose, or bend your body\": \"不要坐着、摆姿势或弯腰\",\n \"Don't use strong backlighting\": \"不要使用强烈逆光\",\n \"Don't take mirror photos or selfies\": \"不要拍镜子照或自拍\",\n \"Don't apply filters, effects, or edits\": \"不要使用滤镜、特效或修图\",\n\n // ── Age gate ──\n \"Are you 18 or older?\": \"您年满18岁吗?\",\n \"Yes\": \"是\",\n \"No\": \"否\",\n \"Please confirm your age\": \"请确认您的年龄\",\n \"Please confirm that the person in the photo is 18 or older before uploading.\": \"上传前请确认照片中的人已年满18岁。\",\n \"Under 18 — can't process this photo.\": \"未满18岁 — 无法处理此照片。\",\n \"This photo appears to be of a minor. Please upload a photo of someone 18 or older.\": \"此照片似乎是未成年人。请上传18岁或以上人士的照片。\",\n \"Different photo needed\": \"需要其他照片\",\n \"Try another photo\": \"尝试其他照片\",\n\n // ── Photo step controls ──\n \"Continue\": \"继续\",\n \"Analyze My Size\": \"分析我的尺寸\",\n \"Analyzing photo…\": \"正在分析照片…\",\n \"Details\": \"详情\",\n \"Image must be under 10MB\": \"图片必须小于10MB\",\n \"Please upload an image file\": \"请上传图片文件\",\n \"Please upload a photo\": \"请上传照片\",\n \"Prefer not to upload a photo?\": \"不想上传照片?\",\n \"Enter measurements manually\": \"手动输入尺寸\",\n \"Legal Notice\": \"法律声明\",\n \"Your image will be used to generate a virtual try-on preview showing how selected items may look and fit. Images are processed securely and are not stored after generation.\": \"您的图片将用于生成虚拟试穿预览,显示所选商品的外观和合身效果。图片以安全方式处理,生成后不会保存。\",\n\n // ── BodyProfileView — form (right section) ──\n \"Body details\": \"身体信息\",\n \"Your body details\": \"您的身体信息\",\n \"Body Measurements\": \"身体尺寸\",\n \"AGE\": \"年龄\",\n \"years\": \"岁\",\n \"Enter your height\": \"输入您的身高\",\n \"Enter your weight\": \"输入您的体重\",\n \"Enter your bra size\": \"输入您的内衣尺码\",\n \"Please enter your height\": \"请输入您的身高\",\n \"Please enter your weight\": \"请输入您的体重\",\n \"Please enter a valid height\": \"请输入有效的身高\",\n \"Please enter a valid weight\": \"请输入有效的体重\",\n \"Please enter a valid height (100-250 cm)\": \"请输入有效的身高(100-250 cm)\",\n \"Please enter a valid weight (30-300 kg)\": \"请输入有效的体重(30-300 kg)\",\n \"Please select both band and cup size\": \"请选择下围和罩杯尺寸\",\n \"Select your bra size\": \"选择您的内衣尺码\",\n \"BAND\": \"下围\",\n \"BAND SIZE\": \"下围尺寸\",\n \"CUP\": \"罩杯\",\n \"CUP SIZE\": \"罩杯尺寸\",\n \"BRA REGION\": \"内衣地区\",\n \"Imperial\": \"英制\",\n \"Metric\": \"公制\",\n \"These calibrate the AI — all required.\": \"这些用于校准AI — 均为必填项。\",\n \"Using\": \"使用中\",\n \"start fresh\": \"重新开始\",\n \"Close\": \"关闭\",\n\n // ── Body shape questions ──\n \"Which best describes your chest?\": \"哪个最能描述您的胸部?\",\n \"WHICH BEST DESCRIBES YOUR CHEST?\": \"哪个最能描述您的胸部?\",\n \"Which best describes your hips?\": \"哪个最能描述您的臀部?\",\n \"WHICH BEST DESCRIBES YOUR HIPS?\": \"哪个最能描述您的臀部?\",\n \"Which best describes your midsection?\": \"哪个最能描述您的腰部?\",\n \"WHICH BEST DESCRIBES YOUR MIDSECTION?\": \"哪个最能描述您的腰部?\",\n \"Which best describes your seat?\": \"哪个最能描述您的臀部?\",\n \"WHICH BEST DESCRIBES YOUR SEAT?\": \"哪个最能描述您的臀部?\",\n \"Average\": \"平均\",\n \"Narrow\": \"窄\",\n \"Broad\": \"宽\",\n \"Curvy\": \"曲线\",\n \"A slimmer, narrower chest build\": \"较瘦较窄的胸部\",\n \"A moderate, proportionate chest\": \"适中匀称的胸部\",\n \"A wider, more muscular chest\": \"较宽较结实的胸部\",\n \"A flatter midsection with minimal protrusion\": \"较平坦的腰部\",\n \"A moderate, natural midsection shape\": \"适中自然的腰部\",\n \"A fuller, more rounded midsection\": \"较丰满圆润的腰部\",\n \"A flatter backside with less projection\": \"较平坦的臀部\",\n \"A moderate, natural backside shape\": \"适中自然的臀部\",\n \"A fuller, more rounded backside\": \"较丰满圆润的臀部\",\n};\nexport default zh;\n","const es: Record<string, string> = {\n \"Virtual Try-On\": \"Probador Virtual\",\n \"Find Your Size & See It On You\": \"Encuentra tu talla y pruébatelo\",\n \"Get the perfect fit, then try it on virtually\": \"Encuentra el ajuste perfecto y pruébatelo virtualmente\",\n \"Get Your Size\": \"Tu talla\",\n \"Instant fit recommendation\": \"Recomendación de ajuste instantánea\",\n \"Try It On\": \"Pruébatelo\",\n \"See how it looks on you\": \"Mira cómo te queda\",\n \"Find My Size\": \"Encontrar mi talla\",\n \"Takes less than a minute\": \"Tarda menos de un minuto\",\n \"Upload a full body photo\": \"Sube una foto de cuerpo entero\",\n \"JPEG, PNG or WebP (max 10MB)\": \"JPEG, PNG o WebP (máx. 10MB)\",\n \"Your photo\": \"Tu foto\",\n \"Let's find your best fit\": \"Encontremos tu mejor ajuste\",\n \"Centimeters\": \"Centímetros\",\n \"Inches\": \"Pulgadas\",\n \"Load saved profile...\": \"Cargar perfil guardado...\",\n \"HEIGHT\": \"ALTURA\",\n \"WEIGHT\": \"PESO\",\n \"feet\": \"pies\",\n \"inches\": \"pulgadas\",\n \"cm\": \"cm\",\n \"kg\": \"kg\",\n \"lbs\": \"libras\",\n \"in\": \"pulg\",\n \"How to measure\": \"Cómo medir\",\n \"Hide guide\": \"Ocultar guía\",\n \"I know my measurements\": \"Conozco mis medidas\",\n \"Not sure? Use height & weight instead\": \"¿No estás seguro? Usa altura y peso\",\n \"Please fill in height and weight\": \"Por favor, introduce altura y peso\",\n \"Please fill in all required fields\": \"Por favor, completa todos los campos obligatorios\",\n \"Next\": \"Siguiente\",\n \"Analyzing your size...\": \"Analizando tu talla...\",\n \"RECOMMENDED SIZE\": \"TALLA RECOMENDADA\",\n \"NOT RECOMMENDED\": \"NO RECOMENDADA\",\n \"Edit measurements\": \"Editar medidas\",\n \"Size guide\": \"Guía de tallas\",\n \"Your fit\": \"Tu ajuste\",\n \"Your measure\": \"Tu medida\",\n \"perfect fit\": \"ajuste perfecto\",\n \"too tight\": \"demasiado ajustado\",\n \"tight\": \"ajustado\",\n \"a bit tight\": \"un poco ajustado\",\n \"too loose\": \"demasiado holgado\",\n \"loose\": \"holgado\",\n \"a bit loose\": \"un poco holgado\",\n \"See fit on your photo\": \"Ver ajuste en tu foto\",\n \"Hide visual fit\": \"Ocultar ajuste visual\",\n \"Analyzing...\": \"Analizando...\",\n \"Try it on\": \"Pruébatelo\",\n \"SIZE CHART\": \"TABLA DE TALLAS\",\n \"YOUR ESTIMATED MEASUREMENTS\": \"TUS MEDIDAS ESTIMADAS\",\n \"Edit\": \"Editar\",\n \"Download\": \"Descargar\",\n \"Size chart\": \"Tabla de tallas\",\n \"Preparing your image...\": \"Preparando tu imagen...\",\n \"Analyzing body proportions...\": \"Analizando proporciones corporales...\",\n \"Matching garment to your photo...\": \"Ajustando la prenda a tu foto...\",\n \"Generating virtual try-on...\": \"Generando probador virtual...\",\n \"Refining details...\": \"Refinando detalles...\",\n \"Almost there...\": \"Casi listo...\",\n \"Complete!\": \"¡Completado!\",\n \"This usually takes 15-25 seconds\": \"Normalmente tarda 15-25 segundos\",\n \"Something went wrong\": \"Algo salió mal\",\n \"Try Again\": \"Intentar de nuevo\",\n \"SDK not configured. Please provide an API key.\": \"SDK no configurado. Por favor, proporciona una clave API.\",\n \"Please upload a JPEG, PNG, or WebP image.\": \"Por favor, sube una imagen JPEG, PNG o WebP.\",\n \"Image must be under 10MB.\": \"La imagen debe ser menor de 10MB.\",\n \"Try-on generation failed\": \"Error al generar la prueba\",\n \"Failed to start try-on\": \"Error al iniciar la prueba\",\n \"No product image found. Please set the product-image attribute.\": \"No se encontró imagen del producto. Configura el atributo product-image.\",\n \"Powered by\": \"Desarrollado por\",\n \"My Profiles\": \"Mis Perfiles\",\n \"History\": \"Historial\",\n \"No saved profiles yet.\": \"No hay perfiles guardados.\",\n \"No history yet.\": \"No hay historial aún.\",\n \"Product\": \"Producto\",\n \"Women's\": \"Mujer\",\n \"Men's\": \"Hombre\",\n \"Profiles\": \"Perfiles\",\n \"Women's Profile\": \"Perfil de Mujer\",\n \"Men's Profile\": \"Perfil de Hombre\",\n \"Height\": \"Altura\",\n \"Weight\": \"Peso\",\n \"Chest\": \"Pecho\",\n \"Bust\": \"Busto\",\n \"Waist\": \"Cintura\",\n \"Hips\": \"Caderas\",\n \"Shoulders\": \"Hombros\",\n \"Sleeve\": \"Manga\",\n \"Inseam\": \"Entrepierna\",\n \"Neck\": \"Cuello\",\n \"Foot\": \"Pie\",\n \"Shoe EU\": \"Zapato EU\",\n \"Shoe US\": \"Zapato US\",\n \"Shoe UK\": \"Zapato UK\",\n \"Saved\": \"Guardado\",\n \"Delete Profile\": \"Eliminar Perfil\",\n \"Shoe size (US)\": \"Talla de zapato (US)\",\n \"Shoe size (UK)\": \"Talla de zapato (UK)\",\n \"Shoe size (EU)\": \"Talla de zapato (EU)\",\n \"Generating...\": \"Generando...\",\n \"Foot length\": \"Longitud del pie\",\n \"Size\": \"Talla\",\n \"Try on size\": \"Probar talla\",\n \"e.g.\": \"ej.\",\n \"Drop your photo here or click to upload\": \"Arrastra tu foto aquí o haz clic para subir\",\n \"This usually takes 15-20 seconds\": \"Normalmente tarda 15-20 segundos\",\n \"Try-on result\": \"Resultado de la prueba\",\n \"Try Another\": \"Probar otra\",\n \"Back\": \"Atrás\",\n \"You\": \"Tú\",\n \"Garment\": \"Prenda\",\n \"Your Height\": \"Tu Altura\",\n \"Your Weight\": \"Tu Peso\",\n \"Drag or scroll to set your height\": \"Arrastra o desplaza para establecer tu altura\",\n \"Drag or scroll to set your weight\": \"Arrastra o desplaza para establecer tu peso\",\n \"Enter height and weight first\": \"Introduce primero altura y peso\",\n\n // ── Field labels ──\n \"Lens Width\": \"Ancho de lente\",\n \"Bridge\": \"Puente\",\n \"Arm Length\": \"Largo del brazo\",\n \"Head Circumference\": \"Contorno de cabeza\",\n \"Face Width\": \"Ancho de cara\",\n \"Temple\": \"Patilla\",\n \"Around widest point\": \"Alrededor del punto más ancho\",\n \"Foot Length\": \"Longitud del pie\",\n \"Shoulder\": \"Hombro\",\n \"Thigh\": \"Muslo\",\n \"Hip\": \"Cadera\",\n\n // ── Units ──\n \"Millimetre\": \"Milímetro\",\n \"Centimetre\": \"Centímetro\",\n \"Millimeters\": \"Milímetros\",\n\n // ── Fit descriptors ──\n \"Tight\": \"Ajustado\",\n \"Loose\": \"Holgado\",\n \"Short\": \"Corto\",\n \"Long\": \"Largo\",\n \"Perfect\": \"Perfecto\",\n \"Perfect fit\": \"Ajuste perfecto\",\n \"✓ Fit\": \"✓ Ajuste\",\n \"too short\": \"demasiado corto\",\n \"too long\": \"demasiado largo\",\n \"a bit short\": \"un poco corto\",\n \"a bit long\": \"un poco largo\",\n\n // ── Length pills ──\n \"Length\": \"Largo\",\n \"Length Adjustment\": \"Ajuste de largo\",\n \"Regular\": \"Regular\",\n \"Big\": \"Grande\",\n \"Big & Tall\": \"Grande y alto\",\n\n // ── Misc ──\n \"preview\": \"vista previa\",\n\n // ── BodyProfileView — photo upload area (left section) ──\n \"Upload your photo\": \"Sube tu foto\",\n \"Upload a photo\": \"Subir una foto\",\n \"Click or drag a full-body photo\": \"Haz clic o arrastra una foto de cuerpo entero\",\n \"Or upload a photo for AI sizing\": \"O sube una foto para análisis con IA\",\n \"Photo\": \"Foto\",\n \"How to take a good photo\": \"Cómo tomar una buena foto\",\n \"How to take the best photo\": \"Cómo tomar la mejor foto\",\n \"Do\": \"Sí\",\n \"Don't\": \"No\",\n \"Quick Tip\": \"Consejo rápido\",\n \"The simpler your photo is, the more accurate your virtual try-on results will be.\": \"Cuanto más sencilla sea tu foto, más precisos serán los resultados del probador virtual.\",\n \"Choose a plain background (a light wall is ideal)\": \"Elige un fondo liso (una pared clara es ideal)\",\n \"Stand facing the camera with your full body in frame\": \"Ponte de frente a la cámara con todo tu cuerpo en cuadro\",\n \"Stand straight and still, arms relaxed by your sides\": \"Mantente recto e inmóvil, con los brazos relajados a los lados\",\n \"Stand with your HEELS against a wall for best accuracy\": \"Coloca los TALONES contra una pared para mayor precisión\",\n \"Use natural or even lighting (e.g. near a window)\": \"Usa luz natural o uniforme (p. ej. cerca de una ventana)\",\n \"Wear fitted, simple clothing (e.g. neutral colors)\": \"Usa ropa ajustada y sencilla (p. ej. colores neutros)\",\n \"Don't wear loose, baggy, or layered clothing\": \"No uses ropa holgada, suelta o con varias capas\",\n \"Don't sit, pose, or bend your body\": \"No te sientes, poses ni dobles el cuerpo\",\n \"Don't use strong backlighting\": \"No uses contraluz fuerte\",\n \"Don't take mirror photos or selfies\": \"No tomes fotos de espejo ni selfies\",\n \"Don't apply filters, effects, or edits\": \"No apliques filtros, efectos ni ediciones\",\n\n // ── Age gate ──\n \"Are you 18 or older?\": \"¿Tienes 18 años o más?\",\n \"Yes\": \"Sí\",\n \"No\": \"No\",\n \"Please confirm your age\": \"Por favor confirma tu edad\",\n \"Please confirm that the person in the photo is 18 or older before uploading.\": \"Por favor confirma que la persona en la foto tiene 18 años o más antes de subirla.\",\n \"Under 18 — can't process this photo.\": \"Menor de 18 años — no se puede procesar esta foto.\",\n \"This photo appears to be of a minor. Please upload a photo of someone 18 or older.\": \"Esta foto parece ser de un menor. Sube una foto de una persona de 18 años o más.\",\n \"Different photo needed\": \"Necesitas otra foto\",\n \"Try another photo\": \"Probar otra foto\",\n\n // ── Photo step controls ──\n \"Continue\": \"Continuar\",\n \"Analyze My Size\": \"Analizar mi talla\",\n \"Analyzing photo…\": \"Analizando foto…\",\n \"Details\": \"Detalles\",\n \"Image must be under 10MB\": \"La imagen debe ser menor de 10MB\",\n \"Please upload an image file\": \"Sube un archivo de imagen\",\n \"Please upload a photo\": \"Sube una foto\",\n \"Prefer not to upload a photo?\": \"¿Prefieres no subir una foto?\",\n \"Enter measurements manually\": \"Introducir medidas manualmente\",\n \"Legal Notice\": \"Aviso Legal\",\n \"Your image will be used to generate a virtual try-on preview showing how selected items may look and fit. Images are processed securely and are not stored after generation.\": \"Tu imagen se utilizará para generar una vista previa del probador virtual que muestra cómo pueden verse y ajustarse los artículos seleccionados. Las imágenes se procesan de forma segura y no se almacenan después de la generación.\",\n\n // ── BodyProfileView — form (right section) ──\n \"Body details\": \"Detalles del cuerpo\",\n \"Your body details\": \"Tus datos corporales\",\n \"Body Measurements\": \"Medidas corporales\",\n \"AGE\": \"EDAD\",\n \"years\": \"años\",\n \"Enter your height\": \"Introduce tu altura\",\n \"Enter your weight\": \"Introduce tu peso\",\n \"Enter your bra size\": \"Introduce tu talla de sujetador\",\n \"Please enter your height\": \"Introduce tu altura\",\n \"Please enter your weight\": \"Introduce tu peso\",\n \"Please enter a valid height\": \"Introduce una altura válida\",\n \"Please enter a valid weight\": \"Introduce un peso válido\",\n \"Please enter a valid height (100-250 cm)\": \"Introduce una altura válida (100-250 cm)\",\n \"Please enter a valid weight (30-300 kg)\": \"Introduce un peso válido (30-300 kg)\",\n \"Please select both band and cup size\": \"Selecciona la talla de banda y copa\",\n \"Select your bra size\": \"Selecciona tu talla de sujetador\",\n \"BAND\": \"BANDA\",\n \"BAND SIZE\": \"TALLA DE BANDA\",\n \"CUP\": \"COPA\",\n \"CUP SIZE\": \"TALLA DE COPA\",\n \"BRA REGION\": \"REGIÓN DEL SUJETADOR\",\n \"Imperial\": \"Imperial\",\n \"Metric\": \"Métrico\",\n \"These calibrate the AI — all required.\": \"Estos calibran la IA — todos obligatorios.\",\n \"Using\": \"Usando\",\n \"start fresh\": \"empezar de nuevo\",\n \"Close\": \"Cerrar\",\n\n // ── Body shape questions ──\n \"Which best describes your chest?\": \"¿Cuál describe mejor tu pecho?\",\n \"WHICH BEST DESCRIBES YOUR CHEST?\": \"¿CUÁL DESCRIBE MEJOR TU PECHO?\",\n \"Which best describes your hips?\": \"¿Cuál describe mejor tus caderas?\",\n \"WHICH BEST DESCRIBES YOUR HIPS?\": \"¿CUÁL DESCRIBE MEJOR TUS CADERAS?\",\n \"Which best describes your midsection?\": \"¿Cuál describe mejor tu cintura?\",\n \"WHICH BEST DESCRIBES YOUR MIDSECTION?\": \"¿CUÁL DESCRIBE MEJOR TU CINTURA?\",\n \"Which best describes your seat?\": \"¿Cuál describe mejor tu trasero?\",\n \"WHICH BEST DESCRIBES YOUR SEAT?\": \"¿CUÁL DESCRIBE MEJOR TU TRASERO?\",\n \"Average\": \"Media\",\n \"Narrow\": \"Estrecho\",\n \"Broad\": \"Ancho\",\n \"Curvy\": \"Curvilíneo\",\n \"A slimmer, narrower chest build\": \"Un pecho más delgado y estrecho\",\n \"A moderate, proportionate chest\": \"Un pecho moderado y proporcionado\",\n \"A wider, more muscular chest\": \"Un pecho más ancho y musculoso\",\n \"A flatter midsection with minimal protrusion\": \"Una cintura más plana con mínima protuberancia\",\n \"A moderate, natural midsection shape\": \"Una cintura moderada y natural\",\n \"A fuller, more rounded midsection\": \"Una cintura más llena y redondeada\",\n \"A flatter backside with less projection\": \"Un trasero más plano con menos proyección\",\n \"A moderate, natural backside shape\": \"Un trasero moderado y natural\",\n \"A fuller, more rounded backside\": \"Un trasero más lleno y redondeado\",\n};\nexport default es;\n","const fr: Record<string, string> = {\n \"Virtual Try-On\": \"Essayage Virtuel\",\n \"Find Your Size & See It On You\": \"Trouvez votre taille et essayez-le\",\n \"Get the perfect fit, then try it on virtually\": \"Trouvez la coupe parfaite, puis essayez-le virtuellement\",\n \"Get Your Size\": \"Votre taille\",\n \"Instant fit recommendation\": \"Recommandation de coupe instantanée\",\n \"Try It On\": \"Essayer\",\n \"See how it looks on you\": \"Voyez comment ça vous va\",\n \"Find My Size\": \"Trouver ma taille\",\n \"Takes less than a minute\": \"Prend moins d'une minute\",\n \"Upload a full body photo\": \"Téléchargez une photo en pied\",\n \"JPEG, PNG or WebP (max 10MB)\": \"JPEG, PNG ou WebP (max 10 Mo)\",\n \"Your photo\": \"Votre photo\",\n \"Let's find your best fit\": \"Trouvons votre meilleure coupe\",\n \"Centimeters\": \"Centimètres\",\n \"Inches\": \"Pouces\",\n \"Load saved profile...\": \"Charger un profil enregistré...\",\n \"HEIGHT\": \"TAILLE\",\n \"WEIGHT\": \"POIDS\",\n \"feet\": \"pieds\",\n \"inches\": \"pouces\",\n \"cm\": \"cm\",\n \"kg\": \"kg\",\n \"lbs\": \"livres\",\n \"in\": \"po\",\n \"How to measure\": \"Comment mesurer\",\n \"Hide guide\": \"Masquer le guide\",\n \"I know my measurements\": \"Je connais mes mesures\",\n \"Not sure? Use height & weight instead\": \"Pas sûr ? Utilisez taille et poids\",\n \"Please fill in height and weight\": \"Veuillez renseigner la taille et le poids\",\n \"Please fill in all required fields\": \"Veuillez remplir tous les champs obligatoires\",\n \"Next\": \"Suivant\",\n \"Analyzing your size...\": \"Analyse de votre taille...\",\n \"RECOMMENDED SIZE\": \"TAILLE RECOMMANDÉE\",\n \"NOT RECOMMENDED\": \"NON RECOMMANDÉE\",\n \"Edit measurements\": \"Modifier les mesures\",\n \"Size guide\": \"Guide des tailles\",\n \"Your fit\": \"Votre coupe\",\n \"Your measure\": \"Votre mesure\",\n \"perfect fit\": \"coupe parfaite\",\n \"too tight\": \"trop serré\",\n \"tight\": \"serré\",\n \"a bit tight\": \"un peu serré\",\n \"too loose\": \"trop ample\",\n \"loose\": \"ample\",\n \"a bit loose\": \"un peu ample\",\n \"See fit on your photo\": \"Voir la coupe sur votre photo\",\n \"Hide visual fit\": \"Masquer la coupe visuelle\",\n \"Analyzing...\": \"Analyse...\",\n \"Try it on\": \"Essayer\",\n \"SIZE CHART\": \"TABLEAU DES TAILLES\",\n \"YOUR ESTIMATED MEASUREMENTS\": \"VOS MESURES ESTIMÉES\",\n \"Edit\": \"Modifier\",\n \"Download\": \"Télécharger\",\n \"Size chart\": \"Tableau des tailles\",\n \"Preparing your image...\": \"Préparation de votre image...\",\n \"Analyzing body proportions...\": \"Analyse des proportions corporelles...\",\n \"Matching garment to your photo...\": \"Ajustement du vêtement à votre photo...\",\n \"Generating virtual try-on...\": \"Génération de l'essayage virtuel...\",\n \"Refining details...\": \"Affinement des détails...\",\n \"Almost there...\": \"Presque terminé...\",\n \"Complete!\": \"Terminé !\",\n \"This usually takes 15-25 seconds\": \"Cela prend généralement 15 à 25 secondes\",\n \"Something went wrong\": \"Une erreur est survenue\",\n \"Try Again\": \"Réessayer\",\n \"SDK not configured. Please provide an API key.\": \"SDK non configuré. Veuillez fournir une clé API.\",\n \"Please upload a JPEG, PNG, or WebP image.\": \"Veuillez télécharger une image JPEG, PNG ou WebP.\",\n \"Image must be under 10MB.\": \"L'image doit faire moins de 10 Mo.\",\n \"Try-on generation failed\": \"Échec de la génération de l'essayage\",\n \"Failed to start try-on\": \"Impossible de démarrer l'essayage\",\n \"No product image found. Please set the product-image attribute.\": \"Aucune image produit trouvée. Veuillez définir l'attribut product-image.\",\n \"Powered by\": \"Propulsé par\",\n \"My Profiles\": \"Mes Profils\",\n \"History\": \"Historique\",\n \"No saved profiles yet.\": \"Aucun profil enregistré.\",\n \"No history yet.\": \"Pas encore d'historique.\",\n \"Product\": \"Produit\",\n \"Women's\": \"Femme\",\n \"Men's\": \"Homme\",\n \"Profiles\": \"Profils\",\n \"Women's Profile\": \"Profil Femme\",\n \"Men's Profile\": \"Profil Homme\",\n \"Height\": \"Taille\",\n \"Weight\": \"Poids\",\n \"Chest\": \"Poitrine\",\n \"Bust\": \"Buste\",\n \"Waist\": \"Tour de taille\",\n \"Hips\": \"Hanches\",\n \"Shoulders\": \"Épaules\",\n \"Sleeve\": \"Manche\",\n \"Inseam\": \"Entrejambe\",\n \"Neck\": \"Cou\",\n \"Foot\": \"Pied\",\n \"Shoe EU\": \"Chaussure EU\",\n \"Shoe US\": \"Chaussure US\",\n \"Shoe UK\": \"Chaussure UK\",\n \"Saved\": \"Enregistré\",\n \"Delete Profile\": \"Supprimer le Profil\",\n \"Shoe size (US)\": \"Pointure (US)\",\n \"Shoe size (UK)\": \"Pointure (UK)\",\n \"Shoe size (EU)\": \"Pointure (EU)\",\n \"Generating...\": \"Génération...\",\n \"Foot length\": \"Longueur du pied\",\n \"Size\": \"Taille\",\n \"Try on size\": \"Essayer la taille\",\n \"e.g.\": \"ex.\",\n \"Drop your photo here or click to upload\": \"Déposez votre photo ici ou cliquez pour télécharger\",\n \"This usually takes 15-20 seconds\": \"Cela prend généralement 15 à 20 secondes\",\n \"Try-on result\": \"Résultat de l'essayage\",\n \"Try Another\": \"Essayer une autre\",\n \"Back\": \"Retour\",\n \"You\": \"Vous\",\n \"Garment\": \"Vêtement\",\n \"Your Height\": \"Votre Taille\",\n \"Your Weight\": \"Votre Poids\",\n \"Drag or scroll to set your height\": \"Glissez ou faites défiler pour définir votre taille\",\n \"Drag or scroll to set your weight\": \"Glissez ou faites défiler pour définir votre poids\",\n \"Enter height and weight first\": \"Saisissez d'abord la taille et le poids\",\n\n // ── Field labels ──\n \"Lens Width\": \"Largeur du verre\",\n \"Bridge\": \"Pont\",\n \"Arm Length\": \"Longueur de branche\",\n \"Head Circumference\": \"Tour de tête\",\n \"Face Width\": \"Largeur du visage\",\n \"Temple\": \"Branche\",\n \"Around widest point\": \"Autour du point le plus large\",\n \"Foot Length\": \"Longueur du pied\",\n \"Shoulder\": \"Épaule\",\n \"Thigh\": \"Cuisse\",\n \"Hip\": \"Hanche\",\n\n // ── Units ──\n \"Millimetre\": \"Millimètre\",\n \"Centimetre\": \"Centimètre\",\n \"Millimeters\": \"Millimètres\",\n\n // ── Fit descriptors ──\n \"Tight\": \"Serré\",\n \"Loose\": \"Lâche\",\n \"Short\": \"Court\",\n \"Long\": \"Long\",\n \"Perfect\": \"Parfait\",\n \"Perfect fit\": \"Ajustement parfait\",\n \"✓ Fit\": \"✓ Ajusté\",\n \"too short\": \"trop court\",\n \"too long\": \"trop long\",\n \"a bit short\": \"un peu court\",\n \"a bit long\": \"un peu long\",\n\n // ── Length pills ──\n \"Length\": \"Longueur\",\n \"Length Adjustment\": \"Ajustement de longueur\",\n \"Regular\": \"Régulier\",\n \"Big\": \"Grand\",\n \"Big & Tall\": \"Grand & Long\",\n\n // ── Misc ──\n \"preview\": \"aperçu\",\n\n // ── BodyProfileView — photo upload area (left section) ──\n \"Upload your photo\": \"Téléchargez votre photo\",\n \"Upload a photo\": \"Télécharger une photo\",\n \"Click or drag a full-body photo\": \"Cliquez ou faites glisser une photo en pied\",\n \"Or upload a photo for AI sizing\": \"Ou téléchargez une photo pour l'analyse par IA\",\n \"Photo\": \"Photo\",\n \"How to take a good photo\": \"Comment prendre une bonne photo\",\n \"How to take the best photo\": \"Comment prendre la meilleure photo\",\n \"Do\": \"À faire\",\n \"Don't\": \"À éviter\",\n \"Quick Tip\": \"Astuce rapide\",\n \"The simpler your photo is, the more accurate your virtual try-on results will be.\": \"Plus votre photo est simple, plus les résultats de l'essayage virtuel seront précis.\",\n \"Choose a plain background (a light wall is ideal)\": \"Choisissez un arrière-plan uni (un mur clair est idéal)\",\n \"Stand facing the camera with your full body in frame\": \"Tenez-vous face à la caméra avec tout votre corps dans le cadre\",\n \"Stand straight and still, arms relaxed by your sides\": \"Tenez-vous droit et immobile, bras détendus le long du corps\",\n \"Stand with your HEELS against a wall for best accuracy\": \"Placez vos TALONS contre un mur pour une meilleure précision\",\n \"Use natural or even lighting (e.g. near a window)\": \"Utilisez un éclairage naturel ou uniforme (par ex. près d'une fenêtre)\",\n \"Wear fitted, simple clothing (e.g. neutral colors)\": \"Portez des vêtements ajustés et simples (par ex. couleurs neutres)\",\n \"Don't wear loose, baggy, or layered clothing\": \"Ne portez pas de vêtements amples ou superposés\",\n \"Don't sit, pose, or bend your body\": \"Ne vous asseyez pas, ne posez pas et ne courbez pas votre corps\",\n \"Don't use strong backlighting\": \"N'utilisez pas de contre-jour fort\",\n \"Don't take mirror photos or selfies\": \"Ne prenez pas de photos miroir ni de selfies\",\n \"Don't apply filters, effects, or edits\": \"N'appliquez pas de filtres, d'effets ou d'éditions\",\n\n // ── Age gate ──\n \"Are you 18 or older?\": \"Avez-vous 18 ans ou plus ?\",\n \"Yes\": \"Oui\",\n \"No\": \"Non\",\n \"Please confirm your age\": \"Veuillez confirmer votre âge\",\n \"Please confirm that the person in the photo is 18 or older before uploading.\": \"Veuillez confirmer que la personne sur la photo a 18 ans ou plus avant le téléchargement.\",\n \"Under 18 — can't process this photo.\": \"Moins de 18 ans — impossible de traiter cette photo.\",\n \"This photo appears to be of a minor. Please upload a photo of someone 18 or older.\": \"Cette photo semble être celle d'un mineur. Veuillez télécharger la photo d'une personne de 18 ans ou plus.\",\n \"Different photo needed\": \"Une autre photo est nécessaire\",\n \"Try another photo\": \"Essayez une autre photo\",\n\n // ── Photo step controls ──\n \"Continue\": \"Continuer\",\n \"Analyze My Size\": \"Analyser ma taille\",\n \"Analyzing photo…\": \"Analyse de la photo…\",\n \"Details\": \"Détails\",\n \"Image must be under 10MB\": \"L'image doit faire moins de 10 Mo\",\n \"Please upload an image file\": \"Veuillez télécharger un fichier image\",\n \"Please upload a photo\": \"Veuillez télécharger une photo\",\n \"Prefer not to upload a photo?\": \"Vous préférez ne pas télécharger de photo ?\",\n \"Enter measurements manually\": \"Saisir les mesures manuellement\",\n \"Legal Notice\": \"Mention légale\",\n \"Your image will be used to generate a virtual try-on preview showing how selected items may look and fit. Images are processed securely and are not stored after generation.\": \"Votre image sera utilisée pour générer un aperçu d'essayage virtuel montrant l'apparence et l'ajustement des articles sélectionnés. Les images sont traitées de manière sécurisée et ne sont pas conservées après la génération.\",\n\n // ── BodyProfileView — form (right section) ──\n \"Body details\": \"Détails corporels\",\n \"Your body details\": \"Vos détails corporels\",\n \"Body Measurements\": \"Mensurations\",\n \"AGE\": \"ÂGE\",\n \"years\": \"ans\",\n \"Enter your height\": \"Saisissez votre taille\",\n \"Enter your weight\": \"Saisissez votre poids\",\n \"Enter your bra size\": \"Saisissez votre taille de soutien-gorge\",\n \"Please enter your height\": \"Veuillez saisir votre taille\",\n \"Please enter your weight\": \"Veuillez saisir votre poids\",\n \"Please enter a valid height\": \"Veuillez saisir une taille valide\",\n \"Please enter a valid weight\": \"Veuillez saisir un poids valide\",\n \"Please enter a valid height (100-250 cm)\": \"Veuillez saisir une taille valide (100-250 cm)\",\n \"Please enter a valid weight (30-300 kg)\": \"Veuillez saisir un poids valide (30-300 kg)\",\n \"Please select both band and cup size\": \"Veuillez sélectionner la taille de tour de poitrine et de bonnet\",\n \"Select your bra size\": \"Sélectionnez votre taille de soutien-gorge\",\n \"BAND\": \"TOUR\",\n \"BAND SIZE\": \"TOUR DE POITRINE\",\n \"CUP\": \"BONNET\",\n \"CUP SIZE\": \"TAILLE DE BONNET\",\n \"BRA REGION\": \"RÉGION DU SOUTIEN-GORGE\",\n \"Imperial\": \"Impérial\",\n \"Metric\": \"Métrique\",\n \"These calibrate the AI — all required.\": \"Ces données calibrent l'IA — toutes obligatoires.\",\n \"Using\": \"Utilise\",\n \"start fresh\": \"recommencer\",\n \"Close\": \"Fermer\",\n\n // ── Body shape questions ──\n \"Which best describes your chest?\": \"Lequel décrit le mieux votre poitrine ?\",\n \"WHICH BEST DESCRIBES YOUR CHEST?\": \"LEQUEL DÉCRIT LE MIEUX VOTRE POITRINE ?\",\n \"Which best describes your hips?\": \"Lequel décrit le mieux vos hanches ?\",\n \"WHICH BEST DESCRIBES YOUR HIPS?\": \"LEQUEL DÉCRIT LE MIEUX VOS HANCHES ?\",\n \"Which best describes your midsection?\": \"Lequel décrit le mieux votre taille ?\",\n \"WHICH BEST DESCRIBES YOUR MIDSECTION?\": \"LEQUEL DÉCRIT LE MIEUX VOTRE TAILLE ?\",\n \"Which best describes your seat?\": \"Lequel décrit le mieux votre assise ?\",\n \"WHICH BEST DESCRIBES YOUR SEAT?\": \"LEQUEL DÉCRIT LE MIEUX VOTRE ASSISE ?\",\n \"Average\": \"Moyenne\",\n \"Narrow\": \"Étroit\",\n \"Broad\": \"Large\",\n \"Curvy\": \"Sinueux\",\n \"A slimmer, narrower chest build\": \"Une poitrine plus mince et étroite\",\n \"A moderate, proportionate chest\": \"Une poitrine modérée et proportionnée\",\n \"A wider, more muscular chest\": \"Une poitrine plus large et musclée\",\n \"A flatter midsection with minimal protrusion\": \"Une taille plus plate avec peu de protubérance\",\n \"A moderate, natural midsection shape\": \"Une taille modérée et naturelle\",\n \"A fuller, more rounded midsection\": \"Une taille plus pleine et arrondie\",\n \"A flatter backside with less projection\": \"Un arrière plus plat avec moins de projection\",\n \"A moderate, natural backside shape\": \"Un arrière modéré et naturel\",\n \"A fuller, more rounded backside\": \"Un arrière plus plein et arrondi\",\n};\nexport default fr;\n","const de: Record<string, string> = {\n \"Virtual Try-On\": \"Virtuelle Anprobe\",\n \"Find Your Size & See It On You\": \"Finden Sie Ihre Größe und probieren Sie es an\",\n \"Get the perfect fit, then try it on virtually\": \"Finden Sie die perfekte Passform und probieren Sie es virtuell an\",\n \"Get Your Size\": \"Ihre Größe\",\n \"Instant fit recommendation\": \"Sofortige Passformempfehlung\",\n \"Try It On\": \"Anprobieren\",\n \"See how it looks on you\": \"Sehen Sie, wie es Ihnen steht\",\n \"Find My Size\": \"Meine Größe finden\",\n \"Takes less than a minute\": \"Dauert weniger als eine Minute\",\n \"Upload a full body photo\": \"Laden Sie ein Ganzkörperfoto hoch\",\n \"JPEG, PNG or WebP (max 10MB)\": \"JPEG, PNG oder WebP (max. 10 MB)\",\n \"Your photo\": \"Ihr Foto\",\n \"Let's find your best fit\": \"Finden wir Ihre beste Passform\",\n \"Centimeters\": \"Zentimeter\",\n \"Inches\": \"Zoll\",\n \"Load saved profile...\": \"Gespeichertes Profil laden...\",\n \"HEIGHT\": \"GRÖSSE\",\n \"WEIGHT\": \"GEWICHT\",\n \"feet\": \"Fuß\",\n \"inches\": \"Zoll\",\n \"cm\": \"cm\",\n \"kg\": \"kg\",\n \"lbs\": \"Pfund\",\n \"in\": \"Zoll\",\n \"How to measure\": \"So messen Sie\",\n \"Hide guide\": \"Anleitung ausblenden\",\n \"I know my measurements\": \"Ich kenne meine Maße\",\n \"Not sure? Use height & weight instead\": \"Unsicher? Verwenden Sie Größe und Gewicht\",\n \"Please fill in height and weight\": \"Bitte Größe und Gewicht eingeben\",\n \"Please fill in all required fields\": \"Bitte alle Pflichtfelder ausfüllen\",\n \"Next\": \"Weiter\",\n \"Analyzing your size...\": \"Ihre Größe wird analysiert...\",\n \"RECOMMENDED SIZE\": \"EMPFOHLENE GRÖSSE\",\n \"NOT RECOMMENDED\": \"NICHT EMPFOHLEN\",\n \"Edit measurements\": \"Maße bearbeiten\",\n \"Size guide\": \"Größentabelle\",\n \"Your fit\": \"Ihre Passform\",\n \"Your measure\": \"Ihr Maß\",\n \"perfect fit\": \"perfekte Passform\",\n \"too tight\": \"zu eng\",\n \"tight\": \"eng\",\n \"a bit tight\": \"etwas eng\",\n \"too loose\": \"zu weit\",\n \"loose\": \"weit\",\n \"a bit loose\": \"etwas weit\",\n \"See fit on your photo\": \"Passform auf Ihrem Foto sehen\",\n \"Hide visual fit\": \"Passformanzeige ausblenden\",\n \"Analyzing...\": \"Analyse...\",\n \"Try it on\": \"Anprobieren\",\n \"SIZE CHART\": \"GRÖSSENTABELLE\",\n \"YOUR ESTIMATED MEASUREMENTS\": \"IHRE GESCHÄTZTEN MASSE\",\n \"Edit\": \"Bearbeiten\",\n \"Download\": \"Herunterladen\",\n \"Size chart\": \"Größentabelle\",\n \"Preparing your image...\": \"Ihr Bild wird vorbereitet...\",\n \"Analyzing body proportions...\": \"Körperproportionen werden analysiert...\",\n \"Matching garment to your photo...\": \"Kleidungsstück wird an Ihr Foto angepasst...\",\n \"Generating virtual try-on...\": \"Virtuelle Anprobe wird erstellt...\",\n \"Refining details...\": \"Details werden verfeinert...\",\n \"Almost there...\": \"Fast fertig...\",\n \"Complete!\": \"Fertig!\",\n \"This usually takes 15-25 seconds\": \"Dies dauert normalerweise 15–25 Sekunden\",\n \"Something went wrong\": \"Etwas ist schiefgelaufen\",\n \"Try Again\": \"Erneut versuchen\",\n \"SDK not configured. Please provide an API key.\": \"SDK nicht konfiguriert. Bitte geben Sie einen API-Schlüssel an.\",\n \"Please upload a JPEG, PNG, or WebP image.\": \"Bitte laden Sie ein JPEG-, PNG- oder WebP-Bild hoch.\",\n \"Image must be under 10MB.\": \"Das Bild muss kleiner als 10 MB sein.\",\n \"Try-on generation failed\": \"Anprobe-Erstellung fehlgeschlagen\",\n \"Failed to start try-on\": \"Anprobe konnte nicht gestartet werden\",\n \"No product image found. Please set the product-image attribute.\": \"Kein Produktbild gefunden. Bitte setzen Sie das product-image Attribut.\",\n \"Powered by\": \"Unterstützt von\",\n \"My Profiles\": \"Meine Profile\",\n \"History\": \"Verlauf\",\n \"No saved profiles yet.\": \"Noch keine gespeicherten Profile.\",\n \"No history yet.\": \"Noch kein Verlauf.\",\n \"Product\": \"Produkt\",\n \"Women's\": \"Damen\",\n \"Men's\": \"Herren\",\n \"Profiles\": \"Profile\",\n \"Women's Profile\": \"Damenprofil\",\n \"Men's Profile\": \"Herrenprofil\",\n \"Height\": \"Größe\",\n \"Weight\": \"Gewicht\",\n \"Chest\": \"Brust\",\n \"Bust\": \"Oberweite\",\n \"Waist\": \"Taille\",\n \"Hips\": \"Hüfte\",\n \"Shoulders\": \"Schultern\",\n \"Sleeve\": \"Ärmel\",\n \"Inseam\": \"Schrittlänge\",\n \"Neck\": \"Hals\",\n \"Foot\": \"Fuß\",\n \"Shoe EU\": \"Schuh EU\",\n \"Shoe US\": \"Schuh US\",\n \"Shoe UK\": \"Schuh UK\",\n \"Saved\": \"Gespeichert\",\n \"Delete Profile\": \"Profil löschen\",\n \"Shoe size (US)\": \"Schuhgröße (US)\",\n \"Shoe size (UK)\": \"Schuhgröße (UK)\",\n \"Shoe size (EU)\": \"Schuhgröße (EU)\",\n \"Generating...\": \"Wird erstellt...\",\n \"Foot length\": \"Fußlänge\",\n \"Size\": \"Größe\",\n \"Try on size\": \"Größe anprobieren\",\n \"e.g.\": \"z.B.\",\n \"Drop your photo here or click to upload\": \"Foto hier ablegen oder klicken zum Hochladen\",\n \"This usually takes 15-20 seconds\": \"Dies dauert normalerweise 15–20 Sekunden\",\n \"Try-on result\": \"Anprobe-Ergebnis\",\n \"Try Another\": \"Andere probieren\",\n \"Back\": \"Zurück\",\n \"You\": \"Du\",\n \"Garment\": \"Kleidung\",\n \"Your Height\": \"Deine Größe\",\n \"Your Weight\": \"Dein Gewicht\",\n \"Drag or scroll to set your height\": \"Ziehen oder scrollen Sie, um Ihre Größe einzustellen\",\n \"Drag or scroll to set your weight\": \"Ziehen oder scrollen Sie, um Ihr Gewicht einzustellen\",\n \"Enter height and weight first\": \"Geben Sie zuerst Größe und Gewicht ein\",\n\n // ── Field labels ──\n \"Lens Width\": \"Glasbreite\",\n \"Bridge\": \"Steg\",\n \"Arm Length\": \"Bügellänge\",\n \"Head Circumference\": \"Kopfumfang\",\n \"Face Width\": \"Gesichtsbreite\",\n \"Temple\": \"Bügel\",\n \"Around widest point\": \"Um die breiteste Stelle\",\n \"Foot Length\": \"Fußlänge\",\n \"Shoulder\": \"Schulter\",\n \"Thigh\": \"Oberschenkel\",\n \"Hip\": \"Hüfte\",\n\n // ── Units ──\n \"Millimetre\": \"Millimeter\",\n \"Centimetre\": \"Zentimeter\",\n \"Millimeters\": \"Millimeter\",\n\n // ── Fit descriptors ──\n \"Tight\": \"Eng\",\n \"Loose\": \"Locker\",\n \"Short\": \"Kurz\",\n \"Long\": \"Lang\",\n \"Perfect\": \"Perfekt\",\n \"Perfect fit\": \"Perfekte Passform\",\n \"✓ Fit\": \"✓ Passt\",\n \"too short\": \"zu kurz\",\n \"too long\": \"zu lang\",\n \"a bit short\": \"etwas kurz\",\n \"a bit long\": \"etwas lang\",\n\n // ── Length pills ──\n \"Length\": \"Länge\",\n \"Length Adjustment\": \"Längenanpassung\",\n \"Regular\": \"Regulär\",\n \"Big\": \"Groß\",\n \"Big & Tall\": \"Groß & Lang\",\n\n // ── Misc ──\n \"preview\": \"Vorschau\",\n\n // ── BodyProfileView — photo upload area (left section) ──\n \"Upload your photo\": \"Lade dein Foto hoch\",\n \"Upload a photo\": \"Foto hochladen\",\n \"Click or drag a full-body photo\": \"Klicke oder ziehe ein Ganzkörperfoto\",\n \"Or upload a photo for AI sizing\": \"Oder lade ein Foto für die KI-Größenanalyse hoch\",\n \"Photo\": \"Foto\",\n \"How to take a good photo\": \"So machst du ein gutes Foto\",\n \"How to take the best photo\": \"So machst du das beste Foto\",\n \"Do\": \"Tu das\",\n \"Don't\": \"Vermeide\",\n \"Quick Tip\": \"Schneller Tipp\",\n \"The simpler your photo is, the more accurate your virtual try-on results will be.\": \"Je einfacher dein Foto ist, desto genauer sind die Ergebnisse der virtuellen Anprobe.\",\n \"Choose a plain background (a light wall is ideal)\": \"Wähle einen schlichten Hintergrund (eine helle Wand ist ideal)\",\n \"Stand facing the camera with your full body in frame\": \"Stelle dich mit dem ganzen Körper im Bild zur Kamera\",\n \"Stand straight and still, arms relaxed by your sides\": \"Stehe gerade und still, Arme entspannt an den Seiten\",\n \"Stand with your HEELS against a wall for best accuracy\": \"Stelle dich mit den FERSEN an eine Wand für beste Genauigkeit\",\n \"Use natural or even lighting (e.g. near a window)\": \"Nutze natürliches oder gleichmäßiges Licht (z. B. am Fenster)\",\n \"Wear fitted, simple clothing (e.g. neutral colors)\": \"Trage eng anliegende, schlichte Kleidung (z. B. neutrale Farben)\",\n \"Don't wear loose, baggy, or layered clothing\": \"Trage keine weite, lockere oder geschichtete Kleidung\",\n \"Don't sit, pose, or bend your body\": \"Sitze nicht, posiere nicht und beuge deinen Körper nicht\",\n \"Don't use strong backlighting\": \"Vermeide starkes Gegenlicht\",\n \"Don't take mirror photos or selfies\": \"Mache keine Spiegelfotos oder Selfies\",\n \"Don't apply filters, effects, or edits\": \"Wende keine Filter, Effekte oder Bearbeitungen an\",\n\n // ── Age gate ──\n \"Are you 18 or older?\": \"Bist du 18 Jahre oder älter?\",\n \"Yes\": \"Ja\",\n \"No\": \"Nein\",\n \"Please confirm your age\": \"Bitte bestätige dein Alter\",\n \"Please confirm that the person in the photo is 18 or older before uploading.\": \"Bitte bestätige, dass die Person auf dem Foto 18 Jahre oder älter ist, bevor du es hochlädst.\",\n \"Under 18 — can't process this photo.\": \"Unter 18 — dieses Foto kann nicht verarbeitet werden.\",\n \"This photo appears to be of a minor. Please upload a photo of someone 18 or older.\": \"Dieses Foto scheint eine minderjährige Person zu zeigen. Bitte lade ein Foto einer Person ab 18 Jahren hoch.\",\n \"Different photo needed\": \"Anderes Foto erforderlich\",\n \"Try another photo\": \"Anderes Foto versuchen\",\n\n // ── Photo step controls ──\n \"Continue\": \"Weiter\",\n \"Analyze My Size\": \"Meine Größe analysieren\",\n \"Analyzing photo…\": \"Foto wird analysiert…\",\n \"Details\": \"Details\",\n \"Image must be under 10MB\": \"Das Bild muss kleiner als 10 MB sein\",\n \"Please upload an image file\": \"Bitte lade eine Bilddatei hoch\",\n \"Please upload a photo\": \"Bitte lade ein Foto hoch\",\n \"Prefer not to upload a photo?\": \"Möchtest du kein Foto hochladen?\",\n \"Enter measurements manually\": \"Maße manuell eingeben\",\n \"Legal Notice\": \"Rechtlicher Hinweis\",\n \"Your image will be used to generate a virtual try-on preview showing how selected items may look and fit. Images are processed securely and are not stored after generation.\": \"Dein Bild wird verwendet, um eine virtuelle Anprobe zu erstellen, die zeigt, wie ausgewählte Artikel aussehen und sitzen können. Bilder werden sicher verarbeitet und nach der Erstellung nicht gespeichert.\",\n\n // ── BodyProfileView — form (right section) ──\n \"Body details\": \"Körperdetails\",\n \"Your body details\": \"Deine Körperdetails\",\n \"Body Measurements\": \"Körpermaße\",\n \"AGE\": \"ALTER\",\n \"years\": \"Jahre\",\n \"Enter your height\": \"Gib deine Größe ein\",\n \"Enter your weight\": \"Gib dein Gewicht ein\",\n \"Enter your bra size\": \"Gib deine BH-Größe ein\",\n \"Please enter your height\": \"Bitte gib deine Größe ein\",\n \"Please enter your weight\": \"Bitte gib dein Gewicht ein\",\n \"Please enter a valid height\": \"Bitte gib eine gültige Größe ein\",\n \"Please enter a valid weight\": \"Bitte gib ein gültiges Gewicht ein\",\n \"Please enter a valid height (100-250 cm)\": \"Bitte gib eine gültige Größe ein (100-250 cm)\",\n \"Please enter a valid weight (30-300 kg)\": \"Bitte gib ein gültiges Gewicht ein (30-300 kg)\",\n \"Please select both band and cup size\": \"Bitte wähle Unterbrustweite und Cup-Größe\",\n \"Select your bra size\": \"Wähle deine BH-Größe\",\n \"BAND\": \"UNTERBRUST\",\n \"BAND SIZE\": \"UNTERBRUSTWEITE\",\n \"CUP\": \"CUP\",\n \"CUP SIZE\": \"CUP-GRÖSSE\",\n \"BRA REGION\": \"BH-REGION\",\n \"Imperial\": \"Imperial\",\n \"Metric\": \"Metrisch\",\n \"These calibrate the AI — all required.\": \"Diese kalibrieren die KI — alle Pflichtangaben.\",\n \"Using\": \"Verwendet\",\n \"start fresh\": \"neu beginnen\",\n \"Close\": \"Schließen\",\n\n // ── Body shape questions ──\n \"Which best describes your chest?\": \"Was beschreibt deine Brust am besten?\",\n \"WHICH BEST DESCRIBES YOUR CHEST?\": \"WAS BESCHREIBT DEINE BRUST AM BESTEN?\",\n \"Which best describes your hips?\": \"Was beschreibt deine Hüften am besten?\",\n \"WHICH BEST DESCRIBES YOUR HIPS?\": \"WAS BESCHREIBT DEINE HÜFTEN AM BESTEN?\",\n \"Which best describes your midsection?\": \"Was beschreibt deine Körpermitte am besten?\",\n \"WHICH BEST DESCRIBES YOUR MIDSECTION?\": \"WAS BESCHREIBT DEINE KÖRPERMITTE AM BESTEN?\",\n \"Which best describes your seat?\": \"Was beschreibt dein Gesäß am besten?\",\n \"WHICH BEST DESCRIBES YOUR SEAT?\": \"WAS BESCHREIBT DEIN GESÄSS AM BESTEN?\",\n \"Average\": \"Durchschnittlich\",\n \"Narrow\": \"Schmal\",\n \"Broad\": \"Breit\",\n \"Curvy\": \"Kurvig\",\n \"A slimmer, narrower chest build\": \"Eine schlankere, schmalere Brustform\",\n \"A moderate, proportionate chest\": \"Eine moderate, proportionierte Brust\",\n \"A wider, more muscular chest\": \"Eine breitere, muskulösere Brust\",\n \"A flatter midsection with minimal protrusion\": \"Eine flachere Körpermitte mit minimaler Wölbung\",\n \"A moderate, natural midsection shape\": \"Eine moderate, natürliche Körpermitte\",\n \"A fuller, more rounded midsection\": \"Eine vollere, rundere Körpermitte\",\n \"A flatter backside with less projection\": \"Ein flacheres Gesäß mit weniger Wölbung\",\n \"A moderate, natural backside shape\": \"Ein moderates, natürliches Gesäß\",\n \"A fuller, more rounded backside\": \"Ein volleres, runderes Gesäß\",\n};\nexport default de;\n","const it: Record<string, string> = {\n \"Virtual Try-On\": \"Prova Virtuale\",\n \"Find Your Size & See It On You\": \"Trova la tua taglia e provalo\",\n \"Get the perfect fit, then try it on virtually\": \"Trova la vestibilità perfetta, poi provalo virtualmente\",\n \"Get Your Size\": \"La tua taglia\",\n \"Instant fit recommendation\": \"Raccomandazione vestibilità istantanea\",\n \"Try It On\": \"Provalo\",\n \"See how it looks on you\": \"Guarda come ti sta\",\n \"Find My Size\": \"Trova la mia taglia\",\n \"Takes less than a minute\": \"Richiede meno di un minuto\",\n \"Upload a full body photo\": \"Carica una foto a figura intera\",\n \"JPEG, PNG or WebP (max 10MB)\": \"JPEG, PNG o WebP (max 10MB)\",\n \"Your photo\": \"La tua foto\",\n \"Let's find your best fit\": \"Troviamo la tua vestibilità ideale\",\n \"Centimeters\": \"Centimetri\",\n \"Inches\": \"Pollici\",\n \"Load saved profile...\": \"Carica profilo salvato...\",\n \"HEIGHT\": \"ALTEZZA\",\n \"WEIGHT\": \"PESO\",\n \"feet\": \"piedi\",\n \"inches\": \"pollici\",\n \"cm\": \"cm\",\n \"kg\": \"kg\",\n \"lbs\": \"libbre\",\n \"in\": \"poll\",\n \"How to measure\": \"Come misurare\",\n \"Hide guide\": \"Nascondi guida\",\n \"I know my measurements\": \"Conosco le mie misure\",\n \"Not sure? Use height & weight instead\": \"Non sei sicuro? Usa altezza e peso\",\n \"Please fill in height and weight\": \"Inserisci altezza e peso\",\n \"Please fill in all required fields\": \"Compila tutti i campi obbligatori\",\n \"Next\": \"Avanti\",\n \"Analyzing your size...\": \"Analisi della tua taglia...\",\n \"RECOMMENDED SIZE\": \"TAGLIA CONSIGLIATA\",\n \"NOT RECOMMENDED\": \"NON CONSIGLIATA\",\n \"Edit measurements\": \"Modifica misure\",\n \"Size guide\": \"Guida alle taglie\",\n \"Your fit\": \"La tua vestibilità\",\n \"Your measure\": \"La tua misura\",\n \"perfect fit\": \"vestibilità perfetta\",\n \"too tight\": \"troppo stretto\",\n \"tight\": \"stretto\",\n \"a bit tight\": \"un po' stretto\",\n \"too loose\": \"troppo largo\",\n \"loose\": \"largo\",\n \"a bit loose\": \"un po' largo\",\n \"See fit on your photo\": \"Vedi vestibilità sulla tua foto\",\n \"Hide visual fit\": \"Nascondi vestibilità visiva\",\n \"Analyzing...\": \"Analisi...\",\n \"Try it on\": \"Provalo\",\n \"SIZE CHART\": \"TABELLA TAGLIE\",\n \"YOUR ESTIMATED MEASUREMENTS\": \"LE TUE MISURE STIMATE\",\n \"Edit\": \"Modifica\",\n \"Download\": \"Scarica\",\n \"Size chart\": \"Tabella taglie\",\n \"Preparing your image...\": \"Preparazione dell'immagine...\",\n \"Analyzing body proportions...\": \"Analisi delle proporzioni corporee...\",\n \"Matching garment to your photo...\": \"Adattamento del capo alla tua foto...\",\n \"Generating virtual try-on...\": \"Generazione della prova virtuale...\",\n \"Refining details...\": \"Rifinitura dei dettagli...\",\n \"Almost there...\": \"Quasi pronto...\",\n \"Complete!\": \"Completato!\",\n \"This usually takes 15-25 seconds\": \"Di solito richiede 15-25 secondi\",\n \"Something went wrong\": \"Qualcosa è andato storto\",\n \"Try Again\": \"Riprova\",\n \"SDK not configured. Please provide an API key.\": \"SDK non configurato. Fornisci una chiave API.\",\n \"Please upload a JPEG, PNG, or WebP image.\": \"Carica un'immagine JPEG, PNG o WebP.\",\n \"Image must be under 10MB.\": \"L'immagine deve essere inferiore a 10MB.\",\n \"Try-on generation failed\": \"Generazione della prova fallita\",\n \"Failed to start try-on\": \"Impossibile avviare la prova\",\n \"No product image found. Please set the product-image attribute.\": \"Nessuna immagine prodotto trovata. Imposta l'attributo product-image.\",\n \"Powered by\": \"Powered by\",\n \"My Profiles\": \"I miei Profili\",\n \"History\": \"Cronologia\",\n \"No saved profiles yet.\": \"Nessun profilo salvato.\",\n \"No history yet.\": \"Nessuna cronologia.\",\n \"Product\": \"Prodotto\",\n \"Women's\": \"Donna\",\n \"Men's\": \"Uomo\",\n \"Profiles\": \"Profili\",\n \"Women's Profile\": \"Profilo Donna\",\n \"Men's Profile\": \"Profilo Uomo\",\n \"Height\": \"Altezza\",\n \"Weight\": \"Peso\",\n \"Chest\": \"Petto\",\n \"Bust\": \"Busto\",\n \"Waist\": \"Vita\",\n \"Hips\": \"Fianchi\",\n \"Shoulders\": \"Spalle\",\n \"Sleeve\": \"Manica\",\n \"Inseam\": \"Cavallo\",\n \"Neck\": \"Collo\",\n \"Foot\": \"Piede\",\n \"Shoe EU\": \"Scarpa EU\",\n \"Shoe US\": \"Scarpa US\",\n \"Shoe UK\": \"Scarpa UK\",\n \"Saved\": \"Salvato\",\n \"Delete Profile\": \"Elimina Profilo\",\n \"Shoe size (US)\": \"Numero di scarpa (US)\",\n \"Shoe size (UK)\": \"Numero di scarpa (UK)\",\n \"Shoe size (EU)\": \"Numero di scarpa (EU)\",\n \"Generating...\": \"Generazione...\",\n \"Foot length\": \"Lunghezza del piede\",\n \"Size\": \"Taglia\",\n \"Try on size\": \"Prova la taglia\",\n \"e.g.\": \"es.\",\n \"Drop your photo here or click to upload\": \"Trascina la foto qui o clicca per caricare\",\n \"This usually takes 15-20 seconds\": \"Di solito richiede 15-20 secondi\",\n \"Try-on result\": \"Risultato della prova\",\n \"Try Another\": \"Prova un'altra\",\n \"Back\": \"Indietro\",\n \"You\": \"Tu\",\n \"Garment\": \"Capo\",\n \"Your Height\": \"La Tua Altezza\",\n \"Your Weight\": \"Il Tuo Peso\",\n \"Drag or scroll to set your height\": \"Trascina o scorri per impostare la tua altezza\",\n \"Drag or scroll to set your weight\": \"Trascina o scorri per impostare il tuo peso\",\n \"Enter height and weight first\": \"Inserisci prima altezza e peso\",\n\n // ── Field labels ──\n \"Lens Width\": \"Larghezza lente\",\n \"Bridge\": \"Ponte\",\n \"Arm Length\": \"Lunghezza asta\",\n \"Head Circumference\": \"Circonferenza testa\",\n \"Face Width\": \"Larghezza viso\",\n \"Temple\": \"Asta\",\n \"Around widest point\": \"Intorno al punto più largo\",\n \"Foot Length\": \"Lunghezza del piede\",\n \"Shoulder\": \"Spalla\",\n \"Thigh\": \"Coscia\",\n \"Hip\": \"Fianco\",\n\n // ── Units ──\n \"Millimetre\": \"Millimetro\",\n \"Centimetre\": \"Centimetro\",\n \"Millimeters\": \"Millimetri\",\n\n // ── Fit descriptors ──\n \"Tight\": \"Stretto\",\n \"Loose\": \"Largo\",\n \"Short\": \"Corto\",\n \"Long\": \"Lungo\",\n \"Perfect\": \"Perfetto\",\n \"Perfect fit\": \"Vestibilità perfetta\",\n \"✓ Fit\": \"✓ Adatto\",\n \"too short\": \"troppo corto\",\n \"too long\": \"troppo lungo\",\n \"a bit short\": \"un po' corto\",\n \"a bit long\": \"un po' lungo\",\n\n // ── Length pills ──\n \"Length\": \"Lunghezza\",\n \"Length Adjustment\": \"Regolazione lunghezza\",\n \"Regular\": \"Regolare\",\n \"Big\": \"Grande\",\n \"Big & Tall\": \"Grande & Alto\",\n\n // ── Misc ──\n \"preview\": \"anteprima\",\n\n // ── BodyProfileView — photo upload area (left section) ──\n \"Upload your photo\": \"Carica la tua foto\",\n \"Upload a photo\": \"Carica una foto\",\n \"Click or drag a full-body photo\": \"Clicca o trascina una foto a figura intera\",\n \"Or upload a photo for AI sizing\": \"Oppure carica una foto per l'analisi AI\",\n \"Photo\": \"Foto\",\n \"How to take a good photo\": \"Come scattare una buona foto\",\n \"How to take the best photo\": \"Come scattare la foto migliore\",\n \"Do\": \"Da fare\",\n \"Don't\": \"Da evitare\",\n \"Quick Tip\": \"Suggerimento rapido\",\n \"The simpler your photo is, the more accurate your virtual try-on results will be.\": \"Più la foto è semplice, più accurati saranno i risultati della prova virtuale.\",\n \"Choose a plain background (a light wall is ideal)\": \"Scegli uno sfondo semplice (una parete chiara è ideale)\",\n \"Stand facing the camera with your full body in frame\": \"Mettiti di fronte alla fotocamera con tutto il corpo nell'inquadratura\",\n \"Stand straight and still, arms relaxed by your sides\": \"Stai dritto e fermo, con le braccia rilassate lungo i fianchi\",\n \"Stand with your HEELS against a wall for best accuracy\": \"Appoggia i TALLONI a un muro per la massima precisione\",\n \"Use natural or even lighting (e.g. near a window)\": \"Usa luce naturale o uniforme (es. vicino a una finestra)\",\n \"Wear fitted, simple clothing (e.g. neutral colors)\": \"Indossa abiti aderenti e semplici (es. colori neutri)\",\n \"Don't wear loose, baggy, or layered clothing\": \"Non indossare abiti larghi, ampi o a strati\",\n \"Don't sit, pose, or bend your body\": \"Non sederti, non posare e non piegare il corpo\",\n \"Don't use strong backlighting\": \"Non usare forte controluce\",\n \"Don't take mirror photos or selfies\": \"Non scattare foto allo specchio o selfie\",\n \"Don't apply filters, effects, or edits\": \"Non applicare filtri, effetti o modifiche\",\n\n // ── Age gate ──\n \"Are you 18 or older?\": \"Hai 18 anni o più?\",\n \"Yes\": \"Sì\",\n \"No\": \"No\",\n \"Please confirm your age\": \"Per favore conferma la tua età\",\n \"Please confirm that the person in the photo is 18 or older before uploading.\": \"Conferma che la persona nella foto ha 18 anni o più prima di caricarla.\",\n \"Under 18 — can't process this photo.\": \"Meno di 18 anni — impossibile elaborare questa foto.\",\n \"This photo appears to be of a minor. Please upload a photo of someone 18 or older.\": \"Questa foto sembra ritrarre un minore. Carica la foto di una persona di 18 anni o più.\",\n \"Different photo needed\": \"È necessaria un'altra foto\",\n \"Try another photo\": \"Prova un'altra foto\",\n\n // ── Photo step controls ──\n \"Continue\": \"Continua\",\n \"Analyze My Size\": \"Analizza la mia taglia\",\n \"Analyzing photo…\": \"Analisi della foto…\",\n \"Details\": \"Dettagli\",\n \"Image must be under 10MB\": \"L'immagine deve essere inferiore a 10 MB\",\n \"Please upload an image file\": \"Carica un file immagine\",\n \"Please upload a photo\": \"Carica una foto\",\n \"Prefer not to upload a photo?\": \"Preferisci non caricare una foto?\",\n \"Enter measurements manually\": \"Inserisci le misure manualmente\",\n \"Legal Notice\": \"Avviso legale\",\n \"Your image will be used to generate a virtual try-on preview showing how selected items may look and fit. Images are processed securely and are not stored after generation.\": \"La tua immagine verrà utilizzata per generare un'anteprima della prova virtuale che mostra come gli articoli selezionati possono apparire e calzare. Le immagini sono elaborate in modo sicuro e non vengono archiviate dopo la generazione.\",\n\n // ── BodyProfileView — form (right section) ──\n \"Body details\": \"Dettagli corporei\",\n \"Your body details\": \"I tuoi dettagli corporei\",\n \"Body Measurements\": \"Misure corporee\",\n \"AGE\": \"ETÀ\",\n \"years\": \"anni\",\n \"Enter your height\": \"Inserisci la tua altezza\",\n \"Enter your weight\": \"Inserisci il tuo peso\",\n \"Enter your bra size\": \"Inserisci la taglia del reggiseno\",\n \"Please enter your height\": \"Inserisci la tua altezza\",\n \"Please enter your weight\": \"Inserisci il tuo peso\",\n \"Please enter a valid height\": \"Inserisci un'altezza valida\",\n \"Please enter a valid weight\": \"Inserisci un peso valido\",\n \"Please enter a valid height (100-250 cm)\": \"Inserisci un'altezza valida (100-250 cm)\",\n \"Please enter a valid weight (30-300 kg)\": \"Inserisci un peso valido (30-300 kg)\",\n \"Please select both band and cup size\": \"Seleziona sia la circonferenza che la coppa\",\n \"Select your bra size\": \"Seleziona la taglia del reggiseno\",\n \"BAND\": \"FASCIA\",\n \"BAND SIZE\": \"MISURA FASCIA\",\n \"CUP\": \"COPPA\",\n \"CUP SIZE\": \"MISURA COPPA\",\n \"BRA REGION\": \"REGIONE REGGISENO\",\n \"Imperial\": \"Imperiale\",\n \"Metric\": \"Metrico\",\n \"These calibrate the AI — all required.\": \"Questi calibrano l'IA — tutti obbligatori.\",\n \"Using\": \"In uso\",\n \"start fresh\": \"ricomincia\",\n \"Close\": \"Chiudi\",\n\n // ── Body shape questions ──\n \"Which best describes your chest?\": \"Quale descrive meglio il tuo petto?\",\n \"WHICH BEST DESCRIBES YOUR CHEST?\": \"QUALE DESCRIVE MEGLIO IL TUO PETTO?\",\n \"Which best describes your hips?\": \"Quale descrive meglio i tuoi fianchi?\",\n \"WHICH BEST DESCRIBES YOUR HIPS?\": \"QUALE DESCRIVE MEGLIO I TUOI FIANCHI?\",\n \"Which best describes your midsection?\": \"Quale descrive meglio la tua vita?\",\n \"WHICH BEST DESCRIBES YOUR MIDSECTION?\": \"QUALE DESCRIVE MEGLIO LA TUA VITA?\",\n \"Which best describes your seat?\": \"Quale descrive meglio il tuo lato B?\",\n \"WHICH BEST DESCRIBES YOUR SEAT?\": \"QUALE DESCRIVE MEGLIO IL TUO LATO B?\",\n \"Average\": \"Media\",\n \"Narrow\": \"Stretto\",\n \"Broad\": \"Ampio\",\n \"Curvy\": \"Curvilineo\",\n \"A slimmer, narrower chest build\": \"Un petto più snello e stretto\",\n \"A moderate, proportionate chest\": \"Un petto moderato e proporzionato\",\n \"A wider, more muscular chest\": \"Un petto più ampio e muscoloso\",\n \"A flatter midsection with minimal protrusion\": \"Una vita più piatta con minima protrusione\",\n \"A moderate, natural midsection shape\": \"Una vita moderata e naturale\",\n \"A fuller, more rounded midsection\": \"Una vita più piena e arrotondata\",\n \"A flatter backside with less projection\": \"Un lato B più piatto e meno proiettato\",\n \"A moderate, natural backside shape\": \"Un lato B moderato e naturale\",\n \"A fuller, more rounded backside\": \"Un lato B più pieno e arrotondato\",\n};\nexport default it;\n","const pt: Record<string, string> = {\n \"Virtual Try-On\": \"Provador Virtual\",\n \"Find Your Size & See It On You\": \"Encontre seu tamanho e experimente\",\n \"Get the perfect fit, then try it on virtually\": \"Encontre o caimento perfeito e experimente virtualmente\",\n \"Get Your Size\": \"Seu tamanho\",\n \"Instant fit recommendation\": \"Recomendação de caimento instantânea\",\n \"Try It On\": \"Experimentar\",\n \"See how it looks on you\": \"Veja como fica em você\",\n \"Find My Size\": \"Encontrar meu tamanho\",\n \"Takes less than a minute\": \"Leva menos de um minuto\",\n \"Upload a full body photo\": \"Envie uma foto de corpo inteiro\",\n \"JPEG, PNG or WebP (max 10MB)\": \"JPEG, PNG ou WebP (máx. 10MB)\",\n \"Your photo\": \"Sua foto\",\n \"Let's find your best fit\": \"Vamos encontrar seu melhor caimento\",\n \"Centimeters\": \"Centímetros\",\n \"Inches\": \"Polegadas\",\n \"Load saved profile...\": \"Carregar perfil salvo...\",\n \"HEIGHT\": \"ALTURA\",\n \"WEIGHT\": \"PESO\",\n \"feet\": \"pés\",\n \"inches\": \"polegadas\",\n \"cm\": \"cm\",\n \"kg\": \"kg\",\n \"lbs\": \"libras\",\n \"in\": \"pol\",\n \"How to measure\": \"Como medir\",\n \"Hide guide\": \"Ocultar guia\",\n \"I know my measurements\": \"Sei minhas medidas\",\n \"Not sure? Use height & weight instead\": \"Não tem certeza? Use altura e peso\",\n \"Please fill in height and weight\": \"Por favor, preencha altura e peso\",\n \"Please fill in all required fields\": \"Por favor, preencha todos os campos obrigatórios\",\n \"Next\": \"Próximo\",\n \"Analyzing your size...\": \"Analisando seu tamanho...\",\n \"RECOMMENDED SIZE\": \"TAMANHO RECOMENDADO\",\n \"NOT RECOMMENDED\": \"NÃO RECOMENDADO\",\n \"Edit measurements\": \"Editar medidas\",\n \"Size guide\": \"Guia de tamanhos\",\n \"Your fit\": \"Seu caimento\",\n \"Your measure\": \"Sua medida\",\n \"perfect fit\": \"caimento perfeito\",\n \"too tight\": \"muito apertado\",\n \"tight\": \"apertado\",\n \"a bit tight\": \"um pouco apertado\",\n \"too loose\": \"muito folgado\",\n \"loose\": \"folgado\",\n \"a bit loose\": \"um pouco folgado\",\n \"See fit on your photo\": \"Ver caimento na sua foto\",\n \"Hide visual fit\": \"Ocultar caimento visual\",\n \"Analyzing...\": \"Analisando...\",\n \"Try it on\": \"Experimentar\",\n \"SIZE CHART\": \"TABELA DE TAMANHOS\",\n \"YOUR ESTIMATED MEASUREMENTS\": \"SUAS MEDIDAS ESTIMADAS\",\n \"Edit\": \"Editar\",\n \"Download\": \"Baixar\",\n \"Size chart\": \"Tabela de tamanhos\",\n \"Preparing your image...\": \"Preparando sua imagem...\",\n \"Analyzing body proportions...\": \"Analisando proporções corporais...\",\n \"Matching garment to your photo...\": \"Ajustando a peça à sua foto...\",\n \"Generating virtual try-on...\": \"Gerando provador virtual...\",\n \"Refining details...\": \"Refinando detalhes...\",\n \"Almost there...\": \"Quase lá...\",\n \"Complete!\": \"Concluído!\",\n \"This usually takes 15-25 seconds\": \"Isso geralmente leva 15-25 segundos\",\n \"Something went wrong\": \"Algo deu errado\",\n \"Try Again\": \"Tentar novamente\",\n \"SDK not configured. Please provide an API key.\": \"SDK não configurado. Forneça uma chave API.\",\n \"Please upload a JPEG, PNG, or WebP image.\": \"Envie uma imagem JPEG, PNG ou WebP.\",\n \"Image must be under 10MB.\": \"A imagem deve ter menos de 10MB.\",\n \"Try-on generation failed\": \"Falha na geração da prova\",\n \"Failed to start try-on\": \"Falha ao iniciar a prova\",\n \"No product image found. Please set the product-image attribute.\": \"Imagem do produto não encontrada. Defina o atributo product-image.\",\n \"Powered by\": \"Desenvolvido por\",\n \"My Profiles\": \"Meus Perfis\",\n \"History\": \"Histórico\",\n \"No saved profiles yet.\": \"Nenhum perfil salvo.\",\n \"No history yet.\": \"Sem histórico.\",\n \"Product\": \"Produto\",\n \"Women's\": \"Feminino\",\n \"Men's\": \"Masculino\",\n \"Profiles\": \"Perfis\",\n \"Women's Profile\": \"Perfil Feminino\",\n \"Men's Profile\": \"Perfil Masculino\",\n \"Height\": \"Altura\",\n \"Weight\": \"Peso\",\n \"Chest\": \"Peito\",\n \"Bust\": \"Busto\",\n \"Waist\": \"Cintura\",\n \"Hips\": \"Quadril\",\n \"Shoulders\": \"Ombros\",\n \"Sleeve\": \"Manga\",\n \"Inseam\": \"Entrepernas\",\n \"Neck\": \"Pescoço\",\n \"Foot\": \"Pé\",\n \"Shoe EU\": \"Calçado EU\",\n \"Shoe US\": \"Calçado US\",\n \"Shoe UK\": \"Calçado UK\",\n \"Saved\": \"Salvo\",\n \"Delete Profile\": \"Excluir Perfil\",\n \"Shoe size (US)\": \"Tamanho do calçado (US)\",\n \"Shoe size (UK)\": \"Tamanho do calçado (UK)\",\n \"Shoe size (EU)\": \"Tamanho do calçado (EU)\",\n \"Generating...\": \"Gerando...\",\n \"Foot length\": \"Comprimento do pé\",\n \"Size\": \"Tamanho\",\n \"Try on size\": \"Experimentar tamanho\",\n \"e.g.\": \"ex.\",\n \"Drop your photo here or click to upload\": \"Arraste sua foto aqui ou clique para enviar\",\n \"This usually takes 15-20 seconds\": \"Isso geralmente leva 15-20 segundos\",\n \"Try-on result\": \"Resultado da prova\",\n \"Try Another\": \"Tentar outra\",\n \"Back\": \"Voltar\",\n \"You\": \"Você\",\n \"Garment\": \"Peça\",\n \"Your Height\": \"Sua Altura\",\n \"Your Weight\": \"Seu Peso\",\n \"Drag or scroll to set your height\": \"Arraste ou role para definir sua altura\",\n \"Drag or scroll to set your weight\": \"Arraste ou role para definir seu peso\",\n \"Enter height and weight first\": \"Insira primeiro altura e peso\",\n\n // ── Field labels ──\n \"Lens Width\": \"Largura da lente\",\n \"Bridge\": \"Ponte\",\n \"Arm Length\": \"Comprimento da haste\",\n \"Head Circumference\": \"Circunferência da cabeça\",\n \"Face Width\": \"Largura do rosto\",\n \"Temple\": \"Haste\",\n \"Around widest point\": \"Em torno do ponto mais largo\",\n \"Foot Length\": \"Comprimento do pé\",\n \"Shoulder\": \"Ombro\",\n \"Thigh\": \"Coxa\",\n \"Hip\": \"Quadril\",\n\n // ── Units ──\n \"Millimetre\": \"Milímetro\",\n \"Centimetre\": \"Centímetro\",\n \"Millimeters\": \"Milímetros\",\n\n // ── Fit descriptors ──\n \"Tight\": \"Apertado\",\n \"Loose\": \"Folgado\",\n \"Short\": \"Curto\",\n \"Long\": \"Longo\",\n \"Perfect\": \"Perfeito\",\n \"Perfect fit\": \"Caimento perfeito\",\n \"✓ Fit\": \"✓ Caimento\",\n \"too short\": \"muito curto\",\n \"too long\": \"muito longo\",\n \"a bit short\": \"um pouco curto\",\n \"a bit long\": \"um pouco longo\",\n\n // ── Length pills ──\n \"Length\": \"Comprimento\",\n \"Length Adjustment\": \"Ajuste de comprimento\",\n \"Regular\": \"Regular\",\n \"Big\": \"Grande\",\n \"Big & Tall\": \"Grande & Alto\",\n\n // ── Misc ──\n \"preview\": \"pré-visualização\",\n\n // ── BodyProfileView — photo upload area (left section) ──\n \"Upload your photo\": \"Envie sua foto\",\n \"Upload a photo\": \"Enviar uma foto\",\n \"Click or drag a full-body photo\": \"Clique ou arraste uma foto de corpo inteiro\",\n \"Or upload a photo for AI sizing\": \"Ou envie uma foto para análise por IA\",\n \"Photo\": \"Foto\",\n \"How to take a good photo\": \"Como tirar uma boa foto\",\n \"How to take the best photo\": \"Como tirar a melhor foto\",\n \"Do\": \"Faça\",\n \"Don't\": \"Não faça\",\n \"Quick Tip\": \"Dica rápida\",\n \"The simpler your photo is, the more accurate your virtual try-on results will be.\": \"Quanto mais simples for sua foto, mais precisos serão os resultados da prova virtual.\",\n \"Choose a plain background (a light wall is ideal)\": \"Escolha um fundo liso (uma parede clara é ideal)\",\n \"Stand facing the camera with your full body in frame\": \"Fique de frente para a câmera com o corpo inteiro no enquadramento\",\n \"Stand straight and still, arms relaxed by your sides\": \"Fique reto e parado, com os braços relaxados ao lado do corpo\",\n \"Stand with your HEELS against a wall for best accuracy\": \"Fique com os CALCANHARES contra a parede para maior precisão\",\n \"Use natural or even lighting (e.g. near a window)\": \"Use luz natural ou uniforme (ex.: perto de uma janela)\",\n \"Wear fitted, simple clothing (e.g. neutral colors)\": \"Use roupas justas e simples (ex.: cores neutras)\",\n \"Don't wear loose, baggy, or layered clothing\": \"Não use roupas largas, folgadas ou sobrepostas\",\n \"Don't sit, pose, or bend your body\": \"Não sente, pose ou dobre o corpo\",\n \"Don't use strong backlighting\": \"Não use contraluz forte\",\n \"Don't take mirror photos or selfies\": \"Não tire fotos de espelho ou selfies\",\n \"Don't apply filters, effects, or edits\": \"Não aplique filtros, efeitos ou edições\",\n\n // ── Age gate ──\n \"Are you 18 or older?\": \"Você tem 18 anos ou mais?\",\n \"Yes\": \"Sim\",\n \"No\": \"Não\",\n \"Please confirm your age\": \"Por favor, confirme sua idade\",\n \"Please confirm that the person in the photo is 18 or older before uploading.\": \"Confirme que a pessoa na foto tem 18 anos ou mais antes de enviar.\",\n \"Under 18 — can't process this photo.\": \"Menor de 18 — não é possível processar esta foto.\",\n \"This photo appears to be of a minor. Please upload a photo of someone 18 or older.\": \"Esta foto parece ser de um menor. Envie uma foto de alguém com 18 anos ou mais.\",\n \"Different photo needed\": \"Outra foto é necessária\",\n \"Try another photo\": \"Tente outra foto\",\n\n // ── Photo step controls ──\n \"Continue\": \"Continuar\",\n \"Analyze My Size\": \"Analisar meu tamanho\",\n \"Analyzing photo…\": \"Analisando foto…\",\n \"Details\": \"Detalhes\",\n \"Image must be under 10MB\": \"A imagem deve ter menos de 10 MB\",\n \"Please upload an image file\": \"Envie um arquivo de imagem\",\n \"Please upload a photo\": \"Envie uma foto\",\n \"Prefer not to upload a photo?\": \"Prefere não enviar uma foto?\",\n \"Enter measurements manually\": \"Inserir medidas manualmente\",\n \"Legal Notice\": \"Aviso Legal\",\n \"Your image will be used to generate a virtual try-on preview showing how selected items may look and fit. Images are processed securely and are not stored after generation.\": \"Sua imagem será usada para gerar uma prévia da prova virtual mostrando como os itens selecionados podem aparecer e caber. As imagens são processadas com segurança e não são armazenadas após a geração.\",\n\n // ── BodyProfileView — form (right section) ──\n \"Body details\": \"Detalhes do corpo\",\n \"Your body details\": \"Seus detalhes corporais\",\n \"Body Measurements\": \"Medidas corporais\",\n \"AGE\": \"IDADE\",\n \"years\": \"anos\",\n \"Enter your height\": \"Insira sua altura\",\n \"Enter your weight\": \"Insira seu peso\",\n \"Enter your bra size\": \"Insira o tamanho do sutiã\",\n \"Please enter your height\": \"Insira sua altura\",\n \"Please enter your weight\": \"Insira seu peso\",\n \"Please enter a valid height\": \"Insira uma altura válida\",\n \"Please enter a valid weight\": \"Insira um peso válido\",\n \"Please enter a valid height (100-250 cm)\": \"Insira uma altura válida (100-250 cm)\",\n \"Please enter a valid weight (30-300 kg)\": \"Insira um peso válido (30-300 kg)\",\n \"Please select both band and cup size\": \"Selecione o tamanho da faixa e do bojo\",\n \"Select your bra size\": \"Selecione o tamanho do sutiã\",\n \"BAND\": \"FAIXA\",\n \"BAND SIZE\": \"TAMANHO DA FAIXA\",\n \"CUP\": \"BOJO\",\n \"CUP SIZE\": \"TAMANHO DO BOJO\",\n \"BRA REGION\": \"REGIÃO DO SUTIÃ\",\n \"Imperial\": \"Imperial\",\n \"Metric\": \"Métrico\",\n \"These calibrate the AI — all required.\": \"Estes calibram a IA — todos obrigatórios.\",\n \"Using\": \"Usando\",\n \"start fresh\": \"começar de novo\",\n \"Close\": \"Fechar\",\n\n // ── Body shape questions ──\n \"Which best describes your chest?\": \"Qual descreve melhor seu peito?\",\n \"WHICH BEST DESCRIBES YOUR CHEST?\": \"QUAL DESCREVE MELHOR SEU PEITO?\",\n \"Which best describes your hips?\": \"Qual descreve melhor seus quadris?\",\n \"WHICH BEST DESCRIBES YOUR HIPS?\": \"QUAL DESCREVE MELHOR SEUS QUADRIS?\",\n \"Which best describes your midsection?\": \"Qual descreve melhor sua cintura?\",\n \"WHICH BEST DESCRIBES YOUR MIDSECTION?\": \"QUAL DESCREVE MELHOR SUA CINTURA?\",\n \"Which best describes your seat?\": \"Qual descreve melhor seu traseiro?\",\n \"WHICH BEST DESCRIBES YOUR SEAT?\": \"QUAL DESCREVE MELHOR SEU TRASEIRO?\",\n \"Average\": \"Média\",\n \"Narrow\": \"Estreito\",\n \"Broad\": \"Largo\",\n \"Curvy\": \"Curvilíneo\",\n \"A slimmer, narrower chest build\": \"Um peito mais magro e estreito\",\n \"A moderate, proportionate chest\": \"Um peito moderado e proporcional\",\n \"A wider, more muscular chest\": \"Um peito mais largo e musculoso\",\n \"A flatter midsection with minimal protrusion\": \"Uma cintura mais plana com mínima protuberância\",\n \"A moderate, natural midsection shape\": \"Uma cintura moderada e natural\",\n \"A fuller, more rounded midsection\": \"Uma cintura mais cheia e arredondada\",\n \"A flatter backside with less projection\": \"Um traseiro mais plano com menos projeção\",\n \"A moderate, natural backside shape\": \"Um traseiro moderado e natural\",\n \"A fuller, more rounded backside\": \"Um traseiro mais cheio e arredondado\",\n};\nexport default pt;\n","const nl: Record<string, string> = {\n \"Virtual Try-On\": \"Virtueel Passen\",\n \"Find Your Size & See It On You\": \"Vind je maat en pas het\",\n \"Get the perfect fit, then try it on virtually\": \"Vind de perfecte pasvorm en pas het virtueel\",\n \"Get Your Size\": \"Jouw maat\",\n \"Instant fit recommendation\": \"Directe pasvormaanbeveling\",\n \"Try It On\": \"Pas het\",\n \"See how it looks on you\": \"Bekijk hoe het je staat\",\n \"Find My Size\": \"Mijn maat vinden\",\n \"Takes less than a minute\": \"Duurt minder dan een minuut\",\n \"Upload a full body photo\": \"Upload een foto van je hele lichaam\",\n \"JPEG, PNG or WebP (max 10MB)\": \"JPEG, PNG of WebP (max 10MB)\",\n \"Your photo\": \"Jouw foto\",\n \"Let's find your best fit\": \"Laten we je beste pasvorm vinden\",\n \"Centimeters\": \"Centimeters\",\n \"Inches\": \"Inches\",\n \"Load saved profile...\": \"Opgeslagen profiel laden...\",\n \"HEIGHT\": \"LENGTE\",\n \"WEIGHT\": \"GEWICHT\",\n \"feet\": \"voet\",\n \"inches\": \"inch\",\n \"cm\": \"cm\",\n \"kg\": \"kg\",\n \"lbs\": \"pond\",\n \"in\": \"inch\",\n \"How to measure\": \"Hoe te meten\",\n \"Hide guide\": \"Gids verbergen\",\n \"I know my measurements\": \"Ik ken mijn maten\",\n \"Not sure? Use height & weight instead\": \"Niet zeker? Gebruik lengte en gewicht\",\n \"Please fill in height and weight\": \"Vul lengte en gewicht in\",\n \"Please fill in all required fields\": \"Vul alle verplichte velden in\",\n \"Next\": \"Volgende\",\n \"Analyzing your size...\": \"Je maat wordt geanalyseerd...\",\n \"RECOMMENDED SIZE\": \"AANBEVOLEN MAAT\",\n \"NOT RECOMMENDED\": \"NIET AANBEVOLEN\",\n \"Edit measurements\": \"Maten bewerken\",\n \"Size guide\": \"Maatgids\",\n \"Your fit\": \"Jouw pasvorm\",\n \"Your measure\": \"Jouw maat\",\n \"perfect fit\": \"perfecte pasvorm\",\n \"too tight\": \"te strak\",\n \"tight\": \"strak\",\n \"a bit tight\": \"een beetje strak\",\n \"too loose\": \"te ruim\",\n \"loose\": \"ruim\",\n \"a bit loose\": \"een beetje ruim\",\n \"See fit on your photo\": \"Bekijk pasvorm op je foto\",\n \"Hide visual fit\": \"Pasvormweergave verbergen\",\n \"Analyzing...\": \"Analyseren...\",\n \"Try it on\": \"Pas het\",\n \"SIZE CHART\": \"MAATTABEL\",\n \"YOUR ESTIMATED MEASUREMENTS\": \"JE GESCHATTE MATEN\",\n \"Edit\": \"Bewerken\",\n \"Download\": \"Downloaden\",\n \"Size chart\": \"Maattabel\",\n \"Preparing your image...\": \"Je afbeelding wordt voorbereid...\",\n \"Analyzing body proportions...\": \"Lichaamsvormen worden geanalyseerd...\",\n \"Matching garment to your photo...\": \"Kledingstuk wordt aan je foto aangepast...\",\n \"Generating virtual try-on...\": \"Virtuele pasbeur wordt gegenereerd...\",\n \"Refining details...\": \"Details worden verfijnd...\",\n \"Almost there...\": \"Bijna klaar...\",\n \"Complete!\": \"Voltooid!\",\n \"This usually takes 15-25 seconds\": \"Dit duurt meestal 15-25 seconden\",\n \"Something went wrong\": \"Er ging iets mis\",\n \"Try Again\": \"Opnieuw proberen\",\n \"SDK not configured. Please provide an API key.\": \"SDK niet geconfigureerd. Geef een API-sleutel op.\",\n \"Please upload a JPEG, PNG, or WebP image.\": \"Upload een JPEG-, PNG- of WebP-afbeelding.\",\n \"Image must be under 10MB.\": \"Afbeelding moet kleiner zijn dan 10MB.\",\n \"Try-on generation failed\": \"Genereren van pasbeur mislukt\",\n \"Failed to start try-on\": \"Kan pasbeur niet starten\",\n \"No product image found. Please set the product-image attribute.\": \"Geen productafbeelding gevonden. Stel het product-image attribuut in.\",\n \"Powered by\": \"Mogelijk gemaakt door\",\n \"My Profiles\": \"Mijn Profielen\",\n \"History\": \"Geschiedenis\",\n \"No saved profiles yet.\": \"Nog geen opgeslagen profielen.\",\n \"No history yet.\": \"Nog geen geschiedenis.\",\n \"Product\": \"Product\",\n \"Women's\": \"Dames\",\n \"Men's\": \"Heren\",\n \"Profiles\": \"Profielen\",\n \"Women's Profile\": \"Damesprofiel\",\n \"Men's Profile\": \"Herenprofiel\",\n \"Height\": \"Lengte\",\n \"Weight\": \"Gewicht\",\n \"Chest\": \"Borst\",\n \"Bust\": \"Buste\",\n \"Waist\": \"Taille\",\n \"Hips\": \"Heupen\",\n \"Shoulders\": \"Schouders\",\n \"Sleeve\": \"Mouw\",\n \"Inseam\": \"Binnenbeenlengte\",\n \"Neck\": \"Nek\",\n \"Foot\": \"Voet\",\n \"Shoe EU\": \"Schoen EU\",\n \"Shoe US\": \"Schoen US\",\n \"Shoe UK\": \"Schoen UK\",\n \"Saved\": \"Opgeslagen\",\n \"Delete Profile\": \"Profiel verwijderen\",\n \"Shoe size (US)\": \"Schoenmaat (US)\",\n \"Shoe size (UK)\": \"Schoenmaat (UK)\",\n \"Shoe size (EU)\": \"Schoenmaat (EU)\",\n \"Generating...\": \"Genereren...\",\n \"Foot length\": \"Voetlengte\",\n \"Size\": \"Maat\",\n \"Try on size\": \"Maat passen\",\n \"e.g.\": \"bijv.\",\n \"Drop your photo here or click to upload\": \"Sleep je foto hierheen of klik om te uploaden\",\n \"This usually takes 15-20 seconds\": \"Dit duurt meestal 15-20 seconden\",\n \"Try-on result\": \"Pasresultaat\",\n \"Try Another\": \"Probeer een andere\",\n \"Back\": \"Terug\",\n \"You\": \"Jij\",\n \"Garment\": \"Kledingstuk\",\n \"Your Height\": \"Je Lengte\",\n \"Your Weight\": \"Je Gewicht\",\n \"Drag or scroll to set your height\": \"Sleep of scroll om je lengte in te stellen\",\n \"Drag or scroll to set your weight\": \"Sleep of scroll om je gewicht in te stellen\",\n \"Enter height and weight first\": \"Voer eerst lengte en gewicht in\",\n\n // ── Field labels ──\n \"Lens Width\": \"Glasbreedte\",\n \"Bridge\": \"Brug\",\n \"Arm Length\": \"Pootlengte\",\n \"Head Circumference\": \"Hoofdomtrek\",\n \"Face Width\": \"Gezichtsbreedte\",\n \"Temple\": \"Poot\",\n \"Around widest point\": \"Rond het breedste punt\",\n \"Foot Length\": \"Voetlengte\",\n \"Shoulder\": \"Schouder\",\n \"Thigh\": \"Dij\",\n \"Hip\": \"Heup\",\n\n // ── Units ──\n \"Millimetre\": \"Millimeter\",\n \"Centimetre\": \"Centimeter\",\n \"Millimeters\": \"Millimeters\",\n\n // ── Fit descriptors ──\n \"Tight\": \"Strak\",\n \"Loose\": \"Los\",\n \"Short\": \"Kort\",\n \"Long\": \"Lang\",\n \"Perfect\": \"Perfect\",\n \"Perfect fit\": \"Perfecte pasvorm\",\n \"✓ Fit\": \"✓ Past\",\n \"too short\": \"te kort\",\n \"too long\": \"te lang\",\n \"a bit short\": \"iets te kort\",\n \"a bit long\": \"iets te lang\",\n\n // ── Length pills ──\n \"Length\": \"Lengte\",\n \"Length Adjustment\": \"Lengte aanpassing\",\n \"Regular\": \"Regulier\",\n \"Big\": \"Groot\",\n \"Big & Tall\": \"Groot & Lang\",\n\n // ── Misc ──\n \"preview\": \"voorbeeld\",\n\n // ── BodyProfileView — photo upload area (left section) ──\n \"Upload your photo\": \"Upload je foto\",\n \"Upload a photo\": \"Een foto uploaden\",\n \"Click or drag a full-body photo\": \"Klik of sleep een foto van je hele lichaam\",\n \"Or upload a photo for AI sizing\": \"Of upload een foto voor AI-maatbepaling\",\n \"Photo\": \"Foto\",\n \"How to take a good photo\": \"Hoe een goede foto te maken\",\n \"How to take the best photo\": \"Hoe de beste foto te maken\",\n \"Do\": \"Doen\",\n \"Don't\": \"Niet doen\",\n \"Quick Tip\": \"Snelle tip\",\n \"The simpler your photo is, the more accurate your virtual try-on results will be.\": \"Hoe eenvoudiger je foto, hoe nauwkeuriger het resultaat van het virtueel passen.\",\n \"Choose a plain background (a light wall is ideal)\": \"Kies een effen achtergrond (een lichte muur is ideaal)\",\n \"Stand facing the camera with your full body in frame\": \"Sta met je gezicht naar de camera met je hele lichaam in beeld\",\n \"Stand straight and still, arms relaxed by your sides\": \"Sta rechtop en stil, met je armen ontspannen langs je zijden\",\n \"Stand with your HEELS against a wall for best accuracy\": \"Sta met je HIELEN tegen een muur voor de beste nauwkeurigheid\",\n \"Use natural or even lighting (e.g. near a window)\": \"Gebruik natuurlijk of gelijkmatig licht (bijv. bij een raam)\",\n \"Wear fitted, simple clothing (e.g. neutral colors)\": \"Draag aansluitende, eenvoudige kleding (bijv. neutrale kleuren)\",\n \"Don't wear loose, baggy, or layered clothing\": \"Draag geen losse, wijde of gelaagde kleding\",\n \"Don't sit, pose, or bend your body\": \"Niet zitten, poseren of het lichaam buigen\",\n \"Don't use strong backlighting\": \"Gebruik geen sterk tegenlicht\",\n \"Don't take mirror photos or selfies\": \"Geen spiegelfoto's of selfies maken\",\n \"Don't apply filters, effects, or edits\": \"Pas geen filters, effecten of bewerkingen toe\",\n\n // ── Age gate ──\n \"Are you 18 or older?\": \"Ben je 18 jaar of ouder?\",\n \"Yes\": \"Ja\",\n \"No\": \"Nee\",\n \"Please confirm your age\": \"Bevestig je leeftijd\",\n \"Please confirm that the person in the photo is 18 or older before uploading.\": \"Bevestig dat de persoon op de foto 18 jaar of ouder is voordat je uploadt.\",\n \"Under 18 — can't process this photo.\": \"Onder 18 — deze foto kan niet worden verwerkt.\",\n \"This photo appears to be of a minor. Please upload a photo of someone 18 or older.\": \"Deze foto lijkt van een minderjarige te zijn. Upload een foto van iemand van 18 jaar of ouder.\",\n \"Different photo needed\": \"Een andere foto nodig\",\n \"Try another photo\": \"Probeer een andere foto\",\n\n // ── Photo step controls ──\n \"Continue\": \"Doorgaan\",\n \"Analyze My Size\": \"Analyseer mijn maat\",\n \"Analyzing photo…\": \"Foto wordt geanalyseerd…\",\n \"Details\": \"Details\",\n \"Image must be under 10MB\": \"Afbeelding moet kleiner zijn dan 10MB\",\n \"Please upload an image file\": \"Upload een afbeeldingsbestand\",\n \"Please upload a photo\": \"Upload een foto\",\n \"Prefer not to upload a photo?\": \"Liever geen foto uploaden?\",\n \"Enter measurements manually\": \"Maten handmatig invoeren\",\n \"Legal Notice\": \"Juridische kennisgeving\",\n \"Your image will be used to generate a virtual try-on preview showing how selected items may look and fit. Images are processed securely and are not stored after generation.\": \"Je afbeelding wordt gebruikt om een voorbeeld van het virtueel passen te genereren, waarin wordt getoond hoe geselecteerde items eruit kunnen zien en passen. Afbeeldingen worden veilig verwerkt en worden na generatie niet opgeslagen.\",\n\n // ── BodyProfileView — form (right section) ──\n \"Body details\": \"Lichaamsgegevens\",\n \"Your body details\": \"Jouw lichaamsgegevens\",\n \"Body Measurements\": \"Lichaamsmaten\",\n \"AGE\": \"LEEFTIJD\",\n \"years\": \"jaar\",\n \"Enter your height\": \"Voer je lengte in\",\n \"Enter your weight\": \"Voer je gewicht in\",\n \"Enter your bra size\": \"Voer je BH-maat in\",\n \"Please enter your height\": \"Voer je lengte in\",\n \"Please enter your weight\": \"Voer je gewicht in\",\n \"Please enter a valid height\": \"Voer een geldige lengte in\",\n \"Please enter a valid weight\": \"Voer een geldig gewicht in\",\n \"Please enter a valid height (100-250 cm)\": \"Voer een geldige lengte in (100-250 cm)\",\n \"Please enter a valid weight (30-300 kg)\": \"Voer een geldig gewicht in (30-300 kg)\",\n \"Please select both band and cup size\": \"Selecteer zowel bandmaat als cupmaat\",\n \"Select your bra size\": \"Selecteer je BH-maat\",\n \"BAND\": \"BAND\",\n \"BAND SIZE\": \"BANDMAAT\",\n \"CUP\": \"CUP\",\n \"CUP SIZE\": \"CUPMAAT\",\n \"BRA REGION\": \"BH-REGIO\",\n \"Imperial\": \"Imperiaal\",\n \"Metric\": \"Metrisch\",\n \"These calibrate the AI — all required.\": \"Deze kalibreren de AI — allemaal vereist.\",\n \"Using\": \"Gebruikt\",\n \"start fresh\": \"opnieuw beginnen\",\n \"Close\": \"Sluiten\",\n\n // ── Body shape questions ──\n \"Which best describes your chest?\": \"Wat beschrijft je borst het beste?\",\n \"WHICH BEST DESCRIBES YOUR CHEST?\": \"WAT BESCHRIJFT JE BORST HET BESTE?\",\n \"Which best describes your hips?\": \"Wat beschrijft je heupen het beste?\",\n \"WHICH BEST DESCRIBES YOUR HIPS?\": \"WAT BESCHRIJFT JE HEUPEN HET BESTE?\",\n \"Which best describes your midsection?\": \"Wat beschrijft je middel het beste?\",\n \"WHICH BEST DESCRIBES YOUR MIDSECTION?\": \"WAT BESCHRIJFT JE MIDDEL HET BESTE?\",\n \"Which best describes your seat?\": \"Wat beschrijft je achterwerk het beste?\",\n \"WHICH BEST DESCRIBES YOUR SEAT?\": \"WAT BESCHRIJFT JE ACHTERWERK HET BESTE?\",\n \"Average\": \"Gemiddeld\",\n \"Narrow\": \"Smal\",\n \"Broad\": \"Breed\",\n \"Curvy\": \"Gevormd\",\n \"A slimmer, narrower chest build\": \"Een slankere, smallere borstbouw\",\n \"A moderate, proportionate chest\": \"Een gemiddelde, proportionele borst\",\n \"A wider, more muscular chest\": \"Een bredere, meer gespierde borst\",\n \"A flatter midsection with minimal protrusion\": \"Een platter middel met minimale uitstulping\",\n \"A moderate, natural midsection shape\": \"Een gemiddelde, natuurlijke middelvorm\",\n \"A fuller, more rounded midsection\": \"Een voller, ronder middel\",\n \"A flatter backside with less projection\": \"Een platter achterwerk met minder uitsteken\",\n \"A moderate, natural backside shape\": \"Een gemiddelde, natuurlijke achterwerkvorm\",\n \"A fuller, more rounded backside\": \"Een voller, ronder achterwerk\",\n};\nexport default nl;\n","const ru: Record<string, string> = {\n \"Virtual Try-On\": \"Виртуальная примерка\",\n \"Find Your Size & See It On You\": \"Найдите свой размер и примерьте\",\n \"Get the perfect fit, then try it on virtually\": \"Найдите идеальную посадку и примерьте виртуально\",\n \"Get Your Size\": \"Ваш размер\",\n \"Instant fit recommendation\": \"Мгновенная рекомендация посадки\",\n \"Try It On\": \"Примерить\",\n \"See how it looks on you\": \"Посмотрите, как это выглядит на вас\",\n \"Find My Size\": \"Найти мой размер\",\n \"Takes less than a minute\": \"Занимает меньше минуты\",\n \"Upload a full body photo\": \"Загрузите фото в полный рост\",\n \"JPEG, PNG or WebP (max 10MB)\": \"JPEG, PNG или WebP (макс. 10 МБ)\",\n \"Your photo\": \"Ваше фото\",\n \"Let's find your best fit\": \"Найдём вашу лучшую посадку\",\n \"Centimeters\": \"Сантиметры\",\n \"Inches\": \"Дюймы\",\n \"Load saved profile...\": \"Загрузить сохранённый профиль...\",\n \"HEIGHT\": \"РОСТ\",\n \"WEIGHT\": \"ВЕС\",\n \"feet\": \"футы\",\n \"inches\": \"дюймы\",\n \"cm\": \"см\",\n \"kg\": \"кг\",\n \"lbs\": \"фунты\",\n \"in\": \"дюйм\",\n \"How to measure\": \"Как измерять\",\n \"Hide guide\": \"Скрыть руководство\",\n \"I know my measurements\": \"Я знаю свои мерки\",\n \"Not sure? Use height & weight instead\": \"Не уверены? Используйте рост и вес\",\n \"Please fill in height and weight\": \"Пожалуйста, укажите рост и вес\",\n \"Please fill in all required fields\": \"Пожалуйста, заполните все обязательные поля\",\n \"Next\": \"Далее\",\n \"Analyzing your size...\": \"Анализируем ваш размер...\",\n \"RECOMMENDED SIZE\": \"РЕКОМЕНДУЕМЫЙ РАЗМЕР\",\n \"NOT RECOMMENDED\": \"НЕ РЕКОМЕНДУЕТСЯ\",\n \"Edit measurements\": \"Изменить мерки\",\n \"Size guide\": \"Таблица размеров\",\n \"Your fit\": \"Ваша посадка\",\n \"Your measure\": \"Ваша мерка\",\n \"perfect fit\": \"идеальная посадка\",\n \"too tight\": \"слишком тесно\",\n \"tight\": \"тесно\",\n \"a bit tight\": \"немного тесно\",\n \"too loose\": \"слишком свободно\",\n \"loose\": \"свободно\",\n \"a bit loose\": \"немного свободно\",\n \"See fit on your photo\": \"Увидеть посадку на вашем фото\",\n \"Hide visual fit\": \"Скрыть визуализацию\",\n \"Analyzing...\": \"Анализируем...\",\n \"Try it on\": \"Примерить\",\n \"SIZE CHART\": \"ТАБЛИЦА РАЗМЕРОВ\",\n \"YOUR ESTIMATED MEASUREMENTS\": \"ВАШИ ПРИБЛИЗИТЕЛЬНЫЕ МЕРКИ\",\n \"Edit\": \"Изменить\",\n \"Download\": \"Скачать\",\n \"Size chart\": \"Таблица размеров\",\n \"Preparing your image...\": \"Подготовка изображения...\",\n \"Analyzing body proportions...\": \"Анализ пропорций тела...\",\n \"Matching garment to your photo...\": \"Подгонка одежды к вашему фото...\",\n \"Generating virtual try-on...\": \"Создание виртуальной примерки...\",\n \"Refining details...\": \"Уточнение деталей...\",\n \"Almost there...\": \"Почти готово...\",\n \"Complete!\": \"Готово!\",\n \"This usually takes 15-25 seconds\": \"Обычно это занимает 15–25 секунд\",\n \"Something went wrong\": \"Что-то пошло не так\",\n \"Try Again\": \"Попробовать снова\",\n \"SDK not configured. Please provide an API key.\": \"SDK не настроен. Пожалуйста, укажите API-ключ.\",\n \"Please upload a JPEG, PNG, or WebP image.\": \"Загрузите изображение в формате JPEG, PNG или WebP.\",\n \"Image must be under 10MB.\": \"Изображение должно быть менее 10 МБ.\",\n \"Try-on generation failed\": \"Не удалось создать примерку\",\n \"Failed to start try-on\": \"Не удалось начать примерку\",\n \"No product image found. Please set the product-image attribute.\": \"Изображение товара не найдено. Установите атрибут product-image.\",\n \"Powered by\": \"Работает на\",\n \"My Profiles\": \"Мои профили\",\n \"History\": \"История\",\n \"No saved profiles yet.\": \"Нет сохранённых профилей.\",\n \"No history yet.\": \"Нет истории.\",\n \"Product\": \"Товар\",\n \"Women's\": \"Женский\",\n \"Men's\": \"Мужской\",\n \"Profiles\": \"Профили\",\n \"Women's Profile\": \"Женский профиль\",\n \"Men's Profile\": \"Мужской профиль\",\n \"Height\": \"Рост\",\n \"Weight\": \"Вес\",\n \"Chest\": \"Грудь\",\n \"Bust\": \"Бюст\",\n \"Waist\": \"Талия\",\n \"Hips\": \"Бёдра\",\n \"Shoulders\": \"Плечи\",\n \"Sleeve\": \"Рукав\",\n \"Inseam\": \"Шаговый шов\",\n \"Neck\": \"Шея\",\n \"Foot\": \"Стопа\",\n \"Shoe EU\": \"Обувь EU\",\n \"Shoe US\": \"Обувь US\",\n \"Shoe UK\": \"Обувь UK\",\n \"Saved\": \"Сохранено\",\n \"Delete Profile\": \"Удалить профиль\",\n \"Shoe size (US)\": \"Размер обуви (US)\",\n \"Shoe size (UK)\": \"Размер обуви (UK)\",\n \"Shoe size (EU)\": \"Размер обуви (EU)\",\n \"Generating...\": \"Создаём...\",\n \"Foot length\": \"Длина стопы\",\n \"Size\": \"Размер\",\n \"Try on size\": \"Примерить размер\",\n \"e.g.\": \"напр.\",\n \"Drop your photo here or click to upload\": \"Перетащите фото сюда или нажмите для загрузки\",\n \"This usually takes 15-20 seconds\": \"Обычно это занимает 15–20 секунд\",\n \"Try-on result\": \"Результат примерки\",\n \"Try Another\": \"Попробовать другое\",\n \"Back\": \"Назад\",\n \"You\": \"Вы\",\n \"Garment\": \"Одежда\",\n \"Your Height\": \"Ваш Рост\",\n \"Your Weight\": \"Ваш Вес\",\n \"Drag or scroll to set your height\": \"Перетащите или прокрутите для установки роста\",\n \"Drag or scroll to set your weight\": \"Перетащите или прокрутите для установки веса\",\n \"Enter height and weight first\": \"Сначала введите рост и вес\",\n\n // ── Field labels ──\n \"Lens Width\": \"Ширина линзы\",\n \"Bridge\": \"Переносица\",\n \"Arm Length\": \"Длина дужки\",\n \"Head Circumference\": \"Окружность головы\",\n \"Face Width\": \"Ширина лица\",\n \"Temple\": \"Дужка\",\n \"Around widest point\": \"Вокруг самой широкой точки\",\n \"Foot Length\": \"Длина стопы\",\n \"Shoulder\": \"Плечо\",\n \"Thigh\": \"Бедро\",\n \"Hip\": \"Бедра\",\n\n // ── Units ──\n \"Millimetre\": \"Миллиметр\",\n \"Centimetre\": \"Сантиметр\",\n \"Millimeters\": \"Миллиметры\",\n\n // ── Fit descriptors ──\n \"Tight\": \"Тесно\",\n \"Loose\": \"Свободно\",\n \"Short\": \"Коротко\",\n \"Long\": \"Длинно\",\n \"Perfect\": \"Идеально\",\n \"Perfect fit\": \"Идеальная посадка\",\n \"✓ Fit\": \"✓ Подходит\",\n \"too short\": \"слишком коротко\",\n \"too long\": \"слишком длинно\",\n \"a bit short\": \"немного коротко\",\n \"a bit long\": \"немного длинно\",\n\n // ── Length pills ──\n \"Length\": \"Длина\",\n \"Length Adjustment\": \"Регулировка длины\",\n \"Regular\": \"Обычный\",\n \"Big\": \"Большой\",\n \"Big & Tall\": \"Большой и Высокий\",\n\n // ── Misc ──\n \"preview\": \"предпросмотр\",\n\n // ── BodyProfileView — photo upload area (left section) ──\n \"Upload your photo\": \"Загрузите ваше фото\",\n \"Upload a photo\": \"Загрузить фото\",\n \"Click or drag a full-body photo\": \"Нажмите или перетащите фото в полный рост\",\n \"Or upload a photo for AI sizing\": \"Или загрузите фото для AI-определения размера\",\n \"Photo\": \"Фото\",\n \"How to take a good photo\": \"Как сделать хорошее фото\",\n \"How to take the best photo\": \"Как сделать лучшее фото\",\n \"Do\": \"Делайте\",\n \"Don't\": \"Не делайте\",\n \"Quick Tip\": \"Быстрый совет\",\n \"The simpler your photo is, the more accurate your virtual try-on results will be.\": \"Чем проще фото, тем точнее результаты виртуальной примерки.\",\n \"Choose a plain background (a light wall is ideal)\": \"Выберите простой фон (светлая стена идеальна)\",\n \"Stand facing the camera with your full body in frame\": \"Встаньте лицом к камере так, чтобы всё тело было в кадре\",\n \"Stand straight and still, arms relaxed by your sides\": \"Стойте прямо и неподвижно, руки расслабленно по бокам\",\n \"Stand with your HEELS against a wall for best accuracy\": \"Встаньте, прижав ПЯТКИ к стене для максимальной точности\",\n \"Use natural or even lighting (e.g. near a window)\": \"Используйте естественное или равномерное освещение (например, у окна)\",\n \"Wear fitted, simple clothing (e.g. neutral colors)\": \"Носите облегающую простую одежду (например, нейтральных цветов)\",\n \"Don't wear loose, baggy, or layered clothing\": \"Не носите свободную, мешковатую или многослойную одежду\",\n \"Don't sit, pose, or bend your body\": \"Не сидите, не позируйте и не сгибайте тело\",\n \"Don't use strong backlighting\": \"Не используйте сильную контровую подсветку\",\n \"Don't take mirror photos or selfies\": \"Не делайте фото в зеркале или селфи\",\n \"Don't apply filters, effects, or edits\": \"Не применяйте фильтры, эффекты или правки\",\n\n // ── Age gate ──\n \"Are you 18 or older?\": \"Вам 18 лет или больше?\",\n \"Yes\": \"Да\",\n \"No\": \"Нет\",\n \"Please confirm your age\": \"Пожалуйста, подтвердите свой возраст\",\n \"Please confirm that the person in the photo is 18 or older before uploading.\": \"Подтвердите, что человеку на фото 18 лет или больше, перед загрузкой.\",\n \"Under 18 — can't process this photo.\": \"Меньше 18 — не можем обработать это фото.\",\n \"This photo appears to be of a minor. Please upload a photo of someone 18 or older.\": \"Похоже, на фото несовершеннолетний. Загрузите фото человека 18 лет или старше.\",\n \"Different photo needed\": \"Нужно другое фото\",\n \"Try another photo\": \"Попробуйте другое фото\",\n\n // ── Photo step controls ──\n \"Continue\": \"Продолжить\",\n \"Analyze My Size\": \"Проанализировать мой размер\",\n \"Analyzing photo…\": \"Анализ фото…\",\n \"Details\": \"Детали\",\n \"Image must be under 10MB\": \"Изображение должно быть меньше 10 МБ\",\n \"Please upload an image file\": \"Пожалуйста, загрузите файл изображения\",\n \"Please upload a photo\": \"Пожалуйста, загрузите фото\",\n \"Prefer not to upload a photo?\": \"Предпочитаете не загружать фото?\",\n \"Enter measurements manually\": \"Ввести замеры вручную\",\n \"Legal Notice\": \"Правовая информация\",\n \"Your image will be used to generate a virtual try-on preview showing how selected items may look and fit. Images are processed securely and are not stored after generation.\": \"Ваше изображение будет использовано для создания превью виртуальной примерки, показывающего, как выбранные товары могут выглядеть и сидеть. Изображения обрабатываются безопасно и не сохраняются после генерации.\",\n\n // ── BodyProfileView — form (right section) ──\n \"Body details\": \"Параметры тела\",\n \"Your body details\": \"Ваши параметры тела\",\n \"Body Measurements\": \"Замеры тела\",\n \"AGE\": \"ВОЗРАСТ\",\n \"years\": \"лет\",\n \"Enter your height\": \"Введите свой рост\",\n \"Enter your weight\": \"Введите свой вес\",\n \"Enter your bra size\": \"Введите размер бюстгальтера\",\n \"Please enter your height\": \"Введите свой рост\",\n \"Please enter your weight\": \"Введите свой вес\",\n \"Please enter a valid height\": \"Введите корректный рост\",\n \"Please enter a valid weight\": \"Введите корректный вес\",\n \"Please enter a valid height (100-250 cm)\": \"Введите корректный рост (100–250 см)\",\n \"Please enter a valid weight (30-300 kg)\": \"Введите корректный вес (30–300 кг)\",\n \"Please select both band and cup size\": \"Выберите размер обхвата и чашки\",\n \"Select your bra size\": \"Выберите размер бюстгальтера\",\n \"BAND\": \"ОБХВАТ\",\n \"BAND SIZE\": \"РАЗМЕР ОБХВАТА\",\n \"CUP\": \"ЧАШКА\",\n \"CUP SIZE\": \"РАЗМЕР ЧАШКИ\",\n \"BRA REGION\": \"РЕГИОН БЮСТГАЛЬТЕРА\",\n \"Imperial\": \"Имперская\",\n \"Metric\": \"Метрическая\",\n \"These calibrate the AI — all required.\": \"Эти параметры калибруют ИИ — все обязательны.\",\n \"Using\": \"Используется\",\n \"start fresh\": \"начать заново\",\n \"Close\": \"Закрыть\",\n\n // ── Body shape questions ──\n \"Which best describes your chest?\": \"Что лучше всего описывает вашу грудь?\",\n \"WHICH BEST DESCRIBES YOUR CHEST?\": \"ЧТО ЛУЧШЕ ВСЕГО ОПИСЫВАЕТ ВАШУ ГРУДЬ?\",\n \"Which best describes your hips?\": \"Что лучше всего описывает ваши бёдра?\",\n \"WHICH BEST DESCRIBES YOUR HIPS?\": \"ЧТО ЛУЧШЕ ВСЕГО ОПИСЫВАЕТ ВАШИ БЁДРА?\",\n \"Which best describes your midsection?\": \"Что лучше всего описывает вашу талию?\",\n \"WHICH BEST DESCRIBES YOUR MIDSECTION?\": \"ЧТО ЛУЧШЕ ВСЕГО ОПИСЫВАЕТ ВАШУ ТАЛИЮ?\",\n \"Which best describes your seat?\": \"Что лучше всего описывает ваши ягодицы?\",\n \"WHICH BEST DESCRIBES YOUR SEAT?\": \"ЧТО ЛУЧШЕ ВСЕГО ОПИСЫВАЕТ ВАШИ ЯГОДИЦЫ?\",\n \"Average\": \"Средний\",\n \"Narrow\": \"Узкий\",\n \"Broad\": \"Широкий\",\n \"Curvy\": \"Изогнутый\",\n \"A slimmer, narrower chest build\": \"Более узкая и стройная грудь\",\n \"A moderate, proportionate chest\": \"Умеренная, пропорциональная грудь\",\n \"A wider, more muscular chest\": \"Более широкая, мускулистая грудь\",\n \"A flatter midsection with minimal protrusion\": \"Более плоская талия с минимальным выступом\",\n \"A moderate, natural midsection shape\": \"Умеренная, естественная форма талии\",\n \"A fuller, more rounded midsection\": \"Более полная и округлая талия\",\n \"A flatter backside with less projection\": \"Более плоские ягодицы с меньшим выступом\",\n \"A moderate, natural backside shape\": \"Умеренные, естественные ягодицы\",\n \"A fuller, more rounded backside\": \"Более полные и округлые ягодицы\",\n};\nexport default ru;\n","const ar: Record<string, string> = {\n \"Virtual Try-On\": \"تجربة افتراضية\",\n \"Find Your Size & See It On You\": \"اعثر على مقاسك وجرّبه\",\n \"Get the perfect fit, then try it on virtually\": \"اعثر على المقاس المثالي ثم جرّبه افتراضياً\",\n \"Get Your Size\": \"مقاسك\",\n \"Instant fit recommendation\": \"توصية فورية بالمقاس\",\n \"Try It On\": \"جرّبه\",\n \"See how it looks on you\": \"شاهد كيف يبدو عليك\",\n \"Find My Size\": \"اعثر على مقاسي\",\n \"Takes less than a minute\": \"يستغرق أقل من دقيقة\",\n \"Upload a full body photo\": \"ارفع صورة بالطول الكامل\",\n \"JPEG, PNG or WebP (max 10MB)\": \"JPEG أو PNG أو WebP (الحد الأقصى 10 ميجابايت)\",\n \"Your photo\": \"صورتك\",\n \"Let's find your best fit\": \"لنجد أفضل مقاس لك\",\n \"Centimeters\": \"سنتيمترات\",\n \"Inches\": \"بوصات\",\n \"Load saved profile...\": \"تحميل ملف محفوظ...\",\n \"HEIGHT\": \"الطول\",\n \"WEIGHT\": \"الوزن\",\n \"feet\": \"قدم\",\n \"inches\": \"بوصة\",\n \"cm\": \"سم\",\n \"kg\": \"كغ\",\n \"lbs\": \"رطل\",\n \"in\": \"بوصة\",\n \"How to measure\": \"كيفية القياس\",\n \"Hide guide\": \"إخفاء الدليل\",\n \"I know my measurements\": \"أعرف قياساتي\",\n \"Not sure? Use height & weight instead\": \"غير متأكد؟ استخدم الطول والوزن\",\n \"Please fill in height and weight\": \"يرجى إدخال الطول والوزن\",\n \"Please fill in all required fields\": \"يرجى ملء جميع الحقول المطلوبة\",\n \"Next\": \"التالي\",\n \"Analyzing your size...\": \"جارٍ تحليل مقاسك...\",\n \"RECOMMENDED SIZE\": \"المقاس الموصى به\",\n \"NOT RECOMMENDED\": \"غير موصى به\",\n \"Edit measurements\": \"تعديل القياسات\",\n \"Size guide\": \"دليل المقاسات\",\n \"Your fit\": \"ملاءمتك\",\n \"Your measure\": \"قياسك\",\n \"perfect fit\": \"مقاس مثالي\",\n \"too tight\": \"ضيق جداً\",\n \"tight\": \"ضيق\",\n \"a bit tight\": \"ضيق قليلاً\",\n \"too loose\": \"واسع جداً\",\n \"loose\": \"واسع\",\n \"a bit loose\": \"واسع قليلاً\",\n \"See fit on your photo\": \"شاهد الملاءمة على صورتك\",\n \"Hide visual fit\": \"إخفاء عرض الملاءمة\",\n \"Analyzing...\": \"جارٍ التحليل...\",\n \"Try it on\": \"جرّبه\",\n \"SIZE CHART\": \"جدول المقاسات\",\n \"YOUR ESTIMATED MEASUREMENTS\": \"قياساتك التقديرية\",\n \"Edit\": \"تعديل\",\n \"Download\": \"تحميل\",\n \"Size chart\": \"جدول المقاسات\",\n \"Preparing your image...\": \"جارٍ تحضير صورتك...\",\n \"Analyzing body proportions...\": \"جارٍ تحليل نسب الجسم...\",\n \"Matching garment to your photo...\": \"جارٍ مطابقة الملابس مع صورتك...\",\n \"Generating virtual try-on...\": \"جارٍ إنشاء التجربة الافتراضية...\",\n \"Refining details...\": \"جارٍ تحسين التفاصيل...\",\n \"Almost there...\": \"أوشكنا على الانتهاء...\",\n \"Complete!\": \"تم!\",\n \"This usually takes 15-25 seconds\": \"عادة ما يستغرق 15-25 ثانية\",\n \"Something went wrong\": \"حدث خطأ ما\",\n \"Try Again\": \"حاول مرة أخرى\",\n \"SDK not configured. Please provide an API key.\": \"SDK غير مُهيأ. يرجى تقديم مفتاح API.\",\n \"Please upload a JPEG, PNG, or WebP image.\": \"يرجى رفع صورة بصيغة JPEG أو PNG أو WebP.\",\n \"Image must be under 10MB.\": \"يجب أن تكون الصورة أقل من 10 ميجابايت.\",\n \"Try-on generation failed\": \"فشل إنشاء التجربة\",\n \"Failed to start try-on\": \"فشل بدء التجربة\",\n \"No product image found. Please set the product-image attribute.\": \"لم يتم العثور على صورة المنتج. يرجى تعيين خاصية product-image.\",\n \"Powered by\": \"مدعوم من\",\n \"My Profiles\": \"ملفاتي الشخصية\",\n \"History\": \"السجل\",\n \"No saved profiles yet.\": \"لا توجد ملفات محفوظة بعد.\",\n \"No history yet.\": \"لا يوجد سجل بعد.\",\n \"Product\": \"المنتج\",\n \"Women's\": \"نسائي\",\n \"Men's\": \"رجالي\",\n \"Profiles\": \"الملفات الشخصية\",\n \"Women's Profile\": \"ملف نسائي\",\n \"Men's Profile\": \"ملف رجالي\",\n \"Height\": \"الطول\",\n \"Weight\": \"الوزن\",\n \"Chest\": \"الصدر\",\n \"Bust\": \"محيط الصدر\",\n \"Waist\": \"الخصر\",\n \"Hips\": \"الأرداف\",\n \"Shoulders\": \"الأكتاف\",\n \"Sleeve\": \"الكم\",\n \"Inseam\": \"طول الساق الداخلي\",\n \"Neck\": \"الرقبة\",\n \"Foot\": \"القدم\",\n \"Shoe EU\": \"حذاء EU\",\n \"Shoe US\": \"حذاء US\",\n \"Shoe UK\": \"حذاء UK\",\n \"Saved\": \"تم الحفظ\",\n \"Delete Profile\": \"حذف الملف الشخصي\",\n \"Shoe size (US)\": \"مقاس الحذاء (US)\",\n \"Shoe size (UK)\": \"مقاس الحذاء (UK)\",\n \"Shoe size (EU)\": \"مقاس الحذاء (EU)\",\n \"Generating...\": \"جارٍ الإنشاء...\",\n \"Foot length\": \"طول القدم\",\n \"Size\": \"المقاس\",\n \"Try on size\": \"تجربة المقاس\",\n \"e.g.\": \"مثال\",\n \"Drop your photo here or click to upload\": \"اسحب صورتك هنا أو انقر للتحميل\",\n \"This usually takes 15-20 seconds\": \"عادة ما يستغرق 15-20 ثانية\",\n \"Try-on result\": \"نتيجة التجربة\",\n \"Try Another\": \"جرّب صورة أخرى\",\n \"Back\": \"رجوع\",\n \"You\": \"أنت\",\n \"Garment\": \"الملابس\",\n \"Your Height\": \"طولك\",\n \"Your Weight\": \"وزنك\",\n \"Drag or scroll to set your height\": \"اسحب أو مرر لتعيين طولك\",\n \"Drag or scroll to set your weight\": \"اسحب أو مرر لتعيين وزنك\",\n \"Enter height and weight first\": \"أدخل الطول والوزن أولاً\",\n\n // ── Field labels ──\n \"Lens Width\": \"عرض العدسة\",\n \"Bridge\": \"الجسر\",\n \"Arm Length\": \"طول الذراع\",\n \"Head Circumference\": \"محيط الرأس\",\n \"Face Width\": \"عرض الوجه\",\n \"Temple\": \"الذراع\",\n \"Around widest point\": \"حول أعرض نقطة\",\n \"Foot Length\": \"طول القدم\",\n \"Shoulder\": \"الكتف\",\n \"Thigh\": \"الفخذ\",\n \"Hip\": \"الورك\",\n\n // ── Units ──\n \"Millimetre\": \"ملم\",\n \"Centimetre\": \"سم\",\n \"Millimeters\": \"ملم\",\n\n // ── Fit descriptors ──\n \"Tight\": \"ضيق\",\n \"Loose\": \"فضفاض\",\n \"Short\": \"قصير\",\n \"Long\": \"طويل\",\n \"Perfect\": \"مثالي\",\n \"Perfect fit\": \"مقاس مثالي\",\n \"✓ Fit\": \"✓ مناسب\",\n \"too short\": \"قصير جداً\",\n \"too long\": \"طويل جداً\",\n \"a bit short\": \"قصير قليلاً\",\n \"a bit long\": \"طويل قليلاً\",\n\n // ── Length pills ──\n \"Length\": \"الطول\",\n \"Length Adjustment\": \"ضبط الطول\",\n \"Regular\": \"عادي\",\n \"Big\": \"كبير\",\n \"Big & Tall\": \"كبير وطويل\",\n\n // ── Misc ──\n \"preview\": \"معاينة\",\n\n // ── BodyProfileView — photo upload area (left section) ──\n \"Upload your photo\": \"حمّل صورتك\",\n \"Upload a photo\": \"تحميل صورة\",\n \"Click or drag a full-body photo\": \"انقر أو اسحب صورة كاملة للجسم\",\n \"Or upload a photo for AI sizing\": \"أو حمّل صورة لتحديد المقاس بالذكاء الاصطناعي\",\n \"Photo\": \"صورة\",\n \"How to take a good photo\": \"كيفية التقاط صورة جيدة\",\n \"How to take the best photo\": \"كيفية التقاط أفضل صورة\",\n \"Do\": \"افعل\",\n \"Don't\": \"لا تفعل\",\n \"Quick Tip\": \"نصيحة سريعة\",\n \"The simpler your photo is, the more accurate your virtual try-on results will be.\": \"كلما كانت صورتك أبسط، كانت نتائج التجربة الافتراضية أدق.\",\n \"Choose a plain background (a light wall is ideal)\": \"اختر خلفية بسيطة (الجدار الفاتح مثالي)\",\n \"Stand facing the camera with your full body in frame\": \"قف في مواجهة الكاميرا مع ظهور جسمك بالكامل\",\n \"Stand straight and still, arms relaxed by your sides\": \"قف بشكل مستقيم وثابت مع إرخاء الذراعين على الجانبين\",\n \"Stand with your HEELS against a wall for best accuracy\": \"قف وكعباك مستندان إلى الحائط للحصول على أفضل دقة\",\n \"Use natural or even lighting (e.g. near a window)\": \"استخدم إضاءة طبيعية أو متساوية (مثل بالقرب من نافذة)\",\n \"Wear fitted, simple clothing (e.g. neutral colors)\": \"ارتد ملابس ضيقة وبسيطة (مثل ألوان محايدة)\",\n \"Don't wear loose, baggy, or layered clothing\": \"لا ترتد ملابس فضفاضة أو متعددة الطبقات\",\n \"Don't sit, pose, or bend your body\": \"لا تجلس أو تتخذ وضعية أو تنحني\",\n \"Don't use strong backlighting\": \"لا تستخدم إضاءة خلفية قوية\",\n \"Don't take mirror photos or selfies\": \"لا تلتقط صورًا في المرآة أو سيلفي\",\n \"Don't apply filters, effects, or edits\": \"لا تطبق فلاتر أو تأثيرات أو تعديلات\",\n\n // ── Age gate ──\n \"Are you 18 or older?\": \"هل عمرك 18 سنة أو أكبر؟\",\n \"Yes\": \"نعم\",\n \"No\": \"لا\",\n \"Please confirm your age\": \"يرجى تأكيد عمرك\",\n \"Please confirm that the person in the photo is 18 or older before uploading.\": \"يرجى تأكيد أن الشخص في الصورة عمره 18 سنة أو أكبر قبل التحميل.\",\n \"Under 18 — can't process this photo.\": \"أقل من 18 سنة — لا يمكن معالجة هذه الصورة.\",\n \"This photo appears to be of a minor. Please upload a photo of someone 18 or older.\": \"تبدو هذه الصورة لقاصر. يرجى تحميل صورة لشخص عمره 18 سنة أو أكبر.\",\n \"Different photo needed\": \"نحتاج صورة مختلفة\",\n \"Try another photo\": \"جرّب صورة أخرى\",\n\n // ── Photo step controls ──\n \"Continue\": \"متابعة\",\n \"Analyze My Size\": \"تحليل مقاسي\",\n \"Analyzing photo…\": \"جاري تحليل الصورة…\",\n \"Details\": \"التفاصيل\",\n \"Image must be under 10MB\": \"يجب أن تكون الصورة أقل من 10 ميغابايت\",\n \"Please upload an image file\": \"يرجى تحميل ملف صورة\",\n \"Please upload a photo\": \"يرجى تحميل صورة\",\n \"Prefer not to upload a photo?\": \"تفضل عدم تحميل صورة؟\",\n \"Enter measurements manually\": \"إدخال القياسات يدويًا\",\n \"Legal Notice\": \"إشعار قانوني\",\n \"Your image will be used to generate a virtual try-on preview showing how selected items may look and fit. Images are processed securely and are not stored after generation.\": \"سيتم استخدام صورتك لإنشاء معاينة للتجربة الافتراضية تُظهر كيف يمكن أن تبدو العناصر المختارة وتناسبك. تتم معالجة الصور بأمان ولا يتم تخزينها بعد التوليد.\",\n\n // ── BodyProfileView — form (right section) ──\n \"Body details\": \"تفاصيل الجسم\",\n \"Your body details\": \"تفاصيل جسمك\",\n \"Body Measurements\": \"قياسات الجسم\",\n \"AGE\": \"العمر\",\n \"years\": \"سنة\",\n \"Enter your height\": \"أدخل طولك\",\n \"Enter your weight\": \"أدخل وزنك\",\n \"Enter your bra size\": \"أدخل مقاس حمالة الصدر\",\n \"Please enter your height\": \"يرجى إدخال طولك\",\n \"Please enter your weight\": \"يرجى إدخال وزنك\",\n \"Please enter a valid height\": \"يرجى إدخال طول صحيح\",\n \"Please enter a valid weight\": \"يرجى إدخال وزن صحيح\",\n \"Please enter a valid height (100-250 cm)\": \"يرجى إدخال طول صحيح (100-250 سم)\",\n \"Please enter a valid weight (30-300 kg)\": \"يرجى إدخال وزن صحيح (30-300 كغ)\",\n \"Please select both band and cup size\": \"يرجى اختيار مقاس الحزام والكأس\",\n \"Select your bra size\": \"اختر مقاس حمالة الصدر\",\n \"BAND\": \"الحزام\",\n \"BAND SIZE\": \"مقاس الحزام\",\n \"CUP\": \"الكأس\",\n \"CUP SIZE\": \"مقاس الكأس\",\n \"BRA REGION\": \"منطقة حمالة الصدر\",\n \"Imperial\": \"إمبراطوري\",\n \"Metric\": \"متري\",\n \"These calibrate the AI — all required.\": \"هذه تعاير الذكاء الاصطناعي — جميعها مطلوبة.\",\n \"Using\": \"تستخدم\",\n \"start fresh\": \"ابدأ من جديد\",\n \"Close\": \"إغلاق\",\n\n // ── Body shape questions ──\n \"Which best describes your chest?\": \"أيهما يصف صدرك بشكل أفضل؟\",\n \"WHICH BEST DESCRIBES YOUR CHEST?\": \"أيهما يصف صدرك بشكل أفضل؟\",\n \"Which best describes your hips?\": \"أيهما يصف وركيك بشكل أفضل؟\",\n \"WHICH BEST DESCRIBES YOUR HIPS?\": \"أيهما يصف وركيك بشكل أفضل؟\",\n \"Which best describes your midsection?\": \"أيهما يصف منطقة وسطك بشكل أفضل؟\",\n \"WHICH BEST DESCRIBES YOUR MIDSECTION?\": \"أيهما يصف منطقة وسطك بشكل أفضل؟\",\n \"Which best describes your seat?\": \"أيهما يصف مؤخرتك بشكل أفضل؟\",\n \"WHICH BEST DESCRIBES YOUR SEAT?\": \"أيهما يصف مؤخرتك بشكل أفضل؟\",\n \"Average\": \"متوسط\",\n \"Narrow\": \"ضيق\",\n \"Broad\": \"عريض\",\n \"Curvy\": \"ممشوق\",\n \"A slimmer, narrower chest build\": \"بنية صدر أنحف وأضيق\",\n \"A moderate, proportionate chest\": \"صدر معتدل ومتناسب\",\n \"A wider, more muscular chest\": \"صدر أعرض وأكثر عضلية\",\n \"A flatter midsection with minimal protrusion\": \"منطقة وسط أكثر استواءً مع بروز قليل\",\n \"A moderate, natural midsection shape\": \"منطقة وسط معتدلة وطبيعية\",\n \"A fuller, more rounded midsection\": \"منطقة وسط أكثر امتلاءً واستدارة\",\n \"A flatter backside with less projection\": \"مؤخرة أكثر استواءً مع بروز أقل\",\n \"A moderate, natural backside shape\": \"مؤخرة معتدلة وطبيعية\",\n \"A fuller, more rounded backside\": \"مؤخرة أكثر امتلاءً واستدارة\",\n};\nexport default ar;\n","const tr: Record<string, string> = {\n \"Virtual Try-On\": \"Sanal Deneme\",\n \"Find Your Size & See It On You\": \"Bedenini bul ve üzerinde gör\",\n \"Get the perfect fit, then try it on virtually\": \"Mükemmel kalıbı bul, sonra sanal olarak dene\",\n \"Get Your Size\": \"Bedenin\",\n \"Instant fit recommendation\": \"Anında kalıp önerisi\",\n \"Try It On\": \"Dene\",\n \"See how it looks on you\": \"Üzerinde nasıl göründüğünü gör\",\n \"Find My Size\": \"Bedenimi bul\",\n \"Takes less than a minute\": \"Bir dakikadan az sürer\",\n \"Upload a full body photo\": \"Tam boy fotoğraf yükle\",\n \"JPEG, PNG or WebP (max 10MB)\": \"JPEG, PNG veya WebP (maks. 10MB)\",\n \"Your photo\": \"Fotoğrafın\",\n \"Let's find your best fit\": \"En iyi kalıbını bulalım\",\n \"Centimeters\": \"Santimetre\",\n \"Inches\": \"İnç\",\n \"Load saved profile...\": \"Kayıtlı profili yükle...\",\n \"HEIGHT\": \"BOY\",\n \"WEIGHT\": \"KİLO\",\n \"feet\": \"fit\",\n \"inches\": \"inç\",\n \"cm\": \"cm\",\n \"kg\": \"kg\",\n \"lbs\": \"libre\",\n \"in\": \"inç\",\n \"How to measure\": \"Nasıl ölçülür\",\n \"Hide guide\": \"Kılavuzu gizle\",\n \"I know my measurements\": \"Ölçülerimi biliyorum\",\n \"Not sure? Use height & weight instead\": \"Emin değil misin? Boy ve kilo kullan\",\n \"Please fill in height and weight\": \"Lütfen boy ve kiloyu girin\",\n \"Please fill in all required fields\": \"Lütfen tüm zorunlu alanları doldurun\",\n \"Next\": \"İleri\",\n \"Analyzing your size...\": \"Bedenin analiz ediliyor...\",\n \"RECOMMENDED SIZE\": \"ÖNERİLEN BEDEN\",\n \"NOT RECOMMENDED\": \"ÖNERİLMİYOR\",\n \"Edit measurements\": \"Ölçüleri düzenle\",\n \"Size guide\": \"Beden kılavuzu\",\n \"Your fit\": \"Kalıbın\",\n \"Your measure\": \"Ölçün\",\n \"perfect fit\": \"mükemmel kalıp\",\n \"too tight\": \"çok dar\",\n \"tight\": \"dar\",\n \"a bit tight\": \"biraz dar\",\n \"too loose\": \"çok bol\",\n \"loose\": \"bol\",\n \"a bit loose\": \"biraz bol\",\n \"See fit on your photo\": \"Fotoğrafında kalıbı gör\",\n \"Hide visual fit\": \"Görsel kalıbı gizle\",\n \"Analyzing...\": \"Analiz ediliyor...\",\n \"Try it on\": \"Dene\",\n \"SIZE CHART\": \"BEDEN TABLOSU\",\n \"YOUR ESTIMATED MEASUREMENTS\": \"TAHMİNİ ÖLÇÜLERİN\",\n \"Edit\": \"Düzenle\",\n \"Download\": \"İndir\",\n \"Size chart\": \"Beden tablosu\",\n \"Preparing your image...\": \"Görüntün hazırlanıyor...\",\n \"Analyzing body proportions...\": \"Vücut oranları analiz ediliyor...\",\n \"Matching garment to your photo...\": \"Giysi fotoğrafına uyarlanıyor...\",\n \"Generating virtual try-on...\": \"Sanal deneme oluşturuluyor...\",\n \"Refining details...\": \"Detaylar iyileştiriliyor...\",\n \"Almost there...\": \"Neredeyse bitti...\",\n \"Complete!\": \"Tamamlandı!\",\n \"This usually takes 15-25 seconds\": \"Bu genellikle 15-25 saniye sürer\",\n \"Something went wrong\": \"Bir hata oluştu\",\n \"Try Again\": \"Tekrar dene\",\n \"SDK not configured. Please provide an API key.\": \"SDK yapılandırılmadı. Lütfen bir API anahtarı girin.\",\n \"Please upload a JPEG, PNG, or WebP image.\": \"Lütfen JPEG, PNG veya WebP görüntü yükleyin.\",\n \"Image must be under 10MB.\": \"Görüntü 10MB'den küçük olmalıdır.\",\n \"Try-on generation failed\": \"Deneme oluşturma başarısız\",\n \"Failed to start try-on\": \"Deneme başlatılamadı\",\n \"No product image found. Please set the product-image attribute.\": \"Ürün görseli bulunamadı. product-image özniteliğini ayarlayın.\",\n \"Powered by\": \"Destekleyen\",\n \"My Profiles\": \"Profillerim\",\n \"History\": \"Geçmiş\",\n \"No saved profiles yet.\": \"Henüz kayıtlı profil yok.\",\n \"No history yet.\": \"Henüz geçmiş yok.\",\n \"Product\": \"Ürün\",\n \"Women's\": \"Kadın\",\n \"Men's\": \"Erkek\",\n \"Profiles\": \"Profiller\",\n \"Women's Profile\": \"Kadın Profili\",\n \"Men's Profile\": \"Erkek Profili\",\n \"Height\": \"Boy\",\n \"Weight\": \"Kilo\",\n \"Chest\": \"Göğüs\",\n \"Bust\": \"Göğüs\",\n \"Waist\": \"Bel\",\n \"Hips\": \"Kalça\",\n \"Shoulders\": \"Omuz\",\n \"Sleeve\": \"Kol\",\n \"Inseam\": \"İç bacak\",\n \"Neck\": \"Boyun\",\n \"Foot\": \"Ayak\",\n \"Shoe EU\": \"Ayakkabı EU\",\n \"Shoe US\": \"Ayakkabı US\",\n \"Shoe UK\": \"Ayakkabı UK\",\n \"Saved\": \"Kaydedildi\",\n \"Delete Profile\": \"Profili Sil\",\n \"Shoe size (US)\": \"Ayakkabı numarası (US)\",\n \"Shoe size (UK)\": \"Ayakkabı numarası (UK)\",\n \"Shoe size (EU)\": \"Ayakkabı numarası (EU)\",\n \"Generating...\": \"Oluşturuluyor...\",\n \"Foot length\": \"Ayak uzunluğu\",\n \"Size\": \"Beden\",\n \"Try on size\": \"Bedeni dene\",\n \"e.g.\": \"örn.\",\n \"Drop your photo here or click to upload\": \"Fotoğrafını buraya bırak veya yüklemek için tıkla\",\n \"This usually takes 15-20 seconds\": \"Bu genellikle 15-20 saniye sürer\",\n \"Try-on result\": \"Deneme sonucu\",\n \"Try Another\": \"Başka dene\",\n \"Back\": \"Geri\",\n \"You\": \"Sen\",\n \"Garment\": \"Giysi\",\n \"Your Height\": \"Boyun\",\n \"Your Weight\": \"Kilon\",\n \"Drag or scroll to set your height\": \"Boyunuzu ayarlamak için sürükleyin veya kaydırın\",\n \"Drag or scroll to set your weight\": \"Kilonuzu ayarlamak için sürükleyin veya kaydırın\",\n \"Enter height and weight first\": \"Önce boy ve kilonuzu girin\",\n\n // ── Field labels ──\n \"Lens Width\": \"Cam genişliği\",\n \"Bridge\": \"Köprü\",\n \"Arm Length\": \"Sap uzunluğu\",\n \"Head Circumference\": \"Baş çevresi\",\n \"Face Width\": \"Yüz genişliği\",\n \"Temple\": \"Sap\",\n \"Around widest point\": \"En geniş nokta etrafında\",\n \"Foot Length\": \"Ayak uzunluğu\",\n \"Shoulder\": \"Omuz\",\n \"Thigh\": \"Uyluk\",\n \"Hip\": \"Kalça\",\n\n // ── Units ──\n \"Millimetre\": \"Milimetre\",\n \"Centimetre\": \"Santimetre\",\n \"Millimeters\": \"Milimetre\",\n\n // ── Fit descriptors ──\n \"Tight\": \"Dar\",\n \"Loose\": \"Bol\",\n \"Short\": \"Kısa\",\n \"Long\": \"Uzun\",\n \"Perfect\": \"Mükemmel\",\n \"Perfect fit\": \"Mükemmel kalıp\",\n \"✓ Fit\": \"✓ Uygun\",\n \"too short\": \"çok kısa\",\n \"too long\": \"çok uzun\",\n \"a bit short\": \"biraz kısa\",\n \"a bit long\": \"biraz uzun\",\n\n // ── Length pills ──\n \"Length\": \"Uzunluk\",\n \"Length Adjustment\": \"Uzunluk ayarı\",\n \"Regular\": \"Normal\",\n \"Big\": \"Büyük\",\n \"Big & Tall\": \"Büyük & Uzun\",\n\n // ── Misc ──\n \"preview\": \"önizleme\",\n\n // ── BodyProfileView — photo upload area (left section) ──\n \"Upload your photo\": \"Fotoğrafınızı yükleyin\",\n \"Upload a photo\": \"Fotoğraf yükle\",\n \"Click or drag a full-body photo\": \"Tam boy bir fotoğrafı tıklayın veya sürükleyin\",\n \"Or upload a photo for AI sizing\": \"Veya yapay zekâ boyutlandırma için fotoğraf yükleyin\",\n \"Photo\": \"Fotoğraf\",\n \"How to take a good photo\": \"İyi fotoğraf nasıl çekilir\",\n \"How to take the best photo\": \"En iyi fotoğraf nasıl çekilir\",\n \"Do\": \"Yapın\",\n \"Don't\": \"Yapmayın\",\n \"Quick Tip\": \"Hızlı ipucu\",\n \"The simpler your photo is, the more accurate your virtual try-on results will be.\": \"Fotoğrafınız ne kadar sade olursa, sanal deneme sonuçları o kadar doğru olur.\",\n \"Choose a plain background (a light wall is ideal)\": \"Düz bir arka plan seçin (açık renk bir duvar idealdir)\",\n \"Stand facing the camera with your full body in frame\": \"Tüm vücudunuz kadrajda olacak şekilde kameraya dönük durun\",\n \"Stand straight and still, arms relaxed by your sides\": \"Dik ve hareketsiz durun, kollarınızı yanlara rahat bırakın\",\n \"Stand with your HEELS against a wall for best accuracy\": \"En iyi doğruluk için TOPUKLARINIZI duvara dayayın\",\n \"Use natural or even lighting (e.g. near a window)\": \"Doğal veya eşit aydınlatma kullanın (ör. pencere yakını)\",\n \"Wear fitted, simple clothing (e.g. neutral colors)\": \"Vücuda oturan sade kıyafet giyin (ör. nötr renkler)\",\n \"Don't wear loose, baggy, or layered clothing\": \"Bol, gevşek veya katmanlı kıyafet giymeyin\",\n \"Don't sit, pose, or bend your body\": \"Oturmayın, poz vermeyin, vücudunuzu eğmeyin\",\n \"Don't use strong backlighting\": \"Güçlü arka ışık kullanmayın\",\n \"Don't take mirror photos or selfies\": \"Ayna fotoğrafı veya selfie çekmeyin\",\n \"Don't apply filters, effects, or edits\": \"Filtre, efekt veya düzenleme uygulamayın\",\n\n // ── Age gate ──\n \"Are you 18 or older?\": \"18 yaşında veya daha büyük müsünüz?\",\n \"Yes\": \"Evet\",\n \"No\": \"Hayır\",\n \"Please confirm your age\": \"Lütfen yaşınızı onaylayın\",\n \"Please confirm that the person in the photo is 18 or older before uploading.\": \"Yüklemeden önce fotoğraftaki kişinin 18 yaş veya üzeri olduğunu onaylayın.\",\n \"Under 18 — can't process this photo.\": \"18 yaş altı — bu fotoğraf işlenemez.\",\n \"This photo appears to be of a minor. Please upload a photo of someone 18 or older.\": \"Bu fotoğraf reşit olmayan biri gibi görünüyor. 18 yaş veya üzeri birinin fotoğrafını yükleyin.\",\n \"Different photo needed\": \"Farklı fotoğraf gerekiyor\",\n \"Try another photo\": \"Başka bir fotoğraf deneyin\",\n\n // ── Photo step controls ──\n \"Continue\": \"Devam et\",\n \"Analyze My Size\": \"Bedenimi analiz et\",\n \"Analyzing photo…\": \"Fotoğraf analiz ediliyor…\",\n \"Details\": \"Detaylar\",\n \"Image must be under 10MB\": \"Görüntü 10MB'tan küçük olmalıdır\",\n \"Please upload an image file\": \"Bir görüntü dosyası yükleyin\",\n \"Please upload a photo\": \"Bir fotoğraf yükleyin\",\n \"Prefer not to upload a photo?\": \"Fotoğraf yüklemek istemiyor musunuz?\",\n \"Enter measurements manually\": \"Ölçüleri manuel girin\",\n \"Legal Notice\": \"Yasal Uyarı\",\n \"Your image will be used to generate a virtual try-on preview showing how selected items may look and fit. Images are processed securely and are not stored after generation.\": \"Fotoğrafınız, seçilen ürünlerin nasıl görüneceğini ve oturacağını gösteren bir sanal deneme önizlemesi oluşturmak için kullanılacaktır. Fotoğraflar güvenli şekilde işlenir ve oluşturulduktan sonra saklanmaz.\",\n\n // ── BodyProfileView — form (right section) ──\n \"Body details\": \"Vücut detayları\",\n \"Your body details\": \"Vücut detaylarınız\",\n \"Body Measurements\": \"Vücut ölçüleri\",\n \"AGE\": \"YAŞ\",\n \"years\": \"yaş\",\n \"Enter your height\": \"Boyunuzu girin\",\n \"Enter your weight\": \"Kilonuzu girin\",\n \"Enter your bra size\": \"Sütyen bedeninizi girin\",\n \"Please enter your height\": \"Boyunuzu girin\",\n \"Please enter your weight\": \"Kilonuzu girin\",\n \"Please enter a valid height\": \"Geçerli bir boy girin\",\n \"Please enter a valid weight\": \"Geçerli bir kilo girin\",\n \"Please enter a valid height (100-250 cm)\": \"Geçerli bir boy girin (100-250 cm)\",\n \"Please enter a valid weight (30-300 kg)\": \"Geçerli bir kilo girin (30-300 kg)\",\n \"Please select both band and cup size\": \"Hem bant hem de kap bedeni seçin\",\n \"Select your bra size\": \"Sütyen bedeninizi seçin\",\n \"BAND\": \"BANT\",\n \"BAND SIZE\": \"BANT BEDENİ\",\n \"CUP\": \"KAP\",\n \"CUP SIZE\": \"KAP BEDENİ\",\n \"BRA REGION\": \"SÜTYEN BÖLGESİ\",\n \"Imperial\": \"İngiliz birimleri\",\n \"Metric\": \"Metrik\",\n \"These calibrate the AI — all required.\": \"Bunlar yapay zekâyı kalibre eder — tümü zorunlu.\",\n \"Using\": \"Kullanılıyor\",\n \"start fresh\": \"yeniden başla\",\n \"Close\": \"Kapat\",\n\n // ── Body shape questions ──\n \"Which best describes your chest?\": \"Göğsünüzü en iyi hangisi tanımlar?\",\n \"WHICH BEST DESCRIBES YOUR CHEST?\": \"GÖĞSÜNÜZÜ EN İYİ HANGİSİ TANIMLAR?\",\n \"Which best describes your hips?\": \"Kalçanızı en iyi hangisi tanımlar?\",\n \"WHICH BEST DESCRIBES YOUR HIPS?\": \"KALÇANIZI EN İYİ HANGİSİ TANIMLAR?\",\n \"Which best describes your midsection?\": \"Belinizi en iyi hangisi tanımlar?\",\n \"WHICH BEST DESCRIBES YOUR MIDSECTION?\": \"BELİNİZİ EN İYİ HANGİSİ TANIMLAR?\",\n \"Which best describes your seat?\": \"Kalçanızı en iyi hangisi tanımlar?\",\n \"WHICH BEST DESCRIBES YOUR SEAT?\": \"KALÇANIZI EN İYİ HANGİSİ TANIMLAR?\",\n \"Average\": \"Ortalama\",\n \"Narrow\": \"Dar\",\n \"Broad\": \"Geniş\",\n \"Curvy\": \"Kıvrımlı\",\n \"A slimmer, narrower chest build\": \"Daha ince ve dar bir göğüs yapısı\",\n \"A moderate, proportionate chest\": \"Orta düzeyde, orantılı bir göğüs\",\n \"A wider, more muscular chest\": \"Daha geniş ve kaslı bir göğüs\",\n \"A flatter midsection with minimal protrusion\": \"Asgari çıkıntılı, daha düz bir bel\",\n \"A moderate, natural midsection shape\": \"Orta düzeyde, doğal bir bel şekli\",\n \"A fuller, more rounded midsection\": \"Daha dolgun, daha yuvarlak bir bel\",\n \"A flatter backside with less projection\": \"Daha az çıkıntılı, daha düz bir kalça\",\n \"A moderate, natural backside shape\": \"Orta düzeyde, doğal bir kalça şekli\",\n \"A fuller, more rounded backside\": \"Daha dolgun, daha yuvarlak bir kalça\",\n};\nexport default tr;\n","const pl: Record<string, string> = {\n \"Virtual Try-On\": \"Wirtualna Przymierzalnia\",\n \"Find Your Size & See It On You\": \"Znajdź swój rozmiar i przymierz\",\n \"Get the perfect fit, then try it on virtually\": \"Znajdź idealny krój i przymierz wirtualnie\",\n \"Get Your Size\": \"Twój rozmiar\",\n \"Instant fit recommendation\": \"Natychmiastowa rekomendacja kroju\",\n \"Try It On\": \"Przymierz\",\n \"See how it looks on you\": \"Zobacz, jak na Tobie wygląda\",\n \"Find My Size\": \"Znajdź mój rozmiar\",\n \"Takes less than a minute\": \"Zajmuje mniej niż minutę\",\n \"Upload a full body photo\": \"Prześlij zdjęcie całej sylwetki\",\n \"JPEG, PNG or WebP (max 10MB)\": \"JPEG, PNG lub WebP (maks. 10MB)\",\n \"Your photo\": \"Twoje zdjęcie\",\n \"Let's find your best fit\": \"Znajdźmy Twój najlepszy krój\",\n \"Centimeters\": \"Centymetry\",\n \"Inches\": \"Cale\",\n \"Load saved profile...\": \"Załaduj zapisany profil...\",\n \"HEIGHT\": \"WZROST\",\n \"WEIGHT\": \"WAGA\",\n \"feet\": \"stopy\",\n \"inches\": \"cale\",\n \"cm\": \"cm\",\n \"kg\": \"kg\",\n \"lbs\": \"funty\",\n \"in\": \"cal\",\n \"How to measure\": \"Jak mierzyć\",\n \"Hide guide\": \"Ukryj poradnik\",\n \"I know my measurements\": \"Znam swoje wymiary\",\n \"Not sure? Use height & weight instead\": \"Nie wiesz? Użyj wzrostu i wagi\",\n \"Please fill in height and weight\": \"Proszę podać wzrost i wagę\",\n \"Please fill in all required fields\": \"Proszę wypełnić wszystkie wymagane pola\",\n \"Next\": \"Dalej\",\n \"Analyzing your size...\": \"Analizowanie Twojego rozmiaru...\",\n \"RECOMMENDED SIZE\": \"ZALECANY ROZMIAR\",\n \"NOT RECOMMENDED\": \"NIEZALECANY\",\n \"Edit measurements\": \"Edytuj wymiary\",\n \"Size guide\": \"Tabela rozmiarów\",\n \"Your fit\": \"Twój krój\",\n \"Your measure\": \"Twój wymiar\",\n \"perfect fit\": \"idealny krój\",\n \"too tight\": \"za ciasne\",\n \"tight\": \"ciasne\",\n \"a bit tight\": \"trochę ciasne\",\n \"too loose\": \"za luźne\",\n \"loose\": \"luźne\",\n \"a bit loose\": \"trochę luźne\",\n \"See fit on your photo\": \"Zobacz krój na swoim zdjęciu\",\n \"Hide visual fit\": \"Ukryj wizualizację kroju\",\n \"Analyzing...\": \"Analizowanie...\",\n \"Try it on\": \"Przymierz\",\n \"SIZE CHART\": \"TABELA ROZMIARÓW\",\n \"YOUR ESTIMATED MEASUREMENTS\": \"TWOJE SZACUNKOWE WYMIARY\",\n \"Edit\": \"Edytuj\",\n \"Download\": \"Pobierz\",\n \"Size chart\": \"Tabela rozmiarów\",\n \"Preparing your image...\": \"Przygotowywanie zdjęcia...\",\n \"Analyzing body proportions...\": \"Analizowanie proporcji ciała...\",\n \"Matching garment to your photo...\": \"Dopasowywanie ubrania do zdjęcia...\",\n \"Generating virtual try-on...\": \"Generowanie wirtualnej przymiarki...\",\n \"Refining details...\": \"Dopracowywanie szczegółów...\",\n \"Almost there...\": \"Prawie gotowe...\",\n \"Complete!\": \"Gotowe!\",\n \"This usually takes 15-25 seconds\": \"To zwykle trwa 15–25 sekund\",\n \"Something went wrong\": \"Coś poszło nie tak\",\n \"Try Again\": \"Spróbuj ponownie\",\n \"SDK not configured. Please provide an API key.\": \"SDK nie skonfigurowane. Podaj klucz API.\",\n \"Please upload a JPEG, PNG, or WebP image.\": \"Prześlij obraz JPEG, PNG lub WebP.\",\n \"Image must be under 10MB.\": \"Obraz musi być mniejszy niż 10MB.\",\n \"Try-on generation failed\": \"Generowanie przymiarki nie powiodło się\",\n \"Failed to start try-on\": \"Nie udało się rozpocząć przymiarki\",\n \"No product image found. Please set the product-image attribute.\": \"Nie znaleziono zdjęcia produktu. Ustaw atrybut product-image.\",\n \"Powered by\": \"Obsługiwane przez\",\n \"My Profiles\": \"Moje Profile\",\n \"History\": \"Historia\",\n \"No saved profiles yet.\": \"Brak zapisanych profili.\",\n \"No history yet.\": \"Brak historii.\",\n \"Product\": \"Produkt\",\n \"Women's\": \"Damskie\",\n \"Men's\": \"Męskie\",\n \"Profiles\": \"Profile\",\n \"Women's Profile\": \"Profil Damski\",\n \"Men's Profile\": \"Profil Męski\",\n \"Height\": \"Wzrost\",\n \"Weight\": \"Waga\",\n \"Chest\": \"Klatka piersiowa\",\n \"Bust\": \"Biust\",\n \"Waist\": \"Talia\",\n \"Hips\": \"Biodra\",\n \"Shoulders\": \"Ramiona\",\n \"Sleeve\": \"Rękaw\",\n \"Inseam\": \"Długość wewnętrzna\",\n \"Neck\": \"Szyja\",\n \"Foot\": \"Stopa\",\n \"Shoe EU\": \"But EU\",\n \"Shoe US\": \"But US\",\n \"Shoe UK\": \"But UK\",\n \"Saved\": \"Zapisano\",\n \"Delete Profile\": \"Usuń Profil\",\n \"Shoe size (US)\": \"Rozmiar buta (US)\",\n \"Shoe size (UK)\": \"Rozmiar buta (UK)\",\n \"Shoe size (EU)\": \"Rozmiar buta (EU)\",\n \"Generating...\": \"Generowanie...\",\n \"Foot length\": \"Długość stopy\",\n \"Size\": \"Rozmiar\",\n \"Try on size\": \"Przymierz rozmiar\",\n \"e.g.\": \"np.\",\n \"Drop your photo here or click to upload\": \"Przeciągnij zdjęcie tutaj lub kliknij, aby przesłać\",\n \"This usually takes 15-20 seconds\": \"To zwykle trwa 15–20 sekund\",\n \"Try-on result\": \"Wynik przymiarki\",\n \"Try Another\": \"Spróbuj inną\",\n \"Back\": \"Wstecz\",\n \"You\": \"Ty\",\n \"Garment\": \"Odzież\",\n \"Your Height\": \"Twój Wzrost\",\n \"Your Weight\": \"Twoja Waga\",\n \"Drag or scroll to set your height\": \"Przeciągnij lub przewiń, aby ustawić wzrost\",\n \"Drag or scroll to set your weight\": \"Przeciągnij lub przewiń, aby ustawić wagę\",\n \"Enter height and weight first\": \"Najpierw wprowadź wzrost i wagę\",\n\n // ── Field labels ──\n \"Lens Width\": \"Szerokość soczewki\",\n \"Bridge\": \"Mostek\",\n \"Arm Length\": \"Długość zauszników\",\n \"Head Circumference\": \"Obwód głowy\",\n \"Face Width\": \"Szerokość twarzy\",\n \"Temple\": \"Zausznik\",\n \"Around widest point\": \"Wokół najszerszego punktu\",\n \"Foot Length\": \"Długość stopy\",\n \"Shoulder\": \"Bark\",\n \"Thigh\": \"Udo\",\n \"Hip\": \"Biodro\",\n\n // ── Units ──\n \"Millimetre\": \"Milimetr\",\n \"Centimetre\": \"Centymetr\",\n \"Millimeters\": \"Milimetry\",\n\n // ── Fit descriptors ──\n \"Tight\": \"Ciasno\",\n \"Loose\": \"Luźno\",\n \"Short\": \"Krótko\",\n \"Long\": \"Długo\",\n \"Perfect\": \"Idealnie\",\n \"Perfect fit\": \"Idealne dopasowanie\",\n \"✓ Fit\": \"✓ Pasuje\",\n \"too short\": \"za krótko\",\n \"too long\": \"za długo\",\n \"a bit short\": \"trochę krótko\",\n \"a bit long\": \"trochę długo\",\n\n // ── Length pills ──\n \"Length\": \"Długość\",\n \"Length Adjustment\": \"Regulacja długości\",\n \"Regular\": \"Standardowy\",\n \"Big\": \"Duży\",\n \"Big & Tall\": \"Duży i Wysoki\",\n\n // ── Misc ──\n \"preview\": \"podgląd\",\n\n // ── BodyProfileView — photo upload area (left section) ──\n \"Upload your photo\": \"Prześlij swoje zdjęcie\",\n \"Upload a photo\": \"Prześlij zdjęcie\",\n \"Click or drag a full-body photo\": \"Kliknij lub przeciągnij zdjęcie całej sylwetki\",\n \"Or upload a photo for AI sizing\": \"Lub prześlij zdjęcie do określenia rozmiaru przez AI\",\n \"Photo\": \"Zdjęcie\",\n \"How to take a good photo\": \"Jak zrobić dobre zdjęcie\",\n \"How to take the best photo\": \"Jak zrobić najlepsze zdjęcie\",\n \"Do\": \"Rób\",\n \"Don't\": \"Nie rób\",\n \"Quick Tip\": \"Szybka wskazówka\",\n \"The simpler your photo is, the more accurate your virtual try-on results will be.\": \"Im prostsze zdjęcie, tym dokładniejsze wyniki wirtualnej przymiarki.\",\n \"Choose a plain background (a light wall is ideal)\": \"Wybierz proste tło (jasna ściana jest idealna)\",\n \"Stand facing the camera with your full body in frame\": \"Stań przodem do kamery, tak aby cała sylwetka znalazła się w kadrze\",\n \"Stand straight and still, arms relaxed by your sides\": \"Stój prosto i nieruchomo, ręce luźno przy bokach\",\n \"Stand with your HEELS against a wall for best accuracy\": \"Oprzyj PIĘTY o ścianę, aby uzyskać najlepszą dokładność\",\n \"Use natural or even lighting (e.g. near a window)\": \"Używaj naturalnego lub równomiernego oświetlenia (np. przy oknie)\",\n \"Wear fitted, simple clothing (e.g. neutral colors)\": \"Noś dopasowane, proste ubranie (np. neutralne kolory)\",\n \"Don't wear loose, baggy, or layered clothing\": \"Nie noś luźnych, workowatych ani warstwowych ubrań\",\n \"Don't sit, pose, or bend your body\": \"Nie siadaj, nie pozuj, nie zginaj ciała\",\n \"Don't use strong backlighting\": \"Nie używaj mocnego oświetlenia od tyłu\",\n \"Don't take mirror photos or selfies\": \"Nie rób zdjęć w lustrze ani selfie\",\n \"Don't apply filters, effects, or edits\": \"Nie stosuj filtrów, efektów ani edycji\",\n\n // ── Age gate ──\n \"Are you 18 or older?\": \"Czy masz 18 lat lub więcej?\",\n \"Yes\": \"Tak\",\n \"No\": \"Nie\",\n \"Please confirm your age\": \"Potwierdź swój wiek\",\n \"Please confirm that the person in the photo is 18 or older before uploading.\": \"Potwierdź, że osoba na zdjęciu ma 18 lat lub więcej, zanim prześlesz.\",\n \"Under 18 — can't process this photo.\": \"Poniżej 18 lat — nie można przetworzyć tego zdjęcia.\",\n \"This photo appears to be of a minor. Please upload a photo of someone 18 or older.\": \"To zdjęcie wygląda na osobę nieletnią. Prześlij zdjęcie osoby pełnoletniej.\",\n \"Different photo needed\": \"Potrzebne inne zdjęcie\",\n \"Try another photo\": \"Spróbuj innego zdjęcia\",\n\n // ── Photo step controls ──\n \"Continue\": \"Kontynuuj\",\n \"Analyze My Size\": \"Przeanalizuj mój rozmiar\",\n \"Analyzing photo…\": \"Analizowanie zdjęcia…\",\n \"Details\": \"Szczegóły\",\n \"Image must be under 10MB\": \"Obraz musi mieć mniej niż 10 MB\",\n \"Please upload an image file\": \"Prześlij plik obrazu\",\n \"Please upload a photo\": \"Prześlij zdjęcie\",\n \"Prefer not to upload a photo?\": \"Wolisz nie przesyłać zdjęcia?\",\n \"Enter measurements manually\": \"Wprowadź wymiary ręcznie\",\n \"Legal Notice\": \"Informacja prawna\",\n \"Your image will be used to generate a virtual try-on preview showing how selected items may look and fit. Images are processed securely and are not stored after generation.\": \"Twój obraz zostanie użyty do wygenerowania podglądu wirtualnej przymiarki pokazującego, jak wybrane przedmioty mogą wyglądać i pasować. Obrazy są przetwarzane bezpiecznie i nie są przechowywane po wygenerowaniu.\",\n\n // ── BodyProfileView — form (right section) ──\n \"Body details\": \"Dane sylwetki\",\n \"Your body details\": \"Twoje dane sylwetki\",\n \"Body Measurements\": \"Wymiary ciała\",\n \"AGE\": \"WIEK\",\n \"years\": \"lat\",\n \"Enter your height\": \"Wprowadź swój wzrost\",\n \"Enter your weight\": \"Wprowadź swoją wagę\",\n \"Enter your bra size\": \"Wprowadź rozmiar biustonosza\",\n \"Please enter your height\": \"Wprowadź swój wzrost\",\n \"Please enter your weight\": \"Wprowadź swoją wagę\",\n \"Please enter a valid height\": \"Wprowadź prawidłowy wzrost\",\n \"Please enter a valid weight\": \"Wprowadź prawidłową wagę\",\n \"Please enter a valid height (100-250 cm)\": \"Wprowadź prawidłowy wzrost (100-250 cm)\",\n \"Please enter a valid weight (30-300 kg)\": \"Wprowadź prawidłową wagę (30-300 kg)\",\n \"Please select both band and cup size\": \"Wybierz rozmiar obwodu i miseczki\",\n \"Select your bra size\": \"Wybierz rozmiar biustonosza\",\n \"BAND\": \"OBWÓD\",\n \"BAND SIZE\": \"ROZMIAR OBWODU\",\n \"CUP\": \"MISECZKA\",\n \"CUP SIZE\": \"ROZMIAR MISECZKI\",\n \"BRA REGION\": \"REGION BIUSTONOSZA\",\n \"Imperial\": \"Imperialny\",\n \"Metric\": \"Metryczny\",\n \"These calibrate the AI — all required.\": \"Te dane kalibrują AI — wszystkie wymagane.\",\n \"Using\": \"Używa\",\n \"start fresh\": \"zacznij od nowa\",\n \"Close\": \"Zamknij\",\n\n // ── Body shape questions ──\n \"Which best describes your chest?\": \"Co najlepiej opisuje Twoją klatkę piersiową?\",\n \"WHICH BEST DESCRIBES YOUR CHEST?\": \"CO NAJLEPIEJ OPISUJE TWOJĄ KLATKĘ PIERSIOWĄ?\",\n \"Which best describes your hips?\": \"Co najlepiej opisuje Twoje biodra?\",\n \"WHICH BEST DESCRIBES YOUR HIPS?\": \"CO NAJLEPIEJ OPISUJE TWOJE BIODRA?\",\n \"Which best describes your midsection?\": \"Co najlepiej opisuje Twoją talię?\",\n \"WHICH BEST DESCRIBES YOUR MIDSECTION?\": \"CO NAJLEPIEJ OPISUJE TWOJĄ TALIĘ?\",\n \"Which best describes your seat?\": \"Co najlepiej opisuje Twoje pośladki?\",\n \"WHICH BEST DESCRIBES YOUR SEAT?\": \"CO NAJLEPIEJ OPISUJE TWOJE POŚLADKI?\",\n \"Average\": \"Średnia\",\n \"Narrow\": \"Wąska\",\n \"Broad\": \"Szeroka\",\n \"Curvy\": \"Krągła\",\n \"A slimmer, narrower chest build\": \"Szczuplejsza, węższa budowa klatki piersiowej\",\n \"A moderate, proportionate chest\": \"Umiarkowana, proporcjonalna klatka piersiowa\",\n \"A wider, more muscular chest\": \"Szersza, bardziej muskularna klatka piersiowa\",\n \"A flatter midsection with minimal protrusion\": \"Płaska talia z minimalnym wybrzuszeniem\",\n \"A moderate, natural midsection shape\": \"Umiarkowany, naturalny kształt talii\",\n \"A fuller, more rounded midsection\": \"Pełniejsza, bardziej zaokrąglona talia\",\n \"A flatter backside with less projection\": \"Płaskie pośladki z mniejszym wystawaniem\",\n \"A moderate, natural backside shape\": \"Umiarkowany, naturalny kształt pośladków\",\n \"A fuller, more rounded backside\": \"Pełniejsze, bardziej zaokrąglone pośladki\",\n};\nexport default pl;\n","const sv: Record<string, string> = {\n \"Virtual Try-On\": \"Virtuell Provning\",\n \"Find Your Size & See It On You\": \"Hitta din storlek och prova\",\n \"Get the perfect fit, then try it on virtually\": \"Hitta den perfekta passformen och prova virtuellt\",\n \"Get Your Size\": \"Din storlek\",\n \"Instant fit recommendation\": \"Omedelbar passformsrekommendation\",\n \"Try It On\": \"Prova\",\n \"See how it looks on you\": \"Se hur det ser ut på dig\",\n \"Find My Size\": \"Hitta min storlek\",\n \"Takes less than a minute\": \"Tar mindre än en minut\",\n \"Upload a full body photo\": \"Ladda upp ett helkroppsfoto\",\n \"JPEG, PNG or WebP (max 10MB)\": \"JPEG, PNG eller WebP (max 10MB)\",\n \"Your photo\": \"Ditt foto\",\n \"Let's find your best fit\": \"Låt oss hitta din bästa passform\",\n \"Centimeters\": \"Centimeter\",\n \"Inches\": \"Tum\",\n \"Load saved profile...\": \"Ladda sparad profil...\",\n \"HEIGHT\": \"LÄNGD\",\n \"WEIGHT\": \"VIKT\",\n \"feet\": \"fot\",\n \"inches\": \"tum\",\n \"cm\": \"cm\",\n \"kg\": \"kg\",\n \"lbs\": \"pund\",\n \"in\": \"tum\",\n \"How to measure\": \"Hur man mäter\",\n \"Hide guide\": \"Dölj guide\",\n \"I know my measurements\": \"Jag vet mina mått\",\n \"Not sure? Use height & weight instead\": \"Osäker? Använd längd och vikt\",\n \"Please fill in height and weight\": \"Vänligen fyll i längd och vikt\",\n \"Please fill in all required fields\": \"Vänligen fyll i alla obligatoriska fält\",\n \"Next\": \"Nästa\",\n \"Analyzing your size...\": \"Analyserar din storlek...\",\n \"RECOMMENDED SIZE\": \"REKOMMENDERAD STORLEK\",\n \"NOT RECOMMENDED\": \"EJ REKOMMENDERAD\",\n \"Edit measurements\": \"Redigera mått\",\n \"Size guide\": \"Storleksguide\",\n \"Your fit\": \"Din passform\",\n \"Your measure\": \"Ditt mått\",\n \"perfect fit\": \"perfekt passform\",\n \"too tight\": \"för tight\",\n \"tight\": \"tight\",\n \"a bit tight\": \"lite tight\",\n \"too loose\": \"för lös\",\n \"loose\": \"lös\",\n \"a bit loose\": \"lite lös\",\n \"See fit on your photo\": \"Se passform på ditt foto\",\n \"Hide visual fit\": \"Dölj visuell passform\",\n \"Analyzing...\": \"Analyserar...\",\n \"Try it on\": \"Prova\",\n \"SIZE CHART\": \"STORLEKSTABELL\",\n \"YOUR ESTIMATED MEASUREMENTS\": \"DINA UPPSKATTADE MÅTT\",\n \"Edit\": \"Redigera\",\n \"Download\": \"Ladda ner\",\n \"Size chart\": \"Storlekstabell\",\n \"Preparing your image...\": \"Förbereder din bild...\",\n \"Analyzing body proportions...\": \"Analyserar kroppsproportioner...\",\n \"Matching garment to your photo...\": \"Anpassar plagg till ditt foto...\",\n \"Generating virtual try-on...\": \"Skapar virtuell provning...\",\n \"Refining details...\": \"Förfinar detaljer...\",\n \"Almost there...\": \"Nästan klart...\",\n \"Complete!\": \"Klart!\",\n \"This usually takes 15-25 seconds\": \"Det tar vanligtvis 15–25 sekunder\",\n \"Something went wrong\": \"Något gick fel\",\n \"Try Again\": \"Försök igen\",\n \"SDK not configured. Please provide an API key.\": \"SDK ej konfigurerat. Ange en API-nyckel.\",\n \"Please upload a JPEG, PNG, or WebP image.\": \"Ladda upp en JPEG-, PNG- eller WebP-bild.\",\n \"Image must be under 10MB.\": \"Bilden måste vara under 10MB.\",\n \"Try-on generation failed\": \"Provningsgenerering misslyckades\",\n \"Failed to start try-on\": \"Kunde inte starta provning\",\n \"No product image found. Please set the product-image attribute.\": \"Ingen produktbild hittades. Ange product-image attributet.\",\n \"Powered by\": \"Drivs av\",\n \"My Profiles\": \"Mina Profiler\",\n \"History\": \"Historik\",\n \"No saved profiles yet.\": \"Inga sparade profiler än.\",\n \"No history yet.\": \"Ingen historik än.\",\n \"Product\": \"Produkt\",\n \"Women's\": \"Dam\",\n \"Men's\": \"Herr\",\n \"Profiles\": \"Profiler\",\n \"Women's Profile\": \"Damprofil\",\n \"Men's Profile\": \"Herrprofil\",\n \"Height\": \"Längd\",\n \"Weight\": \"Vikt\",\n \"Chest\": \"Bröst\",\n \"Bust\": \"Byst\",\n \"Waist\": \"Midja\",\n \"Hips\": \"Höfter\",\n \"Shoulders\": \"Axlar\",\n \"Sleeve\": \"Ärm\",\n \"Inseam\": \"Innerbensläng\",\n \"Neck\": \"Hals\",\n \"Foot\": \"Fot\",\n \"Shoe EU\": \"Sko EU\",\n \"Shoe US\": \"Sko US\",\n \"Shoe UK\": \"Sko UK\",\n \"Saved\": \"Sparad\",\n \"Delete Profile\": \"Radera Profil\",\n \"Shoe size (US)\": \"Skostorlek (US)\",\n \"Shoe size (UK)\": \"Skostorlek (UK)\",\n \"Shoe size (EU)\": \"Skostorlek (EU)\",\n \"Generating...\": \"Skapar...\",\n \"Foot length\": \"Fotlängd\",\n \"Size\": \"Storlek\",\n \"Try on size\": \"Prova storlek\",\n \"e.g.\": \"t.ex.\",\n \"Drop your photo here or click to upload\": \"Släpp ditt foto här eller klicka för att ladda upp\",\n \"This usually takes 15-20 seconds\": \"Det tar vanligtvis 15–20 sekunder\",\n \"Try-on result\": \"Provningsresultat\",\n \"Try Another\": \"Prova en annan\",\n \"Back\": \"Tillbaka\",\n \"You\": \"Du\",\n \"Garment\": \"Plagg\",\n \"Your Height\": \"Din Längd\",\n \"Your Weight\": \"Din Vikt\",\n \"Drag or scroll to set your height\": \"Dra eller scrolla för att ställa in din längd\",\n \"Drag or scroll to set your weight\": \"Dra eller scrolla för att ställa in din vikt\",\n \"Enter height and weight first\": \"Ange längd och vikt först\",\n\n // ── Field labels ──\n \"Lens Width\": \"Glasögonbredd\",\n \"Bridge\": \"Brygga\",\n \"Arm Length\": \"Skalmlängd\",\n \"Head Circumference\": \"Huvudomkrets\",\n \"Face Width\": \"Ansiktsbredd\",\n \"Temple\": \"Skalm\",\n \"Around widest point\": \"Runt bredaste punkten\",\n \"Foot Length\": \"Fotlängd\",\n \"Shoulder\": \"Axel\",\n \"Thigh\": \"Lår\",\n \"Hip\": \"Höft\",\n\n // ── Units ──\n \"Millimetre\": \"Millimeter\",\n \"Centimetre\": \"Centimeter\",\n \"Millimeters\": \"Millimeter\",\n\n // ── Fit descriptors ──\n \"Tight\": \"Trångt\",\n \"Loose\": \"Löst\",\n \"Short\": \"Kort\",\n \"Long\": \"Lång\",\n \"Perfect\": \"Perfekt\",\n \"Perfect fit\": \"Perfekt passform\",\n \"✓ Fit\": \"✓ Passar\",\n \"too short\": \"för kort\",\n \"too long\": \"för lång\",\n \"a bit short\": \"lite kort\",\n \"a bit long\": \"lite lång\",\n\n // ── Length pills ──\n \"Length\": \"Längd\",\n \"Length Adjustment\": \"Längdjustering\",\n \"Regular\": \"Normal\",\n \"Big\": \"Stor\",\n \"Big & Tall\": \"Stor & Lång\",\n\n // ── Misc ──\n \"preview\": \"förhandsvisning\",\n\n // ── BodyProfileView — photo upload area (left section) ──\n \"Upload your photo\": \"Ladda upp ditt foto\",\n \"Upload a photo\": \"Ladda upp ett foto\",\n \"Click or drag a full-body photo\": \"Klicka eller dra ett helkroppsfoto\",\n \"Or upload a photo for AI sizing\": \"Eller ladda upp ett foto för AI-storleksanalys\",\n \"Photo\": \"Foto\",\n \"How to take a good photo\": \"Hur du tar ett bra foto\",\n \"How to take the best photo\": \"Hur du tar det bästa fotot\",\n \"Do\": \"Gör\",\n \"Don't\": \"Gör inte\",\n \"Quick Tip\": \"Snabbt tips\",\n \"The simpler your photo is, the more accurate your virtual try-on results will be.\": \"Ju enklare ditt foto är, desto mer exakta blir resultaten av den virtuella provningen.\",\n \"Choose a plain background (a light wall is ideal)\": \"Välj en enkel bakgrund (en ljus vägg är idealisk)\",\n \"Stand facing the camera with your full body in frame\": \"Stå vänd mot kameran med hela kroppen i bild\",\n \"Stand straight and still, arms relaxed by your sides\": \"Stå rakt och stilla med armarna avslappnade vid sidorna\",\n \"Stand with your HEELS against a wall for best accuracy\": \"Stå med HÄLARNA mot en vägg för bästa noggrannhet\",\n \"Use natural or even lighting (e.g. near a window)\": \"Använd naturlig eller jämn belysning (t.ex. nära ett fönster)\",\n \"Wear fitted, simple clothing (e.g. neutral colors)\": \"Bär åtsittande, enkla kläder (t.ex. neutrala färger)\",\n \"Don't wear loose, baggy, or layered clothing\": \"Bär inte lösa, baggiga eller flera lager kläder\",\n \"Don't sit, pose, or bend your body\": \"Sitt inte, posera inte och böj inte kroppen\",\n \"Don't use strong backlighting\": \"Använd inte starkt motljus\",\n \"Don't take mirror photos or selfies\": \"Ta inte spegelbilder eller selfies\",\n \"Don't apply filters, effects, or edits\": \"Använd inte filter, effekter eller redigeringar\",\n\n // ── Age gate ──\n \"Are you 18 or older?\": \"Är du 18 år eller äldre?\",\n \"Yes\": \"Ja\",\n \"No\": \"Nej\",\n \"Please confirm your age\": \"Bekräfta din ålder\",\n \"Please confirm that the person in the photo is 18 or older before uploading.\": \"Bekräfta att personen på fotot är 18 år eller äldre innan du laddar upp.\",\n \"Under 18 — can't process this photo.\": \"Under 18 — kan inte bearbeta detta foto.\",\n \"This photo appears to be of a minor. Please upload a photo of someone 18 or older.\": \"Detta foto verkar vara av en minderårig. Ladda upp ett foto av någon som är 18 år eller äldre.\",\n \"Different photo needed\": \"Annat foto behövs\",\n \"Try another photo\": \"Prova ett annat foto\",\n\n // ── Photo step controls ──\n \"Continue\": \"Fortsätt\",\n \"Analyze My Size\": \"Analysera min storlek\",\n \"Analyzing photo…\": \"Analyserar foto…\",\n \"Details\": \"Detaljer\",\n \"Image must be under 10MB\": \"Bilden måste vara mindre än 10 MB\",\n \"Please upload an image file\": \"Ladda upp en bildfil\",\n \"Please upload a photo\": \"Ladda upp ett foto\",\n \"Prefer not to upload a photo?\": \"Vill du inte ladda upp ett foto?\",\n \"Enter measurements manually\": \"Ange mått manuellt\",\n \"Legal Notice\": \"Juridisk information\",\n \"Your image will be used to generate a virtual try-on preview showing how selected items may look and fit. Images are processed securely and are not stored after generation.\": \"Din bild används för att generera en förhandsvisning av virtuell provning som visar hur valda artiklar kan se ut och passa. Bilder behandlas säkert och lagras inte efter generering.\",\n\n // ── BodyProfileView — form (right section) ──\n \"Body details\": \"Kroppsdetaljer\",\n \"Your body details\": \"Dina kroppsdetaljer\",\n \"Body Measurements\": \"Kroppsmått\",\n \"AGE\": \"ÅLDER\",\n \"years\": \"år\",\n \"Enter your height\": \"Ange din längd\",\n \"Enter your weight\": \"Ange din vikt\",\n \"Enter your bra size\": \"Ange din BH-storlek\",\n \"Please enter your height\": \"Ange din längd\",\n \"Please enter your weight\": \"Ange din vikt\",\n \"Please enter a valid height\": \"Ange en giltig längd\",\n \"Please enter a valid weight\": \"Ange en giltig vikt\",\n \"Please enter a valid height (100-250 cm)\": \"Ange en giltig längd (100-250 cm)\",\n \"Please enter a valid weight (30-300 kg)\": \"Ange en giltig vikt (30-300 kg)\",\n \"Please select both band and cup size\": \"Välj både bandstorlek och kupstorlek\",\n \"Select your bra size\": \"Välj din BH-storlek\",\n \"BAND\": \"BAND\",\n \"BAND SIZE\": \"BANDSTORLEK\",\n \"CUP\": \"KUPA\",\n \"CUP SIZE\": \"KUPSTORLEK\",\n \"BRA REGION\": \"BH-REGION\",\n \"Imperial\": \"Imperial\",\n \"Metric\": \"Metrisk\",\n \"These calibrate the AI — all required.\": \"Dessa kalibrerar AI:n — alla krävs.\",\n \"Using\": \"Använder\",\n \"start fresh\": \"börja om\",\n \"Close\": \"Stäng\",\n\n // ── Body shape questions ──\n \"Which best describes your chest?\": \"Vad beskriver bröstet bäst?\",\n \"WHICH BEST DESCRIBES YOUR CHEST?\": \"VAD BESKRIVER BRÖSTET BÄST?\",\n \"Which best describes your hips?\": \"Vad beskriver höfterna bäst?\",\n \"WHICH BEST DESCRIBES YOUR HIPS?\": \"VAD BESKRIVER HÖFTERNA BÄST?\",\n \"Which best describes your midsection?\": \"Vad beskriver midjan bäst?\",\n \"WHICH BEST DESCRIBES YOUR MIDSECTION?\": \"VAD BESKRIVER MIDJAN BÄST?\",\n \"Which best describes your seat?\": \"Vad beskriver baken bäst?\",\n \"WHICH BEST DESCRIBES YOUR SEAT?\": \"VAD BESKRIVER BAKEN BÄST?\",\n \"Average\": \"Medel\",\n \"Narrow\": \"Smal\",\n \"Broad\": \"Bred\",\n \"Curvy\": \"Kurvig\",\n \"A slimmer, narrower chest build\": \"En smalare, slankare bröstkorg\",\n \"A moderate, proportionate chest\": \"En måttlig, proportionerlig bröstkorg\",\n \"A wider, more muscular chest\": \"En bredare, mer muskulös bröstkorg\",\n \"A flatter midsection with minimal protrusion\": \"En plattare midja med minimal utbuktning\",\n \"A moderate, natural midsection shape\": \"En måttlig, naturlig midja\",\n \"A fuller, more rounded midsection\": \"En fylligare, rundare midja\",\n \"A flatter backside with less projection\": \"En plattare bak med mindre utbuktning\",\n \"A moderate, natural backside shape\": \"En måttlig, naturlig bak\",\n \"A fuller, more rounded backside\": \"En fylligare, rundare bak\",\n};\nexport default sv;\n","const da: Record<string, string> = {\n \"Virtual Try-On\": \"Virtuel Prøvning\",\n \"Find Your Size & See It On You\": \"Find din størrelse og prøv det\",\n \"Get the perfect fit, then try it on virtually\": \"Find den perfekte pasform og prøv det virtuelt\",\n \"Get Your Size\": \"Din størrelse\",\n \"Instant fit recommendation\": \"Øjeblikkelig pasformsanbefaling\",\n \"Try It On\": \"Prøv det\",\n \"See how it looks on you\": \"Se hvordan det ser ud på dig\",\n \"Find My Size\": \"Find min størrelse\",\n \"Takes less than a minute\": \"Tager mindre end et minut\",\n \"Upload a full body photo\": \"Upload et helfoto\",\n \"JPEG, PNG or WebP (max 10MB)\": \"JPEG, PNG eller WebP (maks 10MB)\",\n \"Your photo\": \"Dit foto\",\n \"Let's find your best fit\": \"Lad os finde din bedste pasform\",\n \"Centimeters\": \"Centimeter\",\n \"Inches\": \"Tommer\",\n \"Load saved profile...\": \"Indlæs gemt profil...\",\n \"HEIGHT\": \"HØJDE\",\n \"WEIGHT\": \"VÆGT\",\n \"feet\": \"fod\",\n \"inches\": \"tommer\",\n \"cm\": \"cm\",\n \"kg\": \"kg\",\n \"lbs\": \"pund\",\n \"in\": \"tommer\",\n \"How to measure\": \"Sådan måler du\",\n \"Hide guide\": \"Skjul guide\",\n \"I know my measurements\": \"Jeg kender mine mål\",\n \"Not sure? Use height & weight instead\": \"Usikker? Brug højde og vægt\",\n \"Please fill in height and weight\": \"Udfyld venligst højde og vægt\",\n \"Please fill in all required fields\": \"Udfyld venligst alle påkrævede felter\",\n \"Next\": \"Næste\",\n \"Analyzing your size...\": \"Analyserer din størrelse...\",\n \"RECOMMENDED SIZE\": \"ANBEFALET STØRRELSE\",\n \"NOT RECOMMENDED\": \"IKKE ANBEFALET\",\n \"Edit measurements\": \"Rediger mål\",\n \"Size guide\": \"Størrelsesguide\",\n \"Your fit\": \"Din pasform\",\n \"Your measure\": \"Dit mål\",\n \"perfect fit\": \"perfekt pasform\",\n \"too tight\": \"for stram\",\n \"tight\": \"stram\",\n \"a bit tight\": \"lidt stram\",\n \"too loose\": \"for løs\",\n \"loose\": \"løs\",\n \"a bit loose\": \"lidt løs\",\n \"See fit on your photo\": \"Se pasform på dit foto\",\n \"Hide visual fit\": \"Skjul visuel pasform\",\n \"Analyzing...\": \"Analyserer...\",\n \"Try it on\": \"Prøv det\",\n \"SIZE CHART\": \"STØRRELSESSKEMA\",\n \"YOUR ESTIMATED MEASUREMENTS\": \"DINE ANSLÅEDE MÅL\",\n \"Edit\": \"Rediger\",\n \"Download\": \"Download\",\n \"Size chart\": \"Størrelsesskema\",\n \"Preparing your image...\": \"Forbereder dit billede...\",\n \"Analyzing body proportions...\": \"Analyserer kropsforhold...\",\n \"Matching garment to your photo...\": \"Tilpasser tøj til dit foto...\",\n \"Generating virtual try-on...\": \"Genererer virtuel prøvning...\",\n \"Refining details...\": \"Forfiner detaljer...\",\n \"Almost there...\": \"Næsten færdig...\",\n \"Complete!\": \"Færdig!\",\n \"This usually takes 15-25 seconds\": \"Dette tager normalt 15-25 sekunder\",\n \"Something went wrong\": \"Noget gik galt\",\n \"Try Again\": \"Prøv igen\",\n \"SDK not configured. Please provide an API key.\": \"SDK ikke konfigureret. Angiv venligst en API-nøgle.\",\n \"Please upload a JPEG, PNG, or WebP image.\": \"Upload venligst et JPEG-, PNG- eller WebP-billede.\",\n \"Image must be under 10MB.\": \"Billedet skal være under 10MB.\",\n \"Try-on generation failed\": \"Prøvningsgenerering mislykkedes\",\n \"Failed to start try-on\": \"Kunne ikke starte prøvning\",\n \"No product image found. Please set the product-image attribute.\": \"Intet produktbillede fundet. Indstil product-image attributten.\",\n \"Powered by\": \"Drevet af\",\n \"My Profiles\": \"Mine Profiler\",\n \"History\": \"Historik\",\n \"No saved profiles yet.\": \"Ingen gemte profiler endnu.\",\n \"No history yet.\": \"Ingen historik endnu.\",\n \"Product\": \"Produkt\",\n \"Women's\": \"Dame\",\n \"Men's\": \"Herre\",\n \"Profiles\": \"Profiler\",\n \"Women's Profile\": \"Dameprofil\",\n \"Men's Profile\": \"Herreprofil\",\n \"Height\": \"Højde\",\n \"Weight\": \"Vægt\",\n \"Chest\": \"Bryst\",\n \"Bust\": \"Buste\",\n \"Waist\": \"Talje\",\n \"Hips\": \"Hofter\",\n \"Shoulders\": \"Skuldre\",\n \"Sleeve\": \"Ærme\",\n \"Inseam\": \"Indvendig benlængde\",\n \"Neck\": \"Hals\",\n \"Foot\": \"Fod\",\n \"Shoe EU\": \"Sko EU\",\n \"Shoe US\": \"Sko US\",\n \"Shoe UK\": \"Sko UK\",\n \"Saved\": \"Gemt\",\n \"Delete Profile\": \"Slet Profil\",\n \"Shoe size (US)\": \"Skostørrelse (US)\",\n \"Shoe size (UK)\": \"Skostørrelse (UK)\",\n \"Shoe size (EU)\": \"Skostørrelse (EU)\",\n \"Generating...\": \"Genererer...\",\n \"Foot length\": \"Fodlængde\",\n \"Size\": \"Størrelse\",\n \"Try on size\": \"Prøv størrelse\",\n \"e.g.\": \"f.eks.\",\n \"Drop your photo here or click to upload\": \"Slip dit foto her eller klik for at uploade\",\n \"This usually takes 15-20 seconds\": \"Dette tager normalt 15-20 sekunder\",\n \"Try-on result\": \"Prøvningsresultat\",\n \"Try Another\": \"Prøv en anden\",\n \"Back\": \"Tilbage\",\n \"You\": \"Dig\",\n \"Garment\": \"Beklædning\",\n \"Your Height\": \"Din Højde\",\n \"Your Weight\": \"Din Vægt\",\n \"Drag or scroll to set your height\": \"Træk eller scroll for at indstille din højde\",\n \"Drag or scroll to set your weight\": \"Træk eller scroll for at indstille din vægt\",\n \"Enter height and weight first\": \"Indtast først højde og vægt\",\n\n // ── Field labels ──\n \"Lens Width\": \"Glasbredde\",\n \"Bridge\": \"Bro\",\n \"Arm Length\": \"Stanglængde\",\n \"Head Circumference\": \"Hovedomkreds\",\n \"Face Width\": \"Ansigtsbredde\",\n \"Temple\": \"Stang\",\n \"Around widest point\": \"Omkring det bredeste punkt\",\n \"Foot Length\": \"Fodlængde\",\n \"Shoulder\": \"Skulder\",\n \"Thigh\": \"Lår\",\n \"Hip\": \"Hofte\",\n\n // ── Units ──\n \"Millimetre\": \"Millimeter\",\n \"Centimetre\": \"Centimeter\",\n \"Millimeters\": \"Millimeter\",\n\n // ── Fit descriptors ──\n \"Tight\": \"Stramt\",\n \"Loose\": \"Løst\",\n \"Short\": \"Kort\",\n \"Long\": \"Lang\",\n \"Perfect\": \"Perfekt\",\n \"Perfect fit\": \"Perfekt pasform\",\n \"✓ Fit\": \"✓ Passer\",\n \"too short\": \"for kort\",\n \"too long\": \"for lang\",\n \"a bit short\": \"lidt kort\",\n \"a bit long\": \"lidt lang\",\n\n // ── Length pills ──\n \"Length\": \"Længde\",\n \"Length Adjustment\": \"Længdejustering\",\n \"Regular\": \"Almindelig\",\n \"Big\": \"Stor\",\n \"Big & Tall\": \"Stor & Lang\",\n\n // ── Misc ──\n \"preview\": \"forhåndsvisning\",\n\n // ── BodyProfileView — photo upload area (left section) ──\n \"Upload your photo\": \"Upload dit foto\",\n \"Upload a photo\": \"Upload et foto\",\n \"Click or drag a full-body photo\": \"Klik eller træk et helkropsfoto\",\n \"Or upload a photo for AI sizing\": \"Eller upload et foto til AI-størrelsesanalyse\",\n \"Photo\": \"Foto\",\n \"How to take a good photo\": \"Sådan tager du et godt foto\",\n \"How to take the best photo\": \"Sådan tager du det bedste foto\",\n \"Do\": \"Gør\",\n \"Don't\": \"Lad være\",\n \"Quick Tip\": \"Hurtigt tip\",\n \"The simpler your photo is, the more accurate your virtual try-on results will be.\": \"Jo enklere dit foto er, jo mere præcise bliver resultaterne af den virtuelle prøvning.\",\n \"Choose a plain background (a light wall is ideal)\": \"Vælg en enkel baggrund (en lys væg er ideel)\",\n \"Stand facing the camera with your full body in frame\": \"Stå med ansigtet mod kameraet med hele kroppen i billedet\",\n \"Stand straight and still, arms relaxed by your sides\": \"Stå lige og stille med armene afslappet langs siderne\",\n \"Stand with your HEELS against a wall for best accuracy\": \"Stå med HÆLENE mod en væg for bedste nøjagtighed\",\n \"Use natural or even lighting (e.g. near a window)\": \"Brug naturligt eller jævnt lys (f.eks. nær et vindue)\",\n \"Wear fitted, simple clothing (e.g. neutral colors)\": \"Bær tætsiddende, enkelt tøj (f.eks. neutrale farver)\",\n \"Don't wear loose, baggy, or layered clothing\": \"Bær ikke løst, posede eller lagdelt tøj\",\n \"Don't sit, pose, or bend your body\": \"Sid ikke, posér ikke og bøj ikke kroppen\",\n \"Don't use strong backlighting\": \"Brug ikke kraftigt modlys\",\n \"Don't take mirror photos or selfies\": \"Tag ikke spejlbilleder eller selfies\",\n \"Don't apply filters, effects, or edits\": \"Brug ikke filtre, effekter eller redigeringer\",\n\n // ── Age gate ──\n \"Are you 18 or older?\": \"Er du 18 år eller ældre?\",\n \"Yes\": \"Ja\",\n \"No\": \"Nej\",\n \"Please confirm your age\": \"Bekræft din alder\",\n \"Please confirm that the person in the photo is 18 or older before uploading.\": \"Bekræft, at personen på fotoet er 18 år eller ældre, før du uploader.\",\n \"Under 18 — can't process this photo.\": \"Under 18 — kan ikke behandle dette foto.\",\n \"This photo appears to be of a minor. Please upload a photo of someone 18 or older.\": \"Dette foto ser ud til at være af en mindreårig. Upload et foto af en person på 18 år eller derover.\",\n \"Different photo needed\": \"Et andet foto er nødvendigt\",\n \"Try another photo\": \"Prøv et andet foto\",\n\n // ── Photo step controls ──\n \"Continue\": \"Fortsæt\",\n \"Analyze My Size\": \"Analysér min størrelse\",\n \"Analyzing photo…\": \"Analyserer foto…\",\n \"Details\": \"Detaljer\",\n \"Image must be under 10MB\": \"Billedet skal være under 10 MB\",\n \"Please upload an image file\": \"Upload en billedfil\",\n \"Please upload a photo\": \"Upload et foto\",\n \"Prefer not to upload a photo?\": \"Vil du ikke uploade et foto?\",\n \"Enter measurements manually\": \"Indtast mål manuelt\",\n \"Legal Notice\": \"Juridisk meddelelse\",\n \"Your image will be used to generate a virtual try-on preview showing how selected items may look and fit. Images are processed securely and are not stored after generation.\": \"Dit billede bruges til at generere en forhåndsvisning af virtuel prøvning, der viser, hvordan valgte varer kan se ud og passe. Billeder behandles sikkert og gemmes ikke efter generering.\",\n\n // ── BodyProfileView — form (right section) ──\n \"Body details\": \"Kropsoplysninger\",\n \"Your body details\": \"Dine kropsoplysninger\",\n \"Body Measurements\": \"Kropsmål\",\n \"AGE\": \"ALDER\",\n \"years\": \"år\",\n \"Enter your height\": \"Indtast din højde\",\n \"Enter your weight\": \"Indtast din vægt\",\n \"Enter your bra size\": \"Indtast din BH-størrelse\",\n \"Please enter your height\": \"Indtast din højde\",\n \"Please enter your weight\": \"Indtast din vægt\",\n \"Please enter a valid height\": \"Indtast en gyldig højde\",\n \"Please enter a valid weight\": \"Indtast en gyldig vægt\",\n \"Please enter a valid height (100-250 cm)\": \"Indtast en gyldig højde (100-250 cm)\",\n \"Please enter a valid weight (30-300 kg)\": \"Indtast en gyldig vægt (30-300 kg)\",\n \"Please select both band and cup size\": \"Vælg både båndstørrelse og skålstørrelse\",\n \"Select your bra size\": \"Vælg din BH-størrelse\",\n \"BAND\": \"BÅND\",\n \"BAND SIZE\": \"BÅNDSTØRRELSE\",\n \"CUP\": \"SKÅL\",\n \"CUP SIZE\": \"SKÅLSTØRRELSE\",\n \"BRA REGION\": \"BH-REGION\",\n \"Imperial\": \"Imperial\",\n \"Metric\": \"Metrisk\",\n \"These calibrate the AI — all required.\": \"Disse kalibrerer AI'en — alle obligatoriske.\",\n \"Using\": \"Bruger\",\n \"start fresh\": \"start forfra\",\n \"Close\": \"Luk\",\n\n // ── Body shape questions ──\n \"Which best describes your chest?\": \"Hvad beskriver dit bryst bedst?\",\n \"WHICH BEST DESCRIBES YOUR CHEST?\": \"HVAD BESKRIVER DIT BRYST BEDST?\",\n \"Which best describes your hips?\": \"Hvad beskriver dine hofter bedst?\",\n \"WHICH BEST DESCRIBES YOUR HIPS?\": \"HVAD BESKRIVER DINE HOFTER BEDST?\",\n \"Which best describes your midsection?\": \"Hvad beskriver din talje bedst?\",\n \"WHICH BEST DESCRIBES YOUR MIDSECTION?\": \"HVAD BESKRIVER DIN TALJE BEDST?\",\n \"Which best describes your seat?\": \"Hvad beskriver din bagdel bedst?\",\n \"WHICH BEST DESCRIBES YOUR SEAT?\": \"HVAD BESKRIVER DIN BAGDEL BEDST?\",\n \"Average\": \"Gennemsnit\",\n \"Narrow\": \"Smal\",\n \"Broad\": \"Bred\",\n \"Curvy\": \"Kurvet\",\n \"A slimmer, narrower chest build\": \"En slankere, smallere brystbygning\",\n \"A moderate, proportionate chest\": \"Et moderat, proportionalt bryst\",\n \"A wider, more muscular chest\": \"Et bredere, mere muskuløst bryst\",\n \"A flatter midsection with minimal protrusion\": \"En fladere talje med minimal udbuling\",\n \"A moderate, natural midsection shape\": \"En moderat, naturlig taljeform\",\n \"A fuller, more rounded midsection\": \"En fyldigere, rundere talje\",\n \"A flatter backside with less projection\": \"En fladere bagdel med mindre fremspring\",\n \"A moderate, natural backside shape\": \"En moderat, naturlig bagdel\",\n \"A fuller, more rounded backside\": \"En fyldigere, rundere bagdel\",\n};\nexport default da;\n","const nb: Record<string, string> = {\n \"Virtual Try-On\": \"Virtuell Prøving\",\n \"Find Your Size & See It On You\": \"Finn størrelsen din og prøv det\",\n \"Get the perfect fit, then try it on virtually\": \"Finn den perfekte passformen og prøv det virtuelt\",\n \"Get Your Size\": \"Din størrelse\",\n \"Instant fit recommendation\": \"Umiddelbar passformanbefaling\",\n \"Try It On\": \"Prøv det\",\n \"See how it looks on you\": \"Se hvordan det ser ut på deg\",\n \"Find My Size\": \"Finn min størrelse\",\n \"Takes less than a minute\": \"Tar mindre enn et minutt\",\n \"Upload a full body photo\": \"Last opp et helkroppsbilde\",\n \"JPEG, PNG or WebP (max 10MB)\": \"JPEG, PNG eller WebP (maks 10MB)\",\n \"Your photo\": \"Ditt bilde\",\n \"Let's find your best fit\": \"La oss finne din beste passform\",\n \"Centimeters\": \"Centimeter\",\n \"Inches\": \"Tommer\",\n \"Load saved profile...\": \"Last inn lagret profil...\",\n \"HEIGHT\": \"HØYDE\",\n \"WEIGHT\": \"VEKT\",\n \"feet\": \"fot\",\n \"inches\": \"tommer\",\n \"cm\": \"cm\",\n \"kg\": \"kg\",\n \"lbs\": \"pund\",\n \"in\": \"tommer\",\n \"How to measure\": \"Slik måler du\",\n \"Hide guide\": \"Skjul veiledning\",\n \"I know my measurements\": \"Jeg kjenner målene mine\",\n \"Not sure? Use height & weight instead\": \"Usikker? Bruk høyde og vekt\",\n \"Please fill in height and weight\": \"Vennligst fyll inn høyde og vekt\",\n \"Please fill in all required fields\": \"Vennligst fyll ut alle obligatoriske felt\",\n \"Next\": \"Neste\",\n \"Analyzing your size...\": \"Analyserer størrelsen din...\",\n \"RECOMMENDED SIZE\": \"ANBEFALT STØRRELSE\",\n \"NOT RECOMMENDED\": \"IKKE ANBEFALT\",\n \"Edit measurements\": \"Rediger mål\",\n \"Size guide\": \"Størrelsesguide\",\n \"Your fit\": \"Din passform\",\n \"Your measure\": \"Ditt mål\",\n \"perfect fit\": \"perfekt passform\",\n \"too tight\": \"for trang\",\n \"tight\": \"trang\",\n \"a bit tight\": \"litt trang\",\n \"too loose\": \"for løs\",\n \"loose\": \"løs\",\n \"a bit loose\": \"litt løs\",\n \"See fit on your photo\": \"Se passform på bildet ditt\",\n \"Hide visual fit\": \"Skjul visuell passform\",\n \"Analyzing...\": \"Analyserer...\",\n \"Try it on\": \"Prøv det\",\n \"SIZE CHART\": \"STØRRELSESTABELL\",\n \"YOUR ESTIMATED MEASUREMENTS\": \"DINE ESTIMERTE MÅL\",\n \"Edit\": \"Rediger\",\n \"Download\": \"Last ned\",\n \"Size chart\": \"Størrelsestabell\",\n \"Preparing your image...\": \"Forbereder bildet ditt...\",\n \"Analyzing body proportions...\": \"Analyserer kroppsproportioner...\",\n \"Matching garment to your photo...\": \"Tilpasser plagg til bildet ditt...\",\n \"Generating virtual try-on...\": \"Genererer virtuell prøving...\",\n \"Refining details...\": \"Forfiner detaljer...\",\n \"Almost there...\": \"Nesten ferdig...\",\n \"Complete!\": \"Ferdig!\",\n \"This usually takes 15-25 seconds\": \"Dette tar vanligvis 15–25 sekunder\",\n \"Something went wrong\": \"Noe gikk galt\",\n \"Try Again\": \"Prøv igjen\",\n \"SDK not configured. Please provide an API key.\": \"SDK ikke konfigurert. Vennligst oppgi en API-nøkkel.\",\n \"Please upload a JPEG, PNG, or WebP image.\": \"Last opp et JPEG-, PNG- eller WebP-bilde.\",\n \"Image must be under 10MB.\": \"Bildet må være under 10MB.\",\n \"Try-on generation failed\": \"Prøvingsgenerering mislyktes\",\n \"Failed to start try-on\": \"Kunne ikke starte prøving\",\n \"No product image found. Please set the product-image attribute.\": \"Ingen produktbilde funnet. Sett product-image attributtet.\",\n \"Powered by\": \"Drevet av\",\n \"My Profiles\": \"Mine Profiler\",\n \"History\": \"Historikk\",\n \"No saved profiles yet.\": \"Ingen lagrede profiler ennå.\",\n \"No history yet.\": \"Ingen historikk ennå.\",\n \"Product\": \"Produkt\",\n \"Women's\": \"Dame\",\n \"Men's\": \"Herre\",\n \"Profiles\": \"Profiler\",\n \"Women's Profile\": \"Dameprofil\",\n \"Men's Profile\": \"Herreprofil\",\n \"Height\": \"Høyde\",\n \"Weight\": \"Vekt\",\n \"Chest\": \"Bryst\",\n \"Bust\": \"Byste\",\n \"Waist\": \"Midje\",\n \"Hips\": \"Hofter\",\n \"Shoulders\": \"Skuldre\",\n \"Sleeve\": \"Erme\",\n \"Inseam\": \"Innvendig benlengde\",\n \"Neck\": \"Nakke\",\n \"Foot\": \"Fot\",\n \"Shoe EU\": \"Sko EU\",\n \"Shoe US\": \"Sko US\",\n \"Shoe UK\": \"Sko UK\",\n \"Saved\": \"Lagret\",\n \"Delete Profile\": \"Slett Profil\",\n \"Shoe size (US)\": \"Skostørrelse (US)\",\n \"Shoe size (UK)\": \"Skostørrelse (UK)\",\n \"Shoe size (EU)\": \"Skostørrelse (EU)\",\n \"Generating...\": \"Genererer...\",\n \"Foot length\": \"Fotlengde\",\n \"Size\": \"Størrelse\",\n \"Try on size\": \"Prøv størrelse\",\n \"e.g.\": \"f.eks.\",\n \"Drop your photo here or click to upload\": \"Slipp bildet ditt her eller klikk for å laste opp\",\n \"This usually takes 15-20 seconds\": \"Dette tar vanligvis 15–20 sekunder\",\n \"Try-on result\": \"Prøvingsresultat\",\n \"Try Another\": \"Prøv en annen\",\n \"Back\": \"Tilbake\",\n \"You\": \"Deg\",\n \"Garment\": \"Plagg\",\n \"Your Height\": \"Din Høyde\",\n \"Your Weight\": \"Din Vekt\",\n \"Drag or scroll to set your height\": \"Dra eller scroll for å angi høyden din\",\n \"Drag or scroll to set your weight\": \"Dra eller scroll for å angi vekten din\",\n \"Enter height and weight first\": \"Skriv inn høyde og vekt først\",\n\n // ── Field labels ──\n \"Lens Width\": \"Glassbredde\",\n \"Bridge\": \"Bro\",\n \"Arm Length\": \"Stanglengde\",\n \"Head Circumference\": \"Hodeomkrets\",\n \"Face Width\": \"Ansiktsbredde\",\n \"Temple\": \"Stang\",\n \"Around widest point\": \"Rundt bredeste punkt\",\n \"Foot Length\": \"Fotlengde\",\n \"Shoulder\": \"Skulder\",\n \"Thigh\": \"Lår\",\n \"Hip\": \"Hofte\",\n\n // ── Units ──\n \"Millimetre\": \"Millimeter\",\n \"Centimetre\": \"Centimeter\",\n \"Millimeters\": \"Millimeter\",\n\n // ── Fit descriptors ──\n \"Tight\": \"Stramt\",\n \"Loose\": \"Løst\",\n \"Short\": \"Kort\",\n \"Long\": \"Lang\",\n \"Perfect\": \"Perfekt\",\n \"Perfect fit\": \"Perfekt passform\",\n \"✓ Fit\": \"✓ Passer\",\n \"too short\": \"for kort\",\n \"too long\": \"for lang\",\n \"a bit short\": \"litt kort\",\n \"a bit long\": \"litt lang\",\n\n // ── Length pills ──\n \"Length\": \"Lengde\",\n \"Length Adjustment\": \"Lengdejustering\",\n \"Regular\": \"Vanlig\",\n \"Big\": \"Stor\",\n \"Big & Tall\": \"Stor & Lang\",\n\n // ── Misc ──\n \"preview\": \"forhåndsvisning\",\n\n // ── BodyProfileView — photo upload area (left section) ──\n \"Upload your photo\": \"Last opp bildet ditt\",\n \"Upload a photo\": \"Last opp et bilde\",\n \"Click or drag a full-body photo\": \"Klikk eller dra et helkroppsbilde\",\n \"Or upload a photo for AI sizing\": \"Eller last opp et bilde for AI-størrelsesanalyse\",\n \"Photo\": \"Bilde\",\n \"How to take a good photo\": \"Slik tar du et godt bilde\",\n \"How to take the best photo\": \"Slik tar du det beste bildet\",\n \"Do\": \"Gjør\",\n \"Don't\": \"Ikke gjør\",\n \"Quick Tip\": \"Raskt tips\",\n \"The simpler your photo is, the more accurate your virtual try-on results will be.\": \"Jo enklere bildet er, desto mer nøyaktige blir resultatene fra den virtuelle prøvingen.\",\n \"Choose a plain background (a light wall is ideal)\": \"Velg en enkel bakgrunn (en lys vegg er ideell)\",\n \"Stand facing the camera with your full body in frame\": \"Stå vendt mot kameraet med hele kroppen i bildet\",\n \"Stand straight and still, arms relaxed by your sides\": \"Stå rett og stille med armene avslappet langs sidene\",\n \"Stand with your HEELS against a wall for best accuracy\": \"Stå med HÆLENE mot en vegg for best nøyaktighet\",\n \"Use natural or even lighting (e.g. near a window)\": \"Bruk naturlig eller jevnt lys (f.eks. nær et vindu)\",\n \"Wear fitted, simple clothing (e.g. neutral colors)\": \"Bruk tettsittende, enkle klær (f.eks. nøytrale farger)\",\n \"Don't wear loose, baggy, or layered clothing\": \"Ikke bruk løse, posete eller flerlagede klær\",\n \"Don't sit, pose, or bend your body\": \"Ikke sitt, poser eller bøy kroppen\",\n \"Don't use strong backlighting\": \"Ikke bruk sterkt motlys\",\n \"Don't take mirror photos or selfies\": \"Ikke ta speilbilder eller selfies\",\n \"Don't apply filters, effects, or edits\": \"Ikke bruk filtre, effekter eller redigeringer\",\n\n // ── Age gate ──\n \"Are you 18 or older?\": \"Er du 18 år eller eldre?\",\n \"Yes\": \"Ja\",\n \"No\": \"Nei\",\n \"Please confirm your age\": \"Bekreft alderen din\",\n \"Please confirm that the person in the photo is 18 or older before uploading.\": \"Bekreft at personen på bildet er 18 år eller eldre før du laster opp.\",\n \"Under 18 — can't process this photo.\": \"Under 18 — kan ikke behandle dette bildet.\",\n \"This photo appears to be of a minor. Please upload a photo of someone 18 or older.\": \"Dette bildet ser ut til å være av en mindreårig. Last opp et bilde av en person som er 18 år eller eldre.\",\n \"Different photo needed\": \"Trenger et annet bilde\",\n \"Try another photo\": \"Prøv et annet bilde\",\n\n // ── Photo step controls ──\n \"Continue\": \"Fortsett\",\n \"Analyze My Size\": \"Analyser størrelsen min\",\n \"Analyzing photo…\": \"Analyserer bilde…\",\n \"Details\": \"Detaljer\",\n \"Image must be under 10MB\": \"Bildet må være under 10 MB\",\n \"Please upload an image file\": \"Last opp en bildefil\",\n \"Please upload a photo\": \"Last opp et bilde\",\n \"Prefer not to upload a photo?\": \"Vil du ikke laste opp et bilde?\",\n \"Enter measurements manually\": \"Skriv inn mål manuelt\",\n \"Legal Notice\": \"Juridisk merknad\",\n \"Your image will be used to generate a virtual try-on preview showing how selected items may look and fit. Images are processed securely and are not stored after generation.\": \"Bildet ditt brukes til å generere en forhåndsvisning av virtuell prøving som viser hvordan valgte plagg kan se ut og passe. Bilder behandles sikkert og lagres ikke etter generering.\",\n\n // ── BodyProfileView — form (right section) ──\n \"Body details\": \"Kroppsdetaljer\",\n \"Your body details\": \"Dine kroppsdetaljer\",\n \"Body Measurements\": \"Kroppsmål\",\n \"AGE\": \"ALDER\",\n \"years\": \"år\",\n \"Enter your height\": \"Skriv inn høyden din\",\n \"Enter your weight\": \"Skriv inn vekten din\",\n \"Enter your bra size\": \"Skriv inn BH-størrelsen din\",\n \"Please enter your height\": \"Skriv inn høyden din\",\n \"Please enter your weight\": \"Skriv inn vekten din\",\n \"Please enter a valid height\": \"Skriv inn en gyldig høyde\",\n \"Please enter a valid weight\": \"Skriv inn en gyldig vekt\",\n \"Please enter a valid height (100-250 cm)\": \"Skriv inn en gyldig høyde (100-250 cm)\",\n \"Please enter a valid weight (30-300 kg)\": \"Skriv inn en gyldig vekt (30-300 kg)\",\n \"Please select both band and cup size\": \"Velg både båndstørrelse og skålstørrelse\",\n \"Select your bra size\": \"Velg BH-størrelsen din\",\n \"BAND\": \"BÅND\",\n \"BAND SIZE\": \"BÅNDSTØRRELSE\",\n \"CUP\": \"SKÅL\",\n \"CUP SIZE\": \"SKÅLSTØRRELSE\",\n \"BRA REGION\": \"BH-REGION\",\n \"Imperial\": \"Imperial\",\n \"Metric\": \"Metrisk\",\n \"These calibrate the AI — all required.\": \"Disse kalibrerer AI-en — alle obligatoriske.\",\n \"Using\": \"Bruker\",\n \"start fresh\": \"start på nytt\",\n \"Close\": \"Lukk\",\n\n // ── Body shape questions ──\n \"Which best describes your chest?\": \"Hva beskriver brystet ditt best?\",\n \"WHICH BEST DESCRIBES YOUR CHEST?\": \"HVA BESKRIVER BRYSTET DITT BEST?\",\n \"Which best describes your hips?\": \"Hva beskriver hoftene dine best?\",\n \"WHICH BEST DESCRIBES YOUR HIPS?\": \"HVA BESKRIVER HOFTENE DINE BEST?\",\n \"Which best describes your midsection?\": \"Hva beskriver midjen din best?\",\n \"WHICH BEST DESCRIBES YOUR MIDSECTION?\": \"HVA BESKRIVER MIDJEN DIN BEST?\",\n \"Which best describes your seat?\": \"Hva beskriver baken din best?\",\n \"WHICH BEST DESCRIBES YOUR SEAT?\": \"HVA BESKRIVER BAKEN DIN BEST?\",\n \"Average\": \"Gjennomsnitt\",\n \"Narrow\": \"Smal\",\n \"Broad\": \"Bred\",\n \"Curvy\": \"Kurvete\",\n \"A slimmer, narrower chest build\": \"En slankere, smalere brystkasse\",\n \"A moderate, proportionate chest\": \"Et moderat, proporsjonalt bryst\",\n \"A wider, more muscular chest\": \"Et bredere, mer muskuløst bryst\",\n \"A flatter midsection with minimal protrusion\": \"En flatere midje med minimal utbuling\",\n \"A moderate, natural midsection shape\": \"En moderat, naturlig midjeform\",\n \"A fuller, more rounded midsection\": \"En fyldigere, rundere midje\",\n \"A flatter backside with less projection\": \"En flatere bak med mindre utbuling\",\n \"A moderate, natural backside shape\": \"En moderat, naturlig bakdel\",\n \"A fuller, more rounded backside\": \"En fyldigere, rundere bakdel\",\n};\nexport default nb;\n","const fi: Record<string, string> = {\n \"Virtual Try-On\": \"Virtuaalinen Sovitus\",\n \"Find Your Size & See It On You\": \"Löydä kokosi ja sovita\",\n \"Get the perfect fit, then try it on virtually\": \"Löydä täydellinen istuvuus ja sovita virtuaalisesti\",\n \"Get Your Size\": \"Sinun kokosi\",\n \"Instant fit recommendation\": \"Välitön istuvuussuositus\",\n \"Try It On\": \"Sovita\",\n \"See how it looks on you\": \"Katso miltä se näyttää päälläsi\",\n \"Find My Size\": \"Etsi kokoni\",\n \"Takes less than a minute\": \"Vie alle minuutin\",\n \"Upload a full body photo\": \"Lataa kokovartalokuva\",\n \"JPEG, PNG or WebP (max 10MB)\": \"JPEG, PNG tai WebP (enintään 10 Mt)\",\n \"Your photo\": \"Valokuvasi\",\n \"Let's find your best fit\": \"Etsitään paras istuvuus\",\n \"Centimeters\": \"Senttimetrit\",\n \"Inches\": \"Tuumat\",\n \"Load saved profile...\": \"Lataa tallennettu profiili...\",\n \"HEIGHT\": \"PITUUS\",\n \"WEIGHT\": \"PAINO\",\n \"feet\": \"jalkaa\",\n \"inches\": \"tuumaa\",\n \"cm\": \"cm\",\n \"kg\": \"kg\",\n \"lbs\": \"paunaa\",\n \"in\": \"tuumaa\",\n \"How to measure\": \"Mittausohjeet\",\n \"Hide guide\": \"Piilota opas\",\n \"I know my measurements\": \"Tiedän mittani\",\n \"Not sure? Use height & weight instead\": \"Epävarma? Käytä pituutta ja painoa\",\n \"Please fill in height and weight\": \"Täytä pituus ja paino\",\n \"Please fill in all required fields\": \"Täytä kaikki pakolliset kentät\",\n \"Next\": \"Seuraava\",\n \"Analyzing your size...\": \"Analysoidaan kokoasi...\",\n \"RECOMMENDED SIZE\": \"SUOSITELTU KOKO\",\n \"NOT RECOMMENDED\": \"EI SUOSITELTU\",\n \"Edit measurements\": \"Muokkaa mittoja\",\n \"Size guide\": \"Kokotaulukko\",\n \"Your fit\": \"Istuvuutesi\",\n \"Your measure\": \"Mittasi\",\n \"perfect fit\": \"täydellinen istuvuus\",\n \"too tight\": \"liian tiukka\",\n \"tight\": \"tiukka\",\n \"a bit tight\": \"hieman tiukka\",\n \"too loose\": \"liian löysä\",\n \"loose\": \"löysä\",\n \"a bit loose\": \"hieman löysä\",\n \"See fit on your photo\": \"Näe istuvuus kuvassasi\",\n \"Hide visual fit\": \"Piilota visuaalinen istuvuus\",\n \"Analyzing...\": \"Analysoidaan...\",\n \"Try it on\": \"Sovita\",\n \"SIZE CHART\": \"KOKOTAULUKKO\",\n \"YOUR ESTIMATED MEASUREMENTS\": \"ARVIOIDUT MITTASI\",\n \"Edit\": \"Muokkaa\",\n \"Download\": \"Lataa\",\n \"Size chart\": \"Kokotaulukko\",\n \"Preparing your image...\": \"Valmistellaan kuvaasi...\",\n \"Analyzing body proportions...\": \"Analysoidaan vartalon mittasuhteita...\",\n \"Matching garment to your photo...\": \"Sovitetaan vaatetta kuvaasi...\",\n \"Generating virtual try-on...\": \"Luodaan virtuaalista sovitusta...\",\n \"Refining details...\": \"Hienosäädetään yksityiskohtia...\",\n \"Almost there...\": \"Melkein valmis...\",\n \"Complete!\": \"Valmis!\",\n \"This usually takes 15-25 seconds\": \"Tämä kestää yleensä 15–25 sekuntia\",\n \"Something went wrong\": \"Jokin meni pieleen\",\n \"Try Again\": \"Yritä uudelleen\",\n \"SDK not configured. Please provide an API key.\": \"SDK:ta ei ole määritetty. Anna API-avain.\",\n \"Please upload a JPEG, PNG, or WebP image.\": \"Lataa JPEG-, PNG- tai WebP-kuva.\",\n \"Image must be under 10MB.\": \"Kuvan on oltava alle 10 Mt.\",\n \"Try-on generation failed\": \"Sovituksen luonti epäonnistui\",\n \"Failed to start try-on\": \"Sovitusta ei voitu aloittaa\",\n \"No product image found. Please set the product-image attribute.\": \"Tuotekuvaa ei löytynyt. Aseta product-image-attribuutti.\",\n \"Powered by\": \"Powered by\",\n \"My Profiles\": \"Omat Profiilit\",\n \"History\": \"Historia\",\n \"No saved profiles yet.\": \"Ei tallennettuja profiileja.\",\n \"No history yet.\": \"Ei historiaa vielä.\",\n \"Product\": \"Tuote\",\n \"Women's\": \"Naisten\",\n \"Men's\": \"Miesten\",\n \"Profiles\": \"Profiilit\",\n \"Women's Profile\": \"Naisten Profiili\",\n \"Men's Profile\": \"Miesten Profiili\",\n \"Height\": \"Pituus\",\n \"Weight\": \"Paino\",\n \"Chest\": \"Rinta\",\n \"Bust\": \"Rinnanympärys\",\n \"Waist\": \"Vyötärö\",\n \"Hips\": \"Lantio\",\n \"Shoulders\": \"Hartiat\",\n \"Sleeve\": \"Hiha\",\n \"Inseam\": \"Sisäsauma\",\n \"Neck\": \"Kaula\",\n \"Foot\": \"Jalka\",\n \"Shoe EU\": \"Kenkä EU\",\n \"Shoe US\": \"Kenkä US\",\n \"Shoe UK\": \"Kenkä UK\",\n \"Saved\": \"Tallennettu\",\n \"Delete Profile\": \"Poista Profiili\",\n \"Shoe size (US)\": \"Kengän koko (US)\",\n \"Shoe size (UK)\": \"Kengän koko (UK)\",\n \"Shoe size (EU)\": \"Kengän koko (EU)\",\n \"Generating...\": \"Luodaan...\",\n \"Foot length\": \"Jalan pituus\",\n \"Size\": \"Koko\",\n \"Try on size\": \"Kokeile kokoa\",\n \"e.g.\": \"esim.\",\n \"Drop your photo here or click to upload\": \"Pudota kuvasi tähän tai napsauta ladataksesi\",\n \"This usually takes 15-20 seconds\": \"Tämä kestää yleensä 15–20 sekuntia\",\n \"Try-on result\": \"Sovitustulos\",\n \"Try Another\": \"Kokeile toista\",\n \"Back\": \"Takaisin\",\n \"You\": \"Sinä\",\n \"Garment\": \"Vaate\",\n \"Your Height\": \"Pituutesi\",\n \"Your Weight\": \"Painosi\",\n \"Drag or scroll to set your height\": \"Vedä tai vieritä asettaaksesi pituutesi\",\n \"Drag or scroll to set your weight\": \"Vedä tai vieritä asettaaksesi painosi\",\n \"Enter height and weight first\": \"Syötä ensin pituus ja paino\",\n\n // ── Field labels ──\n \"Lens Width\": \"Linssin leveys\",\n \"Bridge\": \"Silta\",\n \"Arm Length\": \"Sangan pituus\",\n \"Head Circumference\": \"Pään ympärys\",\n \"Face Width\": \"Kasvojen leveys\",\n \"Temple\": \"Sanka\",\n \"Around widest point\": \"Leveimmän kohdan ympäri\",\n \"Foot Length\": \"Jalan pituus\",\n \"Shoulder\": \"Olkapää\",\n \"Thigh\": \"Reisi\",\n \"Hip\": \"Lantio\",\n\n // ── Units ──\n \"Millimetre\": \"Millimetri\",\n \"Centimetre\": \"Senttimetri\",\n \"Millimeters\": \"Millimetriä\",\n\n // ── Fit descriptors ──\n \"Tight\": \"Tiukka\",\n \"Loose\": \"Löysä\",\n \"Short\": \"Lyhyt\",\n \"Long\": \"Pitkä\",\n \"Perfect\": \"Täydellinen\",\n \"Perfect fit\": \"Täydellinen istuvuus\",\n \"✓ Fit\": \"✓ Sopii\",\n \"too short\": \"liian lyhyt\",\n \"too long\": \"liian pitkä\",\n \"a bit short\": \"hieman lyhyt\",\n \"a bit long\": \"hieman pitkä\",\n\n // ── Length pills ──\n \"Length\": \"Pituus\",\n \"Length Adjustment\": \"Pituuden säätö\",\n \"Regular\": \"Tavallinen\",\n \"Big\": \"Iso\",\n \"Big & Tall\": \"Iso ja Pitkä\",\n\n // ── Misc ──\n \"preview\": \"esikatselu\",\n\n // ── BodyProfileView — photo upload area (left section) ──\n \"Upload your photo\": \"Lataa kuvasi\",\n \"Upload a photo\": \"Lataa kuva\",\n \"Click or drag a full-body photo\": \"Napsauta tai vedä kokovartalokuva\",\n \"Or upload a photo for AI sizing\": \"Tai lataa kuva tekoälyn kokoanalyysia varten\",\n \"Photo\": \"Kuva\",\n \"How to take a good photo\": \"Näin otat hyvän kuvan\",\n \"How to take the best photo\": \"Näin otat parhaan kuvan\",\n \"Do\": \"Tee\",\n \"Don't\": \"Älä tee\",\n \"Quick Tip\": \"Pikavinkki\",\n \"The simpler your photo is, the more accurate your virtual try-on results will be.\": \"Mitä yksinkertaisempi kuvasi on, sitä tarkemmat virtuaalisen sovituksen tulokset ovat.\",\n \"Choose a plain background (a light wall is ideal)\": \"Valitse yksinkertainen tausta (vaalea seinä on ihanteellinen)\",\n \"Stand facing the camera with your full body in frame\": \"Seiso kasvot kameraan päin koko vartalo kuvassa\",\n \"Stand straight and still, arms relaxed by your sides\": \"Seiso suorassa ja paikallasi, kädet rentoina sivuilla\",\n \"Stand with your HEELS against a wall for best accuracy\": \"Seiso KANTAPÄÄT seinää vasten parhaan tarkkuuden saamiseksi\",\n \"Use natural or even lighting (e.g. near a window)\": \"Käytä luonnollista tai tasaista valoa (esim. ikkunan lähellä)\",\n \"Wear fitted, simple clothing (e.g. neutral colors)\": \"Käytä vartaloa myötäileviä, yksinkertaisia vaatteita (esim. neutraalit värit)\",\n \"Don't wear loose, baggy, or layered clothing\": \"Älä käytä löysiä, väljiä tai päällekkäisiä vaatteita\",\n \"Don't sit, pose, or bend your body\": \"Älä istu, poseeraa tai taivuta vartaloa\",\n \"Don't use strong backlighting\": \"Älä käytä voimakasta vastavaloa\",\n \"Don't take mirror photos or selfies\": \"Älä ota peilikuvia tai selfieitä\",\n \"Don't apply filters, effects, or edits\": \"Älä käytä suodattimia, efektejä tai muokkauksia\",\n\n // ── Age gate ──\n \"Are you 18 or older?\": \"Oletko 18-vuotias tai vanhempi?\",\n \"Yes\": \"Kyllä\",\n \"No\": \"Ei\",\n \"Please confirm your age\": \"Vahvista ikäsi\",\n \"Please confirm that the person in the photo is 18 or older before uploading.\": \"Vahvista, että kuvassa oleva henkilö on 18-vuotias tai vanhempi ennen lataamista.\",\n \"Under 18 — can't process this photo.\": \"Alle 18 — kuvaa ei voi käsitellä.\",\n \"This photo appears to be of a minor. Please upload a photo of someone 18 or older.\": \"Tämä kuva näyttää olevan alaikäisestä. Lataa kuva 18-vuotiaasta tai vanhemmasta henkilöstä.\",\n \"Different photo needed\": \"Tarvitaan toinen kuva\",\n \"Try another photo\": \"Kokeile toista kuvaa\",\n\n // ── Photo step controls ──\n \"Continue\": \"Jatka\",\n \"Analyze My Size\": \"Analysoi kokoni\",\n \"Analyzing photo…\": \"Analysoidaan kuvaa…\",\n \"Details\": \"Tiedot\",\n \"Image must be under 10MB\": \"Kuvan on oltava alle 10 Mt\",\n \"Please upload an image file\": \"Lataa kuvatiedosto\",\n \"Please upload a photo\": \"Lataa kuva\",\n \"Prefer not to upload a photo?\": \"Etkö halua ladata kuvaa?\",\n \"Enter measurements manually\": \"Anna mitat manuaalisesti\",\n \"Legal Notice\": \"Lakitiedot\",\n \"Your image will be used to generate a virtual try-on preview showing how selected items may look and fit. Images are processed securely and are not stored after generation.\": \"Kuvaasi käytetään virtuaalisen sovituksen esikatselun luomiseen, joka näyttää, miltä valitut tuotteet voivat näyttää ja istua. Kuvat käsitellään turvallisesti, eikä niitä tallenneta luomisen jälkeen.\",\n\n // ── BodyProfileView — form (right section) ──\n \"Body details\": \"Vartalon tiedot\",\n \"Your body details\": \"Vartalosi tiedot\",\n \"Body Measurements\": \"Vartalon mitat\",\n \"AGE\": \"IKÄ\",\n \"years\": \"vuotta\",\n \"Enter your height\": \"Anna pituutesi\",\n \"Enter your weight\": \"Anna painosi\",\n \"Enter your bra size\": \"Anna rintaliivin kokosi\",\n \"Please enter your height\": \"Anna pituutesi\",\n \"Please enter your weight\": \"Anna painosi\",\n \"Please enter a valid height\": \"Anna kelvollinen pituus\",\n \"Please enter a valid weight\": \"Anna kelvollinen paino\",\n \"Please enter a valid height (100-250 cm)\": \"Anna kelvollinen pituus (100-250 cm)\",\n \"Please enter a valid weight (30-300 kg)\": \"Anna kelvollinen paino (30-300 kg)\",\n \"Please select both band and cup size\": \"Valitse sekä alarunko- että kuppikoko\",\n \"Select your bra size\": \"Valitse rintaliivin kokosi\",\n \"BAND\": \"ALARUNKO\",\n \"BAND SIZE\": \"ALARUNKOKOKO\",\n \"CUP\": \"KUPPI\",\n \"CUP SIZE\": \"KUPPIKOKO\",\n \"BRA REGION\": \"RINTALIIVIN ALUE\",\n \"Imperial\": \"Imperialinen\",\n \"Metric\": \"Metrinen\",\n \"These calibrate the AI — all required.\": \"Nämä kalibroivat tekoälyn — kaikki pakollisia.\",\n \"Using\": \"Käytössä\",\n \"start fresh\": \"aloita alusta\",\n \"Close\": \"Sulje\",\n\n // ── Body shape questions ──\n \"Which best describes your chest?\": \"Mikä kuvaa rintaasi parhaiten?\",\n \"WHICH BEST DESCRIBES YOUR CHEST?\": \"MIKÄ KUVAA RINTAASI PARHAITEN?\",\n \"Which best describes your hips?\": \"Mikä kuvaa lantiotasi parhaiten?\",\n \"WHICH BEST DESCRIBES YOUR HIPS?\": \"MIKÄ KUVAA LANTIOTASI PARHAITEN?\",\n \"Which best describes your midsection?\": \"Mikä kuvaa vyötäröäsi parhaiten?\",\n \"WHICH BEST DESCRIBES YOUR MIDSECTION?\": \"MIKÄ KUVAA VYÖTÄRÖÄSI PARHAITEN?\",\n \"Which best describes your seat?\": \"Mikä kuvaa takamustasi parhaiten?\",\n \"WHICH BEST DESCRIBES YOUR SEAT?\": \"MIKÄ KUVAA TAKAMUSTASI PARHAITEN?\",\n \"Average\": \"Keskiverto\",\n \"Narrow\": \"Kapea\",\n \"Broad\": \"Leveä\",\n \"Curvy\": \"Kurvikas\",\n \"A slimmer, narrower chest build\": \"Hoikempi, kapeampi rintakehä\",\n \"A moderate, proportionate chest\": \"Kohtuullinen, suhteellinen rintakehä\",\n \"A wider, more muscular chest\": \"Leveämpi, lihaksikkaampi rintakehä\",\n \"A flatter midsection with minimal protrusion\": \"Litteämpi vyötärö, jossa minimaalinen ulkonema\",\n \"A moderate, natural midsection shape\": \"Kohtuullinen, luonnollinen vyötärön muoto\",\n \"A fuller, more rounded midsection\": \"Täyteläisempi, pyöreämpi vyötärö\",\n \"A flatter backside with less projection\": \"Litteämpi takamus pienemmällä ulkonemalla\",\n \"A moderate, natural backside shape\": \"Kohtuullinen, luonnollinen takamuksen muoto\",\n \"A fuller, more rounded backside\": \"Täyteläisempi, pyöreämpi takamus\",\n};\nexport default fi;\n","const th: Record<string, string> = {\n \"Virtual Try-On\": \"ลองเสื้อผ้าเสมือนจริง\",\n \"Find Your Size & See It On You\": \"ค้นหาไซส์ของคุณและลองสวมใส่\",\n \"Get the perfect fit, then try it on virtually\": \"ค้นหาขนาดที่พอดีแล้วลองสวมใส่เสมือนจริง\",\n \"Get Your Size\": \"ไซส์ของคุณ\",\n \"Instant fit recommendation\": \"แนะนำขนาดทันที\",\n \"Try It On\": \"ลองใส่\",\n \"See how it looks on you\": \"ดูว่าใส่แล้วเป็นอย่างไร\",\n \"Find My Size\": \"ค้นหาไซส์ของฉัน\",\n \"Takes less than a minute\": \"ใช้เวลาไม่ถึงนาที\",\n \"Upload a full body photo\": \"อัปโหลดรูปถ่ายเต็มตัว\",\n \"JPEG, PNG or WebP (max 10MB)\": \"JPEG, PNG หรือ WebP (สูงสุด 10MB)\",\n \"Your photo\": \"รูปถ่ายของคุณ\",\n \"Let's find your best fit\": \"มาหาขนาดที่พอดีที่สุดกัน\",\n \"Centimeters\": \"เซนติเมตร\",\n \"Inches\": \"นิ้ว\",\n \"Load saved profile...\": \"โหลดโปรไฟล์ที่บันทึกไว้...\",\n \"HEIGHT\": \"ส่วนสูง\",\n \"WEIGHT\": \"น้ำหนัก\",\n \"feet\": \"ฟุต\",\n \"inches\": \"นิ้ว\",\n \"cm\": \"ซม.\",\n \"kg\": \"กก.\",\n \"lbs\": \"ปอนด์\",\n \"in\": \"นิ้ว\",\n \"How to measure\": \"วิธีการวัด\",\n \"Hide guide\": \"ซ่อนคำแนะนำ\",\n \"I know my measurements\": \"ฉันรู้สัดส่วนของตัวเอง\",\n \"Not sure? Use height & weight instead\": \"ไม่แน่ใจ? ใช้ส่วนสูงและน้ำหนักแทน\",\n \"Please fill in height and weight\": \"กรุณากรอกส่วนสูงและน้ำหนัก\",\n \"Please fill in all required fields\": \"กรุณากรอกข้อมูลที่จำเป็นทั้งหมด\",\n \"Next\": \"ถัดไป\",\n \"Analyzing your size...\": \"กำลังวิเคราะห์ไซส์ของคุณ...\",\n \"RECOMMENDED SIZE\": \"ไซส์ที่แนะนำ\",\n \"NOT RECOMMENDED\": \"ไม่แนะนำ\",\n \"Edit measurements\": \"แก้ไขสัดส่วน\",\n \"Size guide\": \"คู่มือไซส์\",\n \"Your fit\": \"ความพอดีของคุณ\",\n \"Your measure\": \"สัดส่วนของคุณ\",\n \"perfect fit\": \"พอดีสมบูรณ์แบบ\",\n \"too tight\": \"คับเกินไป\",\n \"tight\": \"คับ\",\n \"a bit tight\": \"คับเล็กน้อย\",\n \"too loose\": \"หลวมเกินไป\",\n \"loose\": \"หลวม\",\n \"a bit loose\": \"หลวมเล็กน้อย\",\n \"See fit on your photo\": \"ดูความพอดีบนรูปถ่ายของคุณ\",\n \"Hide visual fit\": \"ซ่อนการแสดงผลความพอดี\",\n \"Analyzing...\": \"กำลังวิเคราะห์...\",\n \"Try it on\": \"ลองใส่\",\n \"SIZE CHART\": \"ตารางไซส์\",\n \"YOUR ESTIMATED MEASUREMENTS\": \"สัดส่วนโดยประมาณของคุณ\",\n \"Edit\": \"แก้ไข\",\n \"Download\": \"ดาวน์โหลด\",\n \"Size chart\": \"ตารางไซส์\",\n \"Preparing your image...\": \"กำลังเตรียมรูปภาพ...\",\n \"Analyzing body proportions...\": \"กำลังวิเคราะห์สัดส่วนร่างกาย...\",\n \"Matching garment to your photo...\": \"กำลังจับคู่เสื้อผ้ากับรูปถ่าย...\",\n \"Generating virtual try-on...\": \"กำลังสร้างการลองเสื้อผ้าเสมือนจริง...\",\n \"Refining details...\": \"กำลังปรับแต่งรายละเอียด...\",\n \"Almost there...\": \"เกือบเสร็จแล้ว...\",\n \"Complete!\": \"เสร็จสิ้น!\",\n \"This usually takes 15-25 seconds\": \"ปกติจะใช้เวลา 15-25 วินาที\",\n \"Something went wrong\": \"เกิดข้อผิดพลาด\",\n \"Try Again\": \"ลองอีกครั้ง\",\n \"SDK not configured. Please provide an API key.\": \"SDK ยังไม่ได้ตั้งค่า กรุณาระบุ API key\",\n \"Please upload a JPEG, PNG, or WebP image.\": \"กรุณาอัปโหลดรูปภาพ JPEG, PNG หรือ WebP\",\n \"Image must be under 10MB.\": \"รูปภาพต้องมีขนาดไม่เกิน 10MB\",\n \"Try-on generation failed\": \"การสร้างการลองเสื้อผ้าล้มเหลว\",\n \"Failed to start try-on\": \"ไม่สามารถเริ่มการลองเสื้อผ้าได้\",\n \"No product image found. Please set the product-image attribute.\": \"ไม่พบรูปสินค้า กรุณาตั้งค่า attribute product-image\",\n \"Powered by\": \"ขับเคลื่อนโดย\",\n \"My Profiles\": \"โปรไฟล์ของฉัน\",\n \"History\": \"ประวัติ\",\n \"No saved profiles yet.\": \"ยังไม่มีโปรไฟล์ที่บันทึกไว้\",\n \"No history yet.\": \"ยังไม่มีประวัติ\",\n \"Product\": \"สินค้า\",\n \"Women's\": \"ผู้หญิง\",\n \"Men's\": \"ผู้ชาย\",\n \"Profiles\": \"โปรไฟล์\",\n \"Women's Profile\": \"โปรไฟล์ผู้หญิง\",\n \"Men's Profile\": \"โปรไฟล์ผู้ชาย\",\n \"Height\": \"ส่วนสูง\",\n \"Weight\": \"น้ำหนัก\",\n \"Chest\": \"รอบอก\",\n \"Bust\": \"รอบอก\",\n \"Waist\": \"รอบเอว\",\n \"Hips\": \"รอบสะโพก\",\n \"Shoulders\": \"ไหล่\",\n \"Sleeve\": \"แขนเสื้อ\",\n \"Inseam\": \"ตะเข็บด้านใน\",\n \"Neck\": \"คอ\",\n \"Foot\": \"เท้า\",\n \"Shoe EU\": \"รองเท้า EU\",\n \"Shoe US\": \"รองเท้า US\",\n \"Shoe UK\": \"รองเท้า UK\",\n \"Saved\": \"บันทึกแล้ว\",\n \"Delete Profile\": \"ลบโปรไฟล์\",\n \"Shoe size (US)\": \"ขนาดรองเท้า (US)\",\n \"Shoe size (UK)\": \"ขนาดรองเท้า (UK)\",\n \"Shoe size (EU)\": \"ขนาดรองเท้า (EU)\",\n \"Generating...\": \"กำลังสร้าง...\",\n \"Foot length\": \"ความยาวเท้า\",\n \"Size\": \"ไซส์\",\n \"Try on size\": \"ลองไซส์\",\n \"e.g.\": \"เช่น\",\n \"Drop your photo here or click to upload\": \"วางรูปที่นี่หรือคลิกเพื่ออัปโหลด\",\n \"This usually takes 15-20 seconds\": \"ปกติจะใช้เวลา 15-20 วินาที\",\n \"Try-on result\": \"ผลการลองเสื้อผ้า\",\n \"Try Another\": \"ลองอีกครั้ง\",\n \"Back\": \"กลับ\",\n \"You\": \"คุณ\",\n \"Garment\": \"เสื้อผ้า\",\n \"Your Height\": \"ส่วนสูงของคุณ\",\n \"Your Weight\": \"น้ำหนักของคุณ\",\n \"Drag or scroll to set your height\": \"ลากหรือเลื่อนเพื่อตั้งค่าส่วนสูง\",\n \"Drag or scroll to set your weight\": \"ลากหรือเลื่อนเพื่อตั้งค่าน้ำหนัก\",\n \"Enter height and weight first\": \"กรอกส่วนสูงและน้ำหนักก่อน\",\n\n // ── Field labels ──\n \"Lens Width\": \"ความกว้างเลนส์\",\n \"Bridge\": \"สะพานจมูก\",\n \"Arm Length\": \"ความยาวขาแว่น\",\n \"Head Circumference\": \"เส้นรอบศีรษะ\",\n \"Face Width\": \"ความกว้างใบหน้า\",\n \"Temple\": \"ขาแว่น\",\n \"Around widest point\": \"รอบจุดที่กว้างที่สุด\",\n \"Foot Length\": \"ความยาวเท้า\",\n \"Shoulder\": \"ไหล่\",\n \"Thigh\": \"ต้นขา\",\n \"Hip\": \"สะโพก\",\n\n // ── Units ──\n \"Millimetre\": \"มิลลิเมตร\",\n \"Centimetre\": \"เซนติเมตร\",\n \"Millimeters\": \"มิลลิเมตร\",\n\n // ── Fit descriptors ──\n \"Tight\": \"คับ\",\n \"Loose\": \"หลวม\",\n \"Short\": \"สั้น\",\n \"Long\": \"ยาว\",\n \"Perfect\": \"พอดี\",\n \"Perfect fit\": \"พอดีตัว\",\n \"✓ Fit\": \"✓ พอดี\",\n \"too short\": \"สั้นเกินไป\",\n \"too long\": \"ยาวเกินไป\",\n \"a bit short\": \"สั้นไปเล็กน้อย\",\n \"a bit long\": \"ยาวไปเล็กน้อย\",\n\n // ── Length pills ──\n \"Length\": \"ความยาว\",\n \"Length Adjustment\": \"ปรับความยาว\",\n \"Regular\": \"ปกติ\",\n \"Big\": \"ใหญ่\",\n \"Big & Tall\": \"ใหญ่และสูง\",\n\n // ── Misc ──\n \"preview\": \"ตัวอย่าง\",\n\n // ── BodyProfileView — photo upload area (left section) ──\n \"Upload your photo\": \"อัปโหลดรูปของคุณ\",\n \"Upload a photo\": \"อัปโหลดรูปภาพ\",\n \"Click or drag a full-body photo\": \"คลิกหรือลากรูปเต็มตัว\",\n \"Or upload a photo for AI sizing\": \"หรืออัปโหลดรูปเพื่อให้ AI วิเคราะห์ขนาด\",\n \"Photo\": \"รูปภาพ\",\n \"How to take a good photo\": \"วิธีถ่ายรูปให้ดี\",\n \"How to take the best photo\": \"วิธีถ่ายรูปให้ดีที่สุด\",\n \"Do\": \"ควรทำ\",\n \"Don't\": \"ไม่ควรทำ\",\n \"Quick Tip\": \"เคล็ดลับรวดเร็ว\",\n \"The simpler your photo is, the more accurate your virtual try-on results will be.\": \"ยิ่งรูปเรียบง่ายเท่าไร ผลการลองสวมเสมือนจริงก็ยิ่งแม่นยำมากขึ้น\",\n \"Choose a plain background (a light wall is ideal)\": \"เลือกพื้นหลังเรียบ (ผนังสีอ่อนเป็นตัวเลือกที่ดีที่สุด)\",\n \"Stand facing the camera with your full body in frame\": \"ยืนหันหน้าเข้ากล้องโดยให้ทั้งตัวอยู่ในเฟรม\",\n \"Stand straight and still, arms relaxed by your sides\": \"ยืนตรงและนิ่ง วางแขนข้างลำตัวอย่างผ่อนคลาย\",\n \"Stand with your HEELS against a wall for best accuracy\": \"ยืนโดยให้ส้นเท้าชิดกำแพงเพื่อความแม่นยำที่สุด\",\n \"Use natural or even lighting (e.g. near a window)\": \"ใช้แสงธรรมชาติหรือแสงสม่ำเสมอ (เช่น ใกล้หน้าต่าง)\",\n \"Wear fitted, simple clothing (e.g. neutral colors)\": \"สวมเสื้อผ้ารัดรูปและเรียบง่าย (เช่น สีกลาง)\",\n \"Don't wear loose, baggy, or layered clothing\": \"อย่าสวมเสื้อผ้าหลวม ใหญ่ หรือซ้อนกันหลายชั้น\",\n \"Don't sit, pose, or bend your body\": \"อย่านั่ง โพส หรือเอียงตัว\",\n \"Don't use strong backlighting\": \"อย่าใช้แสงย้อนแรงๆ\",\n \"Don't take mirror photos or selfies\": \"อย่าถ่ายรูปกระจกหรือเซลฟี่\",\n \"Don't apply filters, effects, or edits\": \"อย่าใช้ฟิลเตอร์ เอฟเฟกต์ หรือตกแต่งภาพ\",\n\n // ── Age gate ──\n \"Are you 18 or older?\": \"คุณอายุ 18 ปีขึ้นไปหรือไม่?\",\n \"Yes\": \"ใช่\",\n \"No\": \"ไม่\",\n \"Please confirm your age\": \"โปรดยืนยันอายุของคุณ\",\n \"Please confirm that the person in the photo is 18 or older before uploading.\": \"โปรดยืนยันว่าบุคคลในภาพมีอายุ 18 ปีขึ้นไปก่อนอัปโหลด\",\n \"Under 18 — can't process this photo.\": \"อายุต่ำกว่า 18 — ไม่สามารถประมวลผลภาพนี้ได้\",\n \"This photo appears to be of a minor. Please upload a photo of someone 18 or older.\": \"ภาพนี้ดูเหมือนเป็นภาพของผู้เยาว์ โปรดอัปโหลดภาพของบุคคลที่มีอายุ 18 ปีขึ้นไป\",\n \"Different photo needed\": \"ต้องการภาพอื่น\",\n \"Try another photo\": \"ลองภาพอื่น\",\n\n // ── Photo step controls ──\n \"Continue\": \"ดำเนินการต่อ\",\n \"Analyze My Size\": \"วิเคราะห์ขนาดของฉัน\",\n \"Analyzing photo…\": \"กำลังวิเคราะห์ภาพ…\",\n \"Details\": \"รายละเอียด\",\n \"Image must be under 10MB\": \"ภาพต้องมีขนาดต่ำกว่า 10MB\",\n \"Please upload an image file\": \"โปรดอัปโหลดไฟล์ภาพ\",\n \"Please upload a photo\": \"โปรดอัปโหลดภาพ\",\n \"Prefer not to upload a photo?\": \"ไม่ต้องการอัปโหลดภาพ?\",\n \"Enter measurements manually\": \"ป้อนขนาดด้วยตนเอง\",\n \"Legal Notice\": \"ประกาศทางกฎหมาย\",\n \"Your image will be used to generate a virtual try-on preview showing how selected items may look and fit. Images are processed securely and are not stored after generation.\": \"ภาพของคุณจะถูกใช้เพื่อสร้างตัวอย่างการลองสวมเสมือนจริงที่แสดงว่าสินค้าที่เลือกอาจดูและพอดีกับคุณอย่างไร ภาพจะถูกประมวลผลอย่างปลอดภัยและไม่ถูกจัดเก็บหลังการสร้าง\",\n\n // ── BodyProfileView — form (right section) ──\n \"Body details\": \"รายละเอียดร่างกาย\",\n \"Your body details\": \"รายละเอียดร่างกายของคุณ\",\n \"Body Measurements\": \"ขนาดร่างกาย\",\n \"AGE\": \"อายุ\",\n \"years\": \"ปี\",\n \"Enter your height\": \"กรอกส่วนสูงของคุณ\",\n \"Enter your weight\": \"กรอกน้ำหนักของคุณ\",\n \"Enter your bra size\": \"กรอกไซส์เสื้อชั้นใน\",\n \"Please enter your height\": \"กรอกส่วนสูงของคุณ\",\n \"Please enter your weight\": \"กรอกน้ำหนักของคุณ\",\n \"Please enter a valid height\": \"กรอกส่วนสูงที่ถูกต้อง\",\n \"Please enter a valid weight\": \"กรอกน้ำหนักที่ถูกต้อง\",\n \"Please enter a valid height (100-250 cm)\": \"กรอกส่วนสูงที่ถูกต้อง (100-250 ซม.)\",\n \"Please enter a valid weight (30-300 kg)\": \"กรอกน้ำหนักที่ถูกต้อง (30-300 กก.)\",\n \"Please select both band and cup size\": \"เลือกทั้งไซส์รอบใต้อกและคัพ\",\n \"Select your bra size\": \"เลือกไซส์เสื้อชั้นในของคุณ\",\n \"BAND\": \"รอบใต้อก\",\n \"BAND SIZE\": \"ไซส์รอบใต้อก\",\n \"CUP\": \"คัพ\",\n \"CUP SIZE\": \"ไซส์คัพ\",\n \"BRA REGION\": \"ภูมิภาคเสื้อชั้นใน\",\n \"Imperial\": \"อิมพีเรียล\",\n \"Metric\": \"เมตริก\",\n \"These calibrate the AI — all required.\": \"ข้อมูลเหล่านี้ใช้ปรับเทียบ AI — จำเป็นทั้งหมด\",\n \"Using\": \"กำลังใช้\",\n \"start fresh\": \"เริ่มใหม่\",\n \"Close\": \"ปิด\",\n\n // ── Body shape questions ──\n \"Which best describes your chest?\": \"ข้อใดอธิบายอกของคุณดีที่สุด?\",\n \"WHICH BEST DESCRIBES YOUR CHEST?\": \"ข้อใดอธิบายอกของคุณดีที่สุด?\",\n \"Which best describes your hips?\": \"ข้อใดอธิบายสะโพกของคุณดีที่สุด?\",\n \"WHICH BEST DESCRIBES YOUR HIPS?\": \"ข้อใดอธิบายสะโพกของคุณดีที่สุด?\",\n \"Which best describes your midsection?\": \"ข้อใดอธิบายเอวของคุณดีที่สุด?\",\n \"WHICH BEST DESCRIBES YOUR MIDSECTION?\": \"ข้อใดอธิบายเอวของคุณดีที่สุด?\",\n \"Which best describes your seat?\": \"ข้อใดอธิบายก้นของคุณดีที่สุด?\",\n \"WHICH BEST DESCRIBES YOUR SEAT?\": \"ข้อใดอธิบายก้นของคุณดีที่สุด?\",\n \"Average\": \"ปานกลาง\",\n \"Narrow\": \"แคบ\",\n \"Broad\": \"กว้าง\",\n \"Curvy\": \"โค้งเว้า\",\n \"A slimmer, narrower chest build\": \"อกที่บางและแคบกว่า\",\n \"A moderate, proportionate chest\": \"อกที่พอดีและได้สัดส่วน\",\n \"A wider, more muscular chest\": \"อกที่กว้างและมีกล้ามเนื้อกว่า\",\n \"A flatter midsection with minimal protrusion\": \"เอวที่แบนกว่าและยื่นออกมาน้อย\",\n \"A moderate, natural midsection shape\": \"รูปทรงเอวที่พอดีและเป็นธรรมชาติ\",\n \"A fuller, more rounded midsection\": \"เอวที่อิ่มและกลมกว่า\",\n \"A flatter backside with less projection\": \"ก้นที่แบนกว่าและยื่นออกน้อย\",\n \"A moderate, natural backside shape\": \"รูปทรงก้นที่พอดีและเป็นธรรมชาติ\",\n \"A fuller, more rounded backside\": \"ก้นที่อิ่มและกลมกว่า\",\n};\nexport default th;\n","const vi: Record<string, string> = {\n \"Virtual Try-On\": \"Thử Đồ Ảo\",\n \"Find Your Size & See It On You\": \"Tìm cỡ của bạn và thử mặc\",\n \"Get the perfect fit, then try it on virtually\": \"Tìm size phù hợp nhất rồi thử mặc ảo\",\n \"Get Your Size\": \"Cỡ của bạn\",\n \"Instant fit recommendation\": \"Gợi ý size ngay lập tức\",\n \"Try It On\": \"Thử mặc\",\n \"See how it looks on you\": \"Xem trông như thế nào trên bạn\",\n \"Find My Size\": \"Tìm cỡ của tôi\",\n \"Takes less than a minute\": \"Chưa đến một phút\",\n \"Upload a full body photo\": \"Tải lên ảnh toàn thân\",\n \"JPEG, PNG or WebP (max 10MB)\": \"JPEG, PNG hoặc WebP (tối đa 10MB)\",\n \"Your photo\": \"Ảnh của bạn\",\n \"Let's find your best fit\": \"Hãy tìm size phù hợp nhất\",\n \"Centimeters\": \"Xentimét\",\n \"Inches\": \"Inch\",\n \"Load saved profile...\": \"Tải hồ sơ đã lưu...\",\n \"HEIGHT\": \"CHIỀU CAO\",\n \"WEIGHT\": \"CÂN NẶNG\",\n \"feet\": \"feet\",\n \"inches\": \"inch\",\n \"cm\": \"cm\",\n \"kg\": \"kg\",\n \"lbs\": \"pound\",\n \"in\": \"inch\",\n \"How to measure\": \"Cách đo\",\n \"Hide guide\": \"Ẩn hướng dẫn\",\n \"I know my measurements\": \"Tôi biết số đo của mình\",\n \"Not sure? Use height & weight instead\": \"Không chắc? Dùng chiều cao và cân nặng\",\n \"Please fill in height and weight\": \"Vui lòng nhập chiều cao và cân nặng\",\n \"Please fill in all required fields\": \"Vui lòng điền đầy đủ các trường bắt buộc\",\n \"Next\": \"Tiếp theo\",\n \"Analyzing your size...\": \"Đang phân tích cỡ của bạn...\",\n \"RECOMMENDED SIZE\": \"CỠ ĐƯỢC ĐỀ XUẤT\",\n \"NOT RECOMMENDED\": \"KHÔNG ĐƯỢC ĐỀ XUẤT\",\n \"Edit measurements\": \"Sửa số đo\",\n \"Size guide\": \"Hướng dẫn cỡ\",\n \"Your fit\": \"Độ vừa vặn\",\n \"Your measure\": \"Số đo của bạn\",\n \"perfect fit\": \"vừa vặn hoàn hảo\",\n \"too tight\": \"quá chật\",\n \"tight\": \"chật\",\n \"a bit tight\": \"hơi chật\",\n \"too loose\": \"quá rộng\",\n \"loose\": \"rộng\",\n \"a bit loose\": \"hơi rộng\",\n \"See fit on your photo\": \"Xem độ vừa trên ảnh\",\n \"Hide visual fit\": \"Ẩn hiển thị độ vừa\",\n \"Analyzing...\": \"Đang phân tích...\",\n \"Try it on\": \"Thử mặc\",\n \"SIZE CHART\": \"BẢNG CỠ\",\n \"YOUR ESTIMATED MEASUREMENTS\": \"SỐ ĐO ƯỚC TÍNH CỦA BẠN\",\n \"Edit\": \"Sửa\",\n \"Download\": \"Tải xuống\",\n \"Size chart\": \"Bảng cỡ\",\n \"Preparing your image...\": \"Đang chuẩn bị ảnh...\",\n \"Analyzing body proportions...\": \"Đang phân tích tỉ lệ cơ thể...\",\n \"Matching garment to your photo...\": \"Đang ghép trang phục vào ảnh...\",\n \"Generating virtual try-on...\": \"Đang tạo thử đồ ảo...\",\n \"Refining details...\": \"Đang tinh chỉnh chi tiết...\",\n \"Almost there...\": \"Sắp xong...\",\n \"Complete!\": \"Hoàn thành!\",\n \"This usually takes 15-25 seconds\": \"Thường mất 15-25 giây\",\n \"Something went wrong\": \"Đã xảy ra lỗi\",\n \"Try Again\": \"Thử lại\",\n \"SDK not configured. Please provide an API key.\": \"SDK chưa được cấu hình. Vui lòng cung cấp API key.\",\n \"Please upload a JPEG, PNG, or WebP image.\": \"Vui lòng tải lên ảnh JPEG, PNG hoặc WebP.\",\n \"Image must be under 10MB.\": \"Ảnh phải nhỏ hơn 10MB.\",\n \"Try-on generation failed\": \"Tạo thử đồ thất bại\",\n \"Failed to start try-on\": \"Không thể bắt đầu thử đồ\",\n \"No product image found. Please set the product-image attribute.\": \"Không tìm thấy ảnh sản phẩm. Vui lòng đặt thuộc tính product-image.\",\n \"Powered by\": \"Được hỗ trợ bởi\",\n \"My Profiles\": \"Hồ sơ của tôi\",\n \"History\": \"Lịch sử\",\n \"No saved profiles yet.\": \"Chưa có hồ sơ nào được lưu.\",\n \"No history yet.\": \"Chưa có lịch sử.\",\n \"Product\": \"Sản phẩm\",\n \"Women's\": \"Nữ\",\n \"Men's\": \"Nam\",\n \"Profiles\": \"Hồ sơ\",\n \"Women's Profile\": \"Hồ sơ Nữ\",\n \"Men's Profile\": \"Hồ sơ Nam\",\n \"Height\": \"Chiều cao\",\n \"Weight\": \"Cân nặng\",\n \"Chest\": \"Ngực\",\n \"Bust\": \"Vòng ngực\",\n \"Waist\": \"Eo\",\n \"Hips\": \"Hông\",\n \"Shoulders\": \"Vai\",\n \"Sleeve\": \"Tay áo\",\n \"Inseam\": \"Đường may trong\",\n \"Neck\": \"Cổ\",\n \"Foot\": \"Bàn chân\",\n \"Shoe EU\": \"Giày EU\",\n \"Shoe US\": \"Giày US\",\n \"Shoe UK\": \"Giày UK\",\n \"Saved\": \"Đã lưu\",\n \"Delete Profile\": \"Xóa hồ sơ\",\n \"Shoe size (US)\": \"Cỡ giày (US)\",\n \"Shoe size (UK)\": \"Cỡ giày (UK)\",\n \"Shoe size (EU)\": \"Cỡ giày (EU)\",\n \"Generating...\": \"Đang tạo...\",\n \"Foot length\": \"Chiều dài bàn chân\",\n \"Size\": \"Cỡ\",\n \"Try on size\": \"Thử cỡ\",\n \"e.g.\": \"VD:\",\n \"Drop your photo here or click to upload\": \"Kéo thả ảnh vào đây hoặc nhấn để tải lên\",\n \"This usually takes 15-20 seconds\": \"Thường mất 15-20 giây\",\n \"Try-on result\": \"Kết quả thử đồ\",\n \"Try Another\": \"Thử cái khác\",\n \"Back\": \"Quay lại\",\n \"You\": \"Bạn\",\n \"Garment\": \"Trang phục\",\n \"Your Height\": \"Chiều Cao\",\n \"Your Weight\": \"Cân Nặng\",\n \"Drag or scroll to set your height\": \"Kéo hoặc cuộn để đặt chiều cao\",\n \"Drag or scroll to set your weight\": \"Kéo hoặc cuộn để đặt cân nặng\",\n \"Enter height and weight first\": \"Nhập chiều cao và cân nặng trước\",\n\n // ── Field labels ──\n \"Lens Width\": \"Chiều rộng tròng kính\",\n \"Bridge\": \"Cầu kính\",\n \"Arm Length\": \"Chiều dài gọng\",\n \"Head Circumference\": \"Chu vi đầu\",\n \"Face Width\": \"Chiều rộng khuôn mặt\",\n \"Temple\": \"Gọng kính\",\n \"Around widest point\": \"Quanh điểm rộng nhất\",\n \"Foot Length\": \"Chiều dài bàn chân\",\n \"Shoulder\": \"Vai\",\n \"Thigh\": \"Đùi\",\n \"Hip\": \"Hông\",\n\n // ── Units ──\n \"Millimetre\": \"Milimét\",\n \"Centimetre\": \"Centimét\",\n \"Millimeters\": \"Milimét\",\n\n // ── Fit descriptors ──\n \"Tight\": \"Chật\",\n \"Loose\": \"Rộng\",\n \"Short\": \"Ngắn\",\n \"Long\": \"Dài\",\n \"Perfect\": \"Hoàn hảo\",\n \"Perfect fit\": \"Vừa vặn hoàn hảo\",\n \"✓ Fit\": \"✓ Vừa\",\n \"too short\": \"quá ngắn\",\n \"too long\": \"quá dài\",\n \"a bit short\": \"hơi ngắn\",\n \"a bit long\": \"hơi dài\",\n\n // ── Length pills ──\n \"Length\": \"Chiều dài\",\n \"Length Adjustment\": \"Điều chỉnh chiều dài\",\n \"Regular\": \"Thường\",\n \"Big\": \"Lớn\",\n \"Big & Tall\": \"Lớn & Cao\",\n\n // ── Misc ──\n \"preview\": \"xem trước\",\n\n // ── BodyProfileView — photo upload area (left section) ──\n \"Upload your photo\": \"Tải ảnh của bạn lên\",\n \"Upload a photo\": \"Tải ảnh lên\",\n \"Click or drag a full-body photo\": \"Nhấp hoặc kéo ảnh toàn thân\",\n \"Or upload a photo for AI sizing\": \"Hoặc tải ảnh lên để AI phân tích kích cỡ\",\n \"Photo\": \"Ảnh\",\n \"How to take a good photo\": \"Cách chụp ảnh đẹp\",\n \"How to take the best photo\": \"Cách chụp ảnh tốt nhất\",\n \"Do\": \"Nên\",\n \"Don't\": \"Không nên\",\n \"Quick Tip\": \"Mẹo nhanh\",\n \"The simpler your photo is, the more accurate your virtual try-on results will be.\": \"Ảnh càng đơn giản thì kết quả thử đồ ảo càng chính xác.\",\n \"Choose a plain background (a light wall is ideal)\": \"Chọn nền trơn (tường sáng là lý tưởng)\",\n \"Stand facing the camera with your full body in frame\": \"Đứng đối mặt với máy ảnh sao cho toàn thân nằm trong khung hình\",\n \"Stand straight and still, arms relaxed by your sides\": \"Đứng thẳng và yên, hai tay thả lỏng dọc theo người\",\n \"Stand with your HEELS against a wall for best accuracy\": \"Đứng với GÓT CHÂN tựa vào tường để có độ chính xác cao nhất\",\n \"Use natural or even lighting (e.g. near a window)\": \"Sử dụng ánh sáng tự nhiên hoặc đều (ví dụ gần cửa sổ)\",\n \"Wear fitted, simple clothing (e.g. neutral colors)\": \"Mặc quần áo vừa vặn, đơn giản (ví dụ màu trung tính)\",\n \"Don't wear loose, baggy, or layered clothing\": \"Không mặc quần áo rộng, lùng thùng hoặc nhiều lớp\",\n \"Don't sit, pose, or bend your body\": \"Không ngồi, tạo dáng hay khom người\",\n \"Don't use strong backlighting\": \"Không dùng ánh sáng ngược mạnh\",\n \"Don't take mirror photos or selfies\": \"Không chụp ảnh qua gương hoặc selfie\",\n \"Don't apply filters, effects, or edits\": \"Không áp dụng bộ lọc, hiệu ứng hay chỉnh sửa\",\n\n // ── Age gate ──\n \"Are you 18 or older?\": \"Bạn đã đủ 18 tuổi chưa?\",\n \"Yes\": \"Có\",\n \"No\": \"Không\",\n \"Please confirm your age\": \"Vui lòng xác nhận tuổi của bạn\",\n \"Please confirm that the person in the photo is 18 or older before uploading.\": \"Vui lòng xác nhận người trong ảnh đã đủ 18 tuổi trước khi tải lên.\",\n \"Under 18 — can't process this photo.\": \"Dưới 18 — không thể xử lý ảnh này.\",\n \"This photo appears to be of a minor. Please upload a photo of someone 18 or older.\": \"Ảnh này có vẻ là của trẻ vị thành niên. Vui lòng tải ảnh của người đã đủ 18 tuổi.\",\n \"Different photo needed\": \"Cần ảnh khác\",\n \"Try another photo\": \"Thử ảnh khác\",\n\n // ── Photo step controls ──\n \"Continue\": \"Tiếp tục\",\n \"Analyze My Size\": \"Phân tích kích cỡ của tôi\",\n \"Analyzing photo…\": \"Đang phân tích ảnh…\",\n \"Details\": \"Chi tiết\",\n \"Image must be under 10MB\": \"Ảnh phải nhỏ hơn 10MB\",\n \"Please upload an image file\": \"Vui lòng tải tệp ảnh lên\",\n \"Please upload a photo\": \"Vui lòng tải ảnh lên\",\n \"Prefer not to upload a photo?\": \"Không muốn tải ảnh lên?\",\n \"Enter measurements manually\": \"Nhập số đo thủ công\",\n \"Legal Notice\": \"Thông báo pháp lý\",\n \"Your image will be used to generate a virtual try-on preview showing how selected items may look and fit. Images are processed securely and are not stored after generation.\": \"Ảnh của bạn sẽ được dùng để tạo bản xem trước thử đồ ảo cho thấy các mặt hàng đã chọn có thể trông và vừa vặn ra sao. Ảnh được xử lý an toàn và không được lưu trữ sau khi tạo.\",\n\n // ── BodyProfileView — form (right section) ──\n \"Body details\": \"Chi tiết cơ thể\",\n \"Your body details\": \"Chi tiết cơ thể của bạn\",\n \"Body Measurements\": \"Số đo cơ thể\",\n \"AGE\": \"TUỔI\",\n \"years\": \"tuổi\",\n \"Enter your height\": \"Nhập chiều cao của bạn\",\n \"Enter your weight\": \"Nhập cân nặng của bạn\",\n \"Enter your bra size\": \"Nhập size áo ngực\",\n \"Please enter your height\": \"Nhập chiều cao của bạn\",\n \"Please enter your weight\": \"Nhập cân nặng của bạn\",\n \"Please enter a valid height\": \"Nhập chiều cao hợp lệ\",\n \"Please enter a valid weight\": \"Nhập cân nặng hợp lệ\",\n \"Please enter a valid height (100-250 cm)\": \"Nhập chiều cao hợp lệ (100-250 cm)\",\n \"Please enter a valid weight (30-300 kg)\": \"Nhập cân nặng hợp lệ (30-300 kg)\",\n \"Please select both band and cup size\": \"Chọn cả size vòng và cúp\",\n \"Select your bra size\": \"Chọn size áo ngực của bạn\",\n \"BAND\": \"VÒNG\",\n \"BAND SIZE\": \"SIZE VÒNG\",\n \"CUP\": \"CÚP\",\n \"CUP SIZE\": \"SIZE CÚP\",\n \"BRA REGION\": \"VÙNG ÁO NGỰC\",\n \"Imperial\": \"Hệ Anh\",\n \"Metric\": \"Hệ mét\",\n \"These calibrate the AI — all required.\": \"Những thông tin này hiệu chỉnh AI — tất cả đều bắt buộc.\",\n \"Using\": \"Đang dùng\",\n \"start fresh\": \"bắt đầu lại\",\n \"Close\": \"Đóng\",\n\n // ── Body shape questions ──\n \"Which best describes your chest?\": \"Câu nào mô tả ngực của bạn nhất?\",\n \"WHICH BEST DESCRIBES YOUR CHEST?\": \"CÂU NÀO MÔ TẢ NGỰC CỦA BẠN NHẤT?\",\n \"Which best describes your hips?\": \"Câu nào mô tả hông của bạn nhất?\",\n \"WHICH BEST DESCRIBES YOUR HIPS?\": \"CÂU NÀO MÔ TẢ HÔNG CỦA BẠN NHẤT?\",\n \"Which best describes your midsection?\": \"Câu nào mô tả vòng eo của bạn nhất?\",\n \"WHICH BEST DESCRIBES YOUR MIDSECTION?\": \"CÂU NÀO MÔ TẢ VÒNG EO CỦA BẠN NHẤT?\",\n \"Which best describes your seat?\": \"Câu nào mô tả phần mông của bạn nhất?\",\n \"WHICH BEST DESCRIBES YOUR SEAT?\": \"CÂU NÀO MÔ TẢ PHẦN MÔNG CỦA BẠN NHẤT?\",\n \"Average\": \"Trung bình\",\n \"Narrow\": \"Hẹp\",\n \"Broad\": \"Rộng\",\n \"Curvy\": \"Đầy đặn\",\n \"A slimmer, narrower chest build\": \"Vóc ngực mảnh và hẹp hơn\",\n \"A moderate, proportionate chest\": \"Ngực cân đối và vừa phải\",\n \"A wider, more muscular chest\": \"Ngực rộng hơn và cơ bắp hơn\",\n \"A flatter midsection with minimal protrusion\": \"Vòng eo phẳng hơn, ít nhô ra\",\n \"A moderate, natural midsection shape\": \"Vòng eo vừa phải và tự nhiên\",\n \"A fuller, more rounded midsection\": \"Vòng eo đầy đặn và tròn hơn\",\n \"A flatter backside with less projection\": \"Mông phẳng hơn và ít nhô ra\",\n \"A moderate, natural backside shape\": \"Mông vừa phải và tự nhiên\",\n \"A fuller, more rounded backside\": \"Mông đầy đặn và tròn hơn\",\n};\nexport default vi;\n","/**\n * Auto-register all built-in locale packs.\n * Import this module once to make every supported language available.\n */\nimport { registerLocale } from \"../i18n\";\n\nimport ja from \"./ja\";\nimport ko from \"./ko\";\nimport zh from \"./zh\";\nimport es from \"./es\";\nimport fr from \"./fr\";\nimport de from \"./de\";\nimport it from \"./it\";\nimport pt from \"./pt\";\nimport nl from \"./nl\";\nimport ru from \"./ru\";\nimport ar from \"./ar\";\nimport tr from \"./tr\";\nimport pl from \"./pl\";\nimport sv from \"./sv\";\nimport da from \"./da\";\nimport nb from \"./nb\";\nimport fi from \"./fi\";\nimport th from \"./th\";\nimport vi from \"./vi\";\n\nconst locales: Record<string, Record<string, string>> = {\n ja, ko, zh, es, fr, de, it, pt, nl, ru, ar, tr, pl, sv, da, nb, fi, th, vi,\n};\n\nfor (const [code, translations] of Object.entries(locales)) {\n registerLocale(code, translations);\n}\n"],"names":["STORAGE_KEY","FALLBACK_PREFIX","memoryFallback","hasLocalStorage","uuid","chars","out","i","readRecord","raw","parsed","writeRecord","record","getOrCreateSessionId","now","existing","fresh","getDeviceHint","ua","DEFAULT_API_URL","ApiClient","apiKey","apiUrl","modelImage","garmentImage","fitInfo","category","context","body","f","parts","n","gap","mid","diff","res","data","PrimeStyleError","jobId","message","code","SseClient","streamUrl","event","delay","callback","jobListeners","update","callbacks","cb","DEFAULT_MAX_DIMENSION","DEFAULT_JPEG_QUALITY","compressImage","file","opts","maxDim","quality","resolve","reject","reader","img","canvas","width","height","ctx","dataUrl","err","isValidImageFile","checkAgeBeforeUpload","imageOrBase64","base64","resp","localeRegistry","registerLocale","translations","createT","locale","key","detectLanguage","SUPPORTED_LOCALES","LOCALE_LABELS","TRANSLATION_KEYS","ja","ko","zh","es","fr","de","it","pt","nl","ru","ar","tr","pl","sv","da","nb","fi","th","vi","locales"],"mappings":"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A,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAC3B;AAAA,EACA;AAAA,EAAa;AA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"}