@primestyleai/tryon 5.10.193 → 5.10.194

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.
@@ -6981,7 +6981,7 @@ const es = {
6981
6981
  "See Your Fit": "Ver tu ajuste",
6982
6982
  "Check your size, then try it on virtually": "Comprueba tu talla y pruébatelo virtualmente",
6983
6983
  "Get Your Size": "Tu talla",
6984
- "Instant fit recommendation": "Recomendación de ajuste instantánea",
6984
+ "Instant fit suggestion": "Sugerencia de ajuste instantánea",
6985
6985
  "Try It On": "Pruébatelo",
6986
6986
  "See how it looks on you": "Mira cómo te queda",
6987
6987
  "Find My Size": "Encontrar mi talla",
@@ -7009,12 +7009,12 @@ const es = {
7009
7009
  "Please fill in all required fields": "Por favor, completa todos los campos obligatorios",
7010
7010
  "Next": "Siguiente",
7011
7011
  "Analyzing your size...": "Analizando tu talla...",
7012
- "RECOMMENDED SIZE": "TALLA RECOMENDADA",
7013
- "NOT RECOMMENDED": "NO RECOMENDADA",
7012
+ "SUGGESTED SIZE": "TALLA SUGERIDA",
7013
+ "NOT SUGGESTED": "NO SUGERIDA",
7014
7014
  "Edit measurements": "Editar medidas",
7015
7015
  "Size guide": "Guía de tallas",
7016
7016
  "Your fit": "Tu ajuste",
7017
- "Your Size Recommendation": "Tu recomendación de talla",
7017
+ "Your Suggested Size": "Tu talla sugerida",
7018
7018
  "Your measure": "Tu medida",
7019
7019
  "within range": "dentro del rango",
7020
7020
  "too tight": "demasiado ajustado",
@@ -7237,7 +7237,7 @@ const fr = {
7237
7237
  "See Your Fit": "Voir votre ajustement",
7238
7238
  "Check your size, then try it on virtually": "Vérifiez votre taille, puis essayez-le virtuellement",
7239
7239
  "Get Your Size": "Votre taille",
7240
- "Instant fit recommendation": "Recommandation de coupe instantanée",
7240
+ "Instant fit suggestion": "Suggestion de coupe instantanée",
7241
7241
  "Try It On": "Essayer",
7242
7242
  "See how it looks on you": "Voyez comment ça vous va",
7243
7243
  "Find My Size": "Trouver ma taille",
@@ -7265,12 +7265,12 @@ const fr = {
7265
7265
  "Please fill in all required fields": "Veuillez remplir tous les champs obligatoires",
7266
7266
  "Next": "Suivant",
7267
7267
  "Analyzing your size...": "Analyse de votre taille...",
7268
- "RECOMMENDED SIZE": "TAILLE RECOMMANDÉE",
7269
- "NOT RECOMMENDED": "NON RECOMMANDÉE",
7268
+ "SUGGESTED SIZE": "TAILLE SUGGÉRÉE",
7269
+ "NOT SUGGESTED": "NON SUGGÉRÉE",
7270
7270
  "Edit measurements": "Modifier les mesures",
7271
7271
  "Size guide": "Guide des tailles",
7272
7272
  "Your fit": "Votre coupe",
7273
- "Your Size Recommendation": "Votre recommandation de taille",
7273
+ "Your Suggested Size": "Votre taille suggérée",
7274
7274
  "Your measure": "Votre mesure",
7275
7275
  "within range": "dans la plage",
7276
7276
  "too tight": "trop serré",
@@ -7493,7 +7493,7 @@ const de = {
7493
7493
  "See Your Fit": "Ihre Passform ansehen",
7494
7494
  "Check your size, then try it on virtually": "Prüfen Sie Ihre Größe und probieren Sie es virtuell an",
7495
7495
  "Get Your Size": "Ihre Größe",
7496
- "Instant fit recommendation": "Sofortige Passformempfehlung",
7496
+ "Instant fit suggestion": "Sofortiger Passformvorschlag",
7497
7497
  "Try It On": "Anprobieren",
7498
7498
  "See how it looks on you": "Sehen Sie, wie es Ihnen steht",
7499
7499
  "Find My Size": "Meine Größe finden",
@@ -7521,12 +7521,12 @@ const de = {
7521
7521
  "Please fill in all required fields": "Bitte alle Pflichtfelder ausfüllen",
7522
7522
  "Next": "Weiter",
7523
7523
  "Analyzing your size...": "Ihre Größe wird analysiert...",
7524
- "RECOMMENDED SIZE": "EMPFOHLENE GRÖSSE",
7525
- "NOT RECOMMENDED": "NICHT EMPFOHLEN",
7524
+ "SUGGESTED SIZE": "VORGESCHLAGENE GRÖSSE",
7525
+ "NOT SUGGESTED": "NICHT VORGESCHLAGEN",
7526
7526
  "Edit measurements": "Maße bearbeiten",
7527
7527
  "Size guide": "Größentabelle",
7528
7528
  "Your fit": "Ihre Passform",
7529
- "Your Size Recommendation": "Ihre Größenempfehlung",
7529
+ "Your Suggested Size": "Ihre vorgeschlagene Größe",
7530
7530
  "Your measure": "Ihr Maß",
7531
7531
  "within range": "im Bereich",
7532
7532
  "too tight": "zu eng",
@@ -7749,7 +7749,7 @@ const it = {
7749
7749
  "See Your Fit": "Vedi la vestibilità",
7750
7750
  "Check your size, then try it on virtually": "Controlla la tua taglia, poi provalo virtualmente",
7751
7751
  "Get Your Size": "La tua taglia",
7752
- "Instant fit recommendation": "Raccomandazione vestibilità istantanea",
7752
+ "Instant fit suggestion": "Suggerimento vestibilità istantaneo",
7753
7753
  "Try It On": "Provalo",
7754
7754
  "See how it looks on you": "Guarda come ti sta",
7755
7755
  "Find My Size": "Trova la mia taglia",
@@ -7777,12 +7777,12 @@ const it = {
7777
7777
  "Please fill in all required fields": "Compila tutti i campi obbligatori",
7778
7778
  "Next": "Avanti",
7779
7779
  "Analyzing your size...": "Analisi della tua taglia...",
7780
- "RECOMMENDED SIZE": "TAGLIA CONSIGLIATA",
7781
- "NOT RECOMMENDED": "NON CONSIGLIATA",
7780
+ "SUGGESTED SIZE": "TAGLIA SUGGERITA",
7781
+ "NOT SUGGESTED": "NON SUGGERITA",
7782
7782
  "Edit measurements": "Modifica misure",
7783
7783
  "Size guide": "Guida alle taglie",
7784
7784
  "Your fit": "La tua vestibilità",
7785
- "Your Size Recommendation": "La tua taglia consigliata",
7785
+ "Your Suggested Size": "La tua taglia suggerita",
7786
7786
  "Your measure": "La tua misura",
7787
7787
  "within range": "entro l'intervallo",
7788
7788
  "too tight": "troppo stretto",
@@ -8005,7 +8005,7 @@ const pt$1 = {
8005
8005
  "See Your Fit": "Veja seu ajuste",
8006
8006
  "Check your size, then try it on virtually": "Confira seu tamanho e experimente virtualmente",
8007
8007
  "Get Your Size": "Seu tamanho",
8008
- "Instant fit recommendation": "Recomendação de caimento instantânea",
8008
+ "Instant fit suggestion": "Sugestão de caimento instantânea",
8009
8009
  "Try It On": "Experimentar",
8010
8010
  "See how it looks on you": "Veja como fica em você",
8011
8011
  "Find My Size": "Encontrar meu tamanho",
@@ -8033,12 +8033,12 @@ const pt$1 = {
8033
8033
  "Please fill in all required fields": "Por favor, preencha todos os campos obrigatórios",
8034
8034
  "Next": "Próximo",
8035
8035
  "Analyzing your size...": "Analisando seu tamanho...",
8036
- "RECOMMENDED SIZE": "TAMANHO RECOMENDADO",
8037
- "NOT RECOMMENDED": "NÃO RECOMENDADO",
8036
+ "SUGGESTED SIZE": "TAMANHO SUGERIDO",
8037
+ "NOT SUGGESTED": "NÃO SUGERIDO",
8038
8038
  "Edit measurements": "Editar medidas",
8039
8039
  "Size guide": "Guia de tamanhos",
8040
8040
  "Your fit": "Seu caimento",
8041
- "Your Size Recommendation": "Sua recomendação de tamanho",
8041
+ "Your Suggested Size": "Seu tamanho sugerido",
8042
8042
  "Your measure": "Sua medida",
8043
8043
  "within range": "dentro da faixa",
8044
8044
  "too tight": "muito apertado",
@@ -8261,7 +8261,7 @@ const ja = {
8261
8261
  "See Your Fit": "フィット感を見る",
8262
8262
  "Check your size, then try it on virtually": "サイズを確認して、バーチャルで試着しましょう",
8263
8263
  "Get Your Size": "サイズを確認",
8264
- "Instant fit recommendation": "瞬時にフィット提案",
8264
+ "Instant fit suggestion": "瞬時にフィット提案",
8265
8265
  "Try It On": "試着する",
8266
8266
  "See how it looks on you": "自分に似合うか確認",
8267
8267
  "Find My Size": "自分のサイズを見つける",
@@ -8289,12 +8289,12 @@ const ja = {
8289
8289
  "Please fill in all required fields": "すべての必須項目を入力してください",
8290
8290
  "Next": "次へ",
8291
8291
  "Analyzing your size...": "サイズを分析中...",
8292
- "RECOMMENDED SIZE": "推奨サイズ",
8293
- "NOT RECOMMENDED": "非推奨",
8292
+ "SUGGESTED SIZE": "提案サイズ",
8293
+ "NOT SUGGESTED": "提案外",
8294
8294
  "Edit measurements": "寸法を編集",
8295
8295
  "Size guide": "サイズガイド",
8296
8296
  "Your fit": "あなたのフィット",
8297
- "Your Size Recommendation": "サイズのおすすめ",
8297
+ "Your Suggested Size": "提案サイズ",
8298
8298
  "Your measure": "あなたの寸法",
8299
8299
  "within range": "範囲内",
8300
8300
  "too tight": "きつすぎる",
@@ -8517,7 +8517,7 @@ const zh = {
8517
8517
  "See Your Fit": "查看合身效果",
8518
8518
  "Check your size, then try it on virtually": "确认尺码,然后虚拟试穿",
8519
8519
  "Get Your Size": "获取尺码",
8520
- "Instant fit recommendation": "即时合身推荐",
8520
+ "Instant fit suggestion": "即时合身建议",
8521
8521
  "Try It On": "试穿",
8522
8522
  "See how it looks on you": "看看穿在你身上的效果",
8523
8523
  "Find My Size": "找到我的尺码",
@@ -8545,12 +8545,12 @@ const zh = {
8545
8545
  "Please fill in all required fields": "请填写所有必填项",
8546
8546
  "Next": "下一步",
8547
8547
  "Analyzing your size...": "正在分析你的尺码...",
8548
- "RECOMMENDED SIZE": "推荐尺码",
8549
- "NOT RECOMMENDED": "不推荐",
8548
+ "SUGGESTED SIZE": "建议尺码",
8549
+ "NOT SUGGESTED": "不建议",
8550
8550
  "Edit measurements": "编辑尺寸",
8551
8551
  "Size guide": "尺码指南",
8552
8552
  "Your fit": "你的合身度",
8553
- "Your Size Recommendation": "你的尺码建议",
8553
+ "Your Suggested Size": "你的建议尺码",
8554
8554
  "Your measure": "你的尺寸",
8555
8555
  "within range": "在范围内",
8556
8556
  "too tight": "太紧",
@@ -8773,7 +8773,7 @@ const ko = {
8773
8773
  "See Your Fit": "핏 확인하기",
8774
8774
  "Check your size, then try it on virtually": "사이즈를 확인하고 가상으로 입어보세요",
8775
8775
  "Get Your Size": "사이즈 확인",
8776
- "Instant fit recommendation": "즉시 핏 추천",
8776
+ "Instant fit suggestion": "즉시 핏 제안",
8777
8777
  "Try It On": "입어보기",
8778
8778
  "See how it looks on you": "어떻게 보이는지 확인",
8779
8779
  "Find My Size": "내 사이즈 찾기",
@@ -8801,12 +8801,12 @@ const ko = {
8801
8801
  "Please fill in all required fields": "모든 필수 항목을 입력해주세요",
8802
8802
  "Next": "다음",
8803
8803
  "Analyzing your size...": "사이즈 분석 중...",
8804
- "RECOMMENDED SIZE": "추천 사이즈",
8805
- "NOT RECOMMENDED": "비추천",
8804
+ "SUGGESTED SIZE": "제안 사이즈",
8805
+ "NOT SUGGESTED": "제안 아님",
8806
8806
  "Edit measurements": "치수 수정",
8807
8807
  "Size guide": "사이즈 가이드",
8808
8808
  "Your fit": "나의 핏",
8809
- "Your Size Recommendation": "사이즈 추천",
8809
+ "Your Suggested Size": "제안 사이즈",
8810
8810
  "Your measure": "내 치수",
8811
8811
  "within range": "범위 내",
8812
8812
  "too tight": "너무 타이트",
@@ -9029,7 +9029,7 @@ const ar = {
9029
9029
  "See Your Fit": "شاهد الملاءمة",
9030
9030
  "Check your size, then try it on virtually": "تحقق من مقاسك ثم جرّبه افتراضياً",
9031
9031
  "Get Your Size": "مقاسك",
9032
- "Instant fit recommendation": "توصية فورية بالمقاس",
9032
+ "Instant fit suggestion": "اقتراح فوري للمقاس",
9033
9033
  "Try It On": "جرّبه",
9034
9034
  "See how it looks on you": "شاهد كيف يبدو عليك",
9035
9035
  "Find My Size": "اعثر على مقاسي",
@@ -9057,12 +9057,12 @@ const ar = {
9057
9057
  "Please fill in all required fields": "يرجى ملء جميع الحقول المطلوبة",
9058
9058
  "Next": "التالي",
9059
9059
  "Analyzing your size...": "جارٍ تحليل مقاسك...",
9060
- "RECOMMENDED SIZE": "المقاس الموصى به",
9061
- "NOT RECOMMENDED": "غير موصى به",
9060
+ "SUGGESTED SIZE": "المقاس المقترح",
9061
+ "NOT SUGGESTED": "غير مقترح",
9062
9062
  "Edit measurements": "تعديل القياسات",
9063
9063
  "Size guide": "دليل المقاسات",
9064
9064
  "Your fit": "ملاءمتك",
9065
- "Your Size Recommendation": "توصية المقاس",
9065
+ "Your Suggested Size": "المقاس المقترح",
9066
9066
  "Your measure": "قياسك",
9067
9067
  "within range": "ضمن النطاق",
9068
9068
  "too tight": "ضيق جداً",
@@ -11785,7 +11785,8 @@ function productFitTypeToMeasurementType(fitType) {
11785
11785
  if (fitType === "shoe") return "foot";
11786
11786
  if (fitType === "hat") return "head";
11787
11787
  if (fitType === "sunglasses") return "face";
11788
- if (fitType === "bracelet" || fitType === "watch") return "wrist";
11788
+ if (fitType === "watch") return "wrist";
11789
+ if (fitType === "bracelet") return "body-basic";
11789
11790
  if (fitType === "bag" || fitType === "belt" || fitType === "earring" || fitType === "necklace" || fitType === "ring" || fitType === "accessory") {
11790
11791
  return "body-basic";
11791
11792
  }
@@ -12344,6 +12345,9 @@ const STYLES = `
12344
12345
  .ps-tryon-v2-result-panel .ps-tryon-v2-sep {
12345
12346
  margin-bottom: 0;
12346
12347
  }
12348
+ .ps-tryon-v2-multi-result-panel .ps-tryon-v2-result-copy {
12349
+ flex: 0 0 auto;
12350
+ }
12347
12351
  .ps-tryon-v2-result-panel .ps-tryon-sr-cards-v2 {
12348
12352
  flex: 0 0 auto;
12349
12353
  min-height: 0;
@@ -14690,6 +14694,34 @@ const STYLES = `
14690
14694
  .ps-tryon-sec-detail .ps-tryon-sr-fit-table td { padding: 0.9vw 0; }
14691
14695
  .ps-tryon-sec-detail .ps-tryon-sr-fit-table th { padding: 0.4vw 0 0.6vw; }
14692
14696
  .ps-tryon-sec-detail .ps-tryon-sr-chips { gap: 0.4vw; margin: 0.3vw 0; }
14697
+ .ps-tryon-sec-detail-footer {
14698
+ gap: clamp(16px, 1.1vw, 22px);
14699
+ min-height: clamp(44px, 3vw, 54px);
14700
+ }
14701
+ .ps-tryon-sec-detail-footer .ps-bp-back-btn {
14702
+ flex: 0 0 auto;
14703
+ min-width: 0;
14704
+ white-space: nowrap;
14705
+ }
14706
+ .ps-tryon-sec-detail-footer .ps-tryon-v2-action-group {
14707
+ flex: 1 1 auto;
14708
+ max-width: min(430px, 100%);
14709
+ margin-left: auto;
14710
+ gap: clamp(16px, 1vw, 20px);
14711
+ }
14712
+ .ps-tryon-sec-detail-footer .ps-tryon-v2-action-group-single {
14713
+ flex: 0 0 auto;
14714
+ max-width: none;
14715
+ }
14716
+ .ps-tryon-sec-detail-footer .ps-tryon-v2-action-group > .ps-tryon-v2-cta {
14717
+ flex: 1 1 0;
14718
+ min-width: clamp(140px, 9.5vw, 178px);
14719
+ margin-top: 0;
14720
+ }
14721
+ .ps-tryon-sec-detail-footer .ps-tryon-v2-action-group-single > .ps-tryon-v2-cta {
14722
+ flex: 0 0 auto;
14723
+ min-width: clamp(150px, 10vw, 190px);
14724
+ }
14693
14725
 
14694
14726
  /* Length inline selector (inside section detail) */
14695
14727
  .ps-tryon-sec-length-row {
@@ -15018,7 +15050,7 @@ const STYLES = `
15018
15050
  transform: translateY(-1px);
15019
15051
  }
15020
15052
 
15021
- /* Size chip recommended dot */
15053
+ /* Size chip suggested dot */
15022
15054
  .ps-tryon-sr-chip { position: relative; }
15023
15055
  .ps-tryon-sr-rec-dot {
15024
15056
  position: absolute; bottom: -0.3vw; left: 50%; transform: translateX(-50%);
@@ -17064,6 +17096,13 @@ const STYLES = `
17064
17096
  font-size: clamp(11px, 0.66vw, 13px);
17065
17097
  padding: 0 0 3px;
17066
17098
  }
17099
+ .ps-bp-system-toggle-large {
17100
+ gap: clamp(18px, 1.1vw, 24px);
17101
+ }
17102
+ .ps-bp-system-toggle-large .ps-bp-system-btn {
17103
+ font-size: clamp(13px, 0.78vw, 15px);
17104
+ padding-bottom: 4px;
17105
+ }
17067
17106
 
17068
17107
  .ps-bp-root {
17069
17108
  flex: 1; min-width: 0;
@@ -20869,7 +20908,7 @@ const STYLES = `
20869
20908
  min-width: 0;
20870
20909
  }
20871
20910
 
20872
- /* RECOMMENDED SIZE card */
20911
+ /* SUGGESTED SIZE card */
20873
20912
  .ps-msd-card {
20874
20913
  background: var(--ps-bg-primary);
20875
20914
  border: 1px solid var(--ps-border-subtle);
@@ -21135,20 +21174,23 @@ const STYLES = `
21135
21174
  .ps-bp-photo-help-backdrop { display: none; }
21136
21175
  .ps-bp-photo-help {
21137
21176
  position: absolute; top: 2.2vw; right: 0;
21138
- width: min(360px, 22vw);
21177
+ width: min(520px, 34vw);
21139
21178
  background: #FFFFFF;
21140
21179
  border: 1px solid var(--ps-border-subtle);
21141
21180
  border-radius: 0.8vw;
21142
21181
  box-shadow: 0 20px 40px -12px rgba(17,24,39,0.25), 0 8px 16px -8px rgba(17,24,39,0.15);
21143
21182
  padding: 0.8vw 1vw;
21144
21183
  display: flex; flex-direction: column; gap: 0.6vw;
21184
+ max-height: min(70dvh, 520px);
21185
+ overflow-y: auto;
21186
+ -webkit-overflow-scrolling: touch;
21145
21187
  z-index: 5;
21146
21188
  }
21147
21189
  .ps-bp-photo-help-upload {
21148
21190
  top: clamp(46px, 3.2vw, 58px);
21149
21191
  left: clamp(12px, 0.85vw, 16px);
21150
21192
  right: auto;
21151
- width: min(360px, calc(100% - clamp(24px, 1.7vw, 32px)));
21193
+ width: min(620px, calc(100% - clamp(24px, 1.7vw, 32px)));
21152
21194
  max-height: calc(100% - clamp(64px, 4.5vw, 82px));
21153
21195
  overflow-y: auto;
21154
21196
  }
@@ -23672,7 +23714,7 @@ function WelcomeView({
23672
23714
  /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "ps-tryon-welcome-sub", children: t2("Check your size, then try it on virtually") })
23673
23715
  ] }),
23674
23716
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-features", children: [
23675
- { icon: /* @__PURE__ */ jsxRuntimeExports.jsx(RulerIcon$1, { size: 22 }), title: t2("Get Your Size"), desc: t2("Instant fit recommendation") },
23717
+ { icon: /* @__PURE__ */ jsxRuntimeExports.jsx(RulerIcon$1, { size: 22 }), title: t2("Get Your Size"), desc: t2("Instant fit suggestion") },
23676
23718
  { icon: /* @__PURE__ */ jsxRuntimeExports.jsx(CameraIcon$1, { size: 22 }), title: t2("Try It On"), desc: t2("See how it looks on you") }
23677
23719
  ].map((f2, i) => /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-feature", children: [
23678
23720
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-feature-icon", children: f2.icon }),
@@ -23991,24 +24033,24 @@ function MobileScanningView({
23991
24033
  { title: t2("DETECTING HEAD"), desc: t2("Reading head landmarks from your photo."), viewfinderText: t2("DETECTING HEAD") },
23992
24034
  { title: t2("MAPPING CIRCUMFERENCE"), desc: t2("Estimating head width and depth."), viewfinderText: t2("MAPPING") },
23993
24035
  { title: t2("MATCHING HAT SIZE"), desc: t2("Comparing your circumference to the size chart."), viewfinderText: t2("MATCHING SIZE") },
23994
- { title: t2("FINALIZING RESULT"), desc: t2("Almost done — preparing your recommendation."), viewfinderText: t2("FINALIZING") }
24036
+ { title: t2("FINALIZING RESULT"), desc: t2("Almost done — preparing your suggested size."), viewfinderText: t2("FINALIZING") }
23995
24037
  ] : [
23996
24038
  { title: t2("DETECTING FACE"), desc: t2("Identifying face landmarks in your photo."), viewfinderText: t2("DETECTING FACE") },
23997
24039
  { title: t2("CALIBRATING SCALE"), desc: t2("Using iris size as the pixel-to-mm anchor."), viewfinderText: t2("CALIBRATING") },
23998
24040
  { title: t2("MEASURING FRAME"), desc: t2("Mapping bridge, frame width and temple fit."), viewfinderText: t2("MEASURING") },
23999
24041
  { title: t2("MATCHING FRAME SIZE"), desc: t2("Comparing your measurements to the size chart."), viewfinderText: t2("MATCHING SIZE") },
24000
- { title: t2("FINALIZING RESULT"), desc: t2("Almost done — preparing your recommendation."), viewfinderText: t2("FINALIZING") }
24042
+ { title: t2("FINALIZING RESULT"), desc: t2("Almost done — preparing your suggested size."), viewfinderText: t2("FINALIZING") }
24001
24043
  ] : [
24002
24044
  { title: t2("DETECTING POSE"), desc: t2("Identifying body landmarks from your photo."), viewfinderText: t2("DETECTING POSE") },
24003
- { title: t2("SCANNING FRAME"), desc: t2("Our AI is mapping your proportions for a size recommendation."), viewfinderText: t2("SCANNING FRAME") },
24045
+ { title: t2("SCANNING FRAME"), desc: t2("Our AI is mapping your proportions for a size suggestion."), viewfinderText: t2("SCANNING FRAME") },
24004
24046
  { title: t2("ANALYZING BODY"), desc: t2("Measuring shoulders, chest, waist and hips."), viewfinderText: t2("ANALYZING") },
24005
24047
  { title: t2("MATCHING SIZE"), desc: t2("Comparing your measurements to the size guide."), viewfinderText: t2("MATCHING SIZE") },
24006
- { title: t2("FINALIZING RESULT"), desc: t2("Almost done — preparing your recommendation."), viewfinderText: t2("FINALIZING") }
24048
+ { title: t2("FINALIZING RESULT"), desc: t2("Almost done — preparing your suggested size."), viewfinderText: t2("FINALIZING") }
24007
24049
  ] : [
24008
24050
  { title: t2("READING YOUR PROFILE"), desc: t2("Loading your saved measurements and body shape answers."), viewfinderText: t2("READING PROFILE") },
24009
24051
  { title: t2("ESTIMATING BODY"), desc: t2("Computing chest, waist, hips, sleeve and inseam from your basics."), viewfinderText: t2("ESTIMATING BODY") },
24010
24052
  { title: t2("MATCHING SIZE"), desc: t2("Comparing your measurements to the garment's size guide."), viewfinderText: t2("MATCHING SIZE") },
24011
- { title: t2("FINALIZING RESULT"), desc: t2("Almost done — preparing your recommendation."), viewfinderText: t2("FINALIZING") }
24053
+ { title: t2("FINALIZING RESULT"), desc: t2("Almost done — preparing your suggested size."), viewfinderText: t2("FINALIZING") }
24012
24054
  ];
24013
24055
  const [dims, setDims] = reactExports.useState({ w: 800, h: 1200 });
24014
24056
  const handleImgLoad = (e) => {
@@ -24236,7 +24278,7 @@ function MultiSectionMobile({
24236
24278
  marginTop: "4px",
24237
24279
  color: isOverridden ? "#b45309" : "var(--ps-text-secondary, #6b7280)"
24238
24280
  },
24239
- children: isOverridden ? t2("your selection · not recommended") : t2("recommended")
24281
+ children: isOverridden ? t2("your selection · not suggested") : t2("suggested")
24240
24282
  }
24241
24283
  )
24242
24284
  ]
@@ -24735,13 +24777,13 @@ function StageCycler({
24735
24777
  { title: t2("DETECTING HEAD"), desc: t2("Reading head landmarks from your photo.") },
24736
24778
  { title: t2("MAPPING CIRCUMFERENCE"), desc: t2("Estimating head width and depth.") },
24737
24779
  { title: t2("MATCHING HAT SIZE"), desc: t2("Comparing your circumference to the size chart.") },
24738
- { title: t2("FINALIZING RESULT"), desc: t2("Almost done — preparing your recommendation.") }
24780
+ { title: t2("FINALIZING RESULT"), desc: t2("Almost done — preparing your suggested size.") }
24739
24781
  ] : category === "face" ? [
24740
24782
  { title: t2("DETECTING FACE"), desc: t2("Identifying 478 face landmarks in your photo.") },
24741
24783
  { title: t2("CALIBRATING SCALE"), desc: t2("Using iris size as the pixel-to-mm anchor.") },
24742
24784
  { title: t2("MEASURING FRAME"), desc: t2("Mapping bridge, lens width and temple length.") },
24743
24785
  { title: t2("MATCHING FRAME SIZE"), desc: t2("Comparing your measurements to the size chart.") },
24744
- { title: t2("FINALIZING RESULT"), desc: t2("Almost done — preparing your recommendation.") }
24786
+ { title: t2("FINALIZING RESULT"), desc: t2("Almost done — preparing your suggested size.") }
24745
24787
  ] : [
24746
24788
  // Body + foot fall through here — broadest set of stages so long
24747
24789
  // Gemini estimates still have fresh text to cycle through.
@@ -24749,7 +24791,7 @@ function StageCycler({
24749
24791
  { title: t2("SCANNING FRAME"), desc: t2("Our AI is mapping your proportions.") },
24750
24792
  { title: t2("ANALYZING BODY"), desc: t2("Measuring shoulders, chest, waist and hips.") },
24751
24793
  { title: t2("MATCHING SIZE"), desc: t2("Comparing your measurements to the size guide.") },
24752
- { title: t2("FINALIZING RESULT"), desc: t2("Almost done — preparing your recommendation.") }
24794
+ { title: t2("FINALIZING RESULT"), desc: t2("Almost done — preparing your suggested size.") }
24753
24795
  ];
24754
24796
  const TOTAL_MS = 6e3;
24755
24797
  const LAST_HOLD_MS = 1e3;
@@ -25186,7 +25228,7 @@ function SectionDetailView({
25186
25228
  const details = sectionResult?.matchDetails ?? [];
25187
25229
  const BAD_FIT = /tight|loose|large|small|very/i;
25188
25230
  const hasBadFit = details.some((d) => BAD_FIT.test(d.fit || ""));
25189
- return hasBadFit ? t2("Not Recommended") : t2("Your Selection");
25231
+ return hasBadFit ? t2("Not Suggested") : t2("Your Selection");
25190
25232
  }, [isRecommended, sectionResult, t2]);
25191
25233
  const sizeFitPrefix = (() => {
25192
25234
  if (renderRaw || isFootwear) return "";
@@ -25587,7 +25629,7 @@ function SectionDetailView({
25587
25629
  {
25588
25630
  className: "ps-msd-card-eyebrow",
25589
25631
  style: displaySize !== backendSize ? { color: "#b45309", fontWeight: 700 } : void 0,
25590
- children: displaySize === backendSize ? t2("RECOMMENDED SIZE") : t2("YOUR CHOICE · NOT RECOMMENDED")
25632
+ children: displaySize === backendSize ? t2("SUGGESTED SIZE") : t2("YOUR CHOICE · NOT SUGGESTED")
25591
25633
  }
25592
25634
  ),
25593
25635
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { display: "flex", alignItems: "center", gap: "10px", marginTop: "6px", marginBottom: "4px" }, children: [
@@ -25778,7 +25820,7 @@ function SectionDetailView({
25778
25820
  ] })
25779
25821
  ] }) });
25780
25822
  }
25781
- return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-sec-detail", style: { padding: "1.5vw", display: "flex", flexDirection: "column", height: "100%", background: "#F8F9FA" }, children: [
25823
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-sec-detail", style: { padding: "1.2vw 0.95vw 1vw", display: "flex", flexDirection: "column", height: "100%", background: "#F8F9FA" }, children: [
25782
25824
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: { flex: 1, minHeight: 0, overflowY: "auto", scrollbarWidth: "thin", scrollbarColor: "rgba(0,0,0,0.04) transparent", display: sectionFound === false ? "flex" : "block", alignItems: sectionFound === false ? "center" : void 0, justifyContent: sectionFound === false ? "center" : void 0 }, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
25783
25825
  /* @__PURE__ */ jsxRuntimeExports.jsx(
25784
25826
  "span",
@@ -25790,7 +25832,7 @@ function SectionDetailView({
25790
25832
  textTransform: "uppercase",
25791
25833
  letterSpacing: "0.12em"
25792
25834
  },
25793
- children: guideOnly ? t2("Size Guide") : isRecommended ? t2("Recommended Size") : t2("Your Choice · Not Recommended")
25835
+ children: guideOnly ? t2("Size Guide") : isRecommended ? t2("Suggested Size") : t2("Your Choice · Not Suggested")
25794
25836
  }
25795
25837
  ),
25796
25838
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { display: "flex", alignItems: "center", gap: "0.5vw", marginTop: "0.35vw", marginBottom: "0.4vw" }, children: [
@@ -25950,11 +25992,11 @@ function SectionDetailView({
25950
25992
  ] })
25951
25993
  ] }) }),
25952
25994
  profileCompletionCta && /* @__PURE__ */ jsxRuntimeExports.jsx(ProfileCompletionCta, { onClick: profileCompletionCta.onClick, t: t2 }),
25953
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { display: "flex", alignItems: "center", justifyContent: "space-between", paddingTop: "0.6vw", borderTop: "1px solid rgba(0,0,0,0.06)", flexShrink: 0 }, children: [
25995
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-sec-detail-footer", style: { display: "flex", alignItems: "center", justifyContent: "space-between", paddingTop: "0.6vw", borderTop: "1px solid rgba(0,0,0,0.06)", flexShrink: 0 }, children: [
25954
25996
  /* @__PURE__ */ jsxRuntimeExports.jsxs("button", { className: "ps-bp-back-btn", onClick: onBack, type: "button", style: { fontSize: "0.7vw" }, children: [
25955
25997
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "ps-bp-back-arrow", children: "←" }),
25956
25998
  " ",
25957
- backLabel || t2("Back to sections")
25999
+ backLabel || t2("Back")
25958
26000
  ] }),
25959
26001
  onTryOn ? /* @__PURE__ */ jsxRuntimeExports.jsxs(
25960
26002
  "button",
@@ -25988,7 +26030,7 @@ function SectionDetailView({
25988
26030
  tryOnProcessing ? `${t2("Generating try-on…")}${tryOnElapsedS > 0 ? ` ${tryOnElapsedS}s` : ""}` : t2("Try It On")
25989
26031
  ]
25990
26032
  }
25991
- ) : resultActionNode ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-v2-action-group", children: resultActionNode }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(
26033
+ ) : resultActionNode ? resultActionNode : /* @__PURE__ */ jsxRuntimeExports.jsxs(
25992
26034
  "button",
25993
26035
  {
25994
26036
  onClick: continueLabel ? onContinue || onBack : onBack,
@@ -26051,6 +26093,7 @@ function SizeResultView({
26051
26093
  bodyLandmarks,
26052
26094
  faceLandmarks = null,
26053
26095
  measurementType = "body",
26096
+ isAccessoryProduct = false,
26054
26097
  estimationDone = false,
26055
26098
  activeSection,
26056
26099
  setActiveSection,
@@ -26110,9 +26153,10 @@ function SizeResultView({
26110
26153
  ) });
26111
26154
  }
26112
26155
  const allowAddToBag = options?.allowAddToBag !== false;
26156
+ const showContinue = options?.showContinue !== false;
26113
26157
  if (allowAddToBag && canAddToBag) {
26114
- return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-v2-action-group", children: [
26115
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
26158
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `ps-tryon-v2-action-group${!showContinue ? " ps-tryon-v2-action-group-single" : ""}`, children: [
26159
+ showContinue && /* @__PURE__ */ jsxRuntimeExports.jsxs(
26116
26160
  "button",
26117
26161
  {
26118
26162
  className: "ps-tryon-v2-cta ps-tryon-v2-cta-secondary",
@@ -26141,6 +26185,9 @@ function SizeResultView({
26141
26185
  )
26142
26186
  ] });
26143
26187
  }
26188
+ if (!showContinue) {
26189
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-v2-action-group ps-tryon-v2-action-group-single", "aria-hidden": "true" });
26190
+ }
26144
26191
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(
26145
26192
  "button",
26146
26193
  {
@@ -26177,13 +26224,13 @@ function SizeResultView({
26177
26224
  return /^standard(?:\s+size)?$/i.test(cleaned);
26178
26225
  });
26179
26226
  if (standardIdx >= 0) return standardIdx;
26180
- const recommended = String(sizingResult?.recommendedSize || "").trim();
26181
- if (recommended) {
26227
+ const suggested = String(sizingResult?.recommendedSize || "").trim();
26228
+ if (suggested) {
26182
26229
  const byRecommendedValue = sizeGuide.headers.findIndex((h, c) => {
26183
26230
  const cleaned = h.trim().replace(/\(.*?\)/g, "").trim();
26184
26231
  const sizeLikeHeader = /^(size|sizes|taglia|größe|taille|standard)$/i.test(cleaned);
26185
26232
  const alphaSizeColumn = rows.some((r2) => /^(XXS|XS|S|M|L|XL|XXL|XXXL|[3-9]XL|ONE SIZE)$/i.test(cellVal(r2, c, h)));
26186
- return (sizeLikeHeader || alphaSizeColumn) && rows.some((r2) => cellVal(r2, c, h) === recommended);
26233
+ return (sizeLikeHeader || alphaSizeColumn) && rows.some((r2) => cellVal(r2, c, h) === suggested);
26187
26234
  });
26188
26235
  if (byRecommendedValue >= 0) return byRecommendedValue;
26189
26236
  }
@@ -26481,7 +26528,7 @@ function SizeResultView({
26481
26528
  const profileCompletionCta = showProfileCompletionCta && onProfileCompletionCta ? { onClick: onProfileCompletionCta } : null;
26482
26529
  const carouselItems = productCarouselItems?.filter((item) => item.image) ?? [];
26483
26530
  const hasCarousel = carouselItems.length > 0 || !!(productImages && productImages.length > 0);
26484
- const isAccessory = measurementType === "face" || measurementType === "head" || measurementType === "wrist";
26531
+ const isAccessory = isAccessoryProduct || measurementType === "face" || measurementType === "head" || measurementType === "wrist";
26485
26532
  const suppressFitOverlayActions = isAccessory || measurementType === "foot";
26486
26533
  const noFit = sizingResult?.found === false;
26487
26534
  const guideOnlyResult = !!(sizingResult?.guideOnly || sizingResult?.oneSize);
@@ -26583,7 +26630,7 @@ function SizeResultView({
26583
26630
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-sr-img-col", children: /* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: productImage, alt: productTitle, className: "ps-tryon-sr-product-img" }) }),
26584
26631
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-sr-right-col", style: { display: "flex", flexDirection: "column", alignItems: "center", justifyContent: "center", gap: "0.8vw" }, children: [
26585
26632
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-size-loading-spinner" }),
26586
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { style: { color: "var(--ps-text-muted)", fontSize: "0.8vw" }, children: t2("Generating your size recommendation...") })
26633
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { style: { color: "var(--ps-text-muted)", fontSize: "0.8vw" }, children: t2("Generating your suggested size...") })
26587
26634
  ] })
26588
26635
  ] }),
26589
26636
  isMobile && isSnapProcessing && previewUrl && /* @__PURE__ */ jsxRuntimeExports.jsx(
@@ -26655,7 +26702,7 @@ function SizeResultView({
26655
26702
  })(),
26656
26703
  onBack: () => setActiveSection(null),
26657
26704
  onContinue: handleContinueAction,
26658
- resultActionNode: canAddToBag || isHistoryResult || !!resultImageUrl || vtoExcluded ? renderShoppingCta() : void 0,
26705
+ resultActionNode: canAddToBag || isHistoryResult || !!resultImageUrl || vtoExcluded ? renderShoppingCta({ showContinue: false }) : void 0,
26659
26706
  internationalSizes: entry.secResult?.internationalSizes,
26660
26707
  productImage: tryOnProcessing && previewUrl ? previewUrl : resultImageUrl || productImage,
26661
26708
  productTitle,
@@ -26756,7 +26803,7 @@ function SizeResultView({
26756
26803
  })(),
26757
26804
  onBack: () => setActiveSection(null),
26758
26805
  onContinue: handleContinueAction,
26759
- resultActionNode: canAddToBag || isHistoryResult || !!resultImageUrl || vtoExcluded ? renderShoppingCta() : void 0,
26806
+ resultActionNode: canAddToBag || isHistoryResult || !!resultImageUrl || vtoExcluded ? renderShoppingCta({ showContinue: false }) : void 0,
26760
26807
  internationalSizes: entry.secResult?.internationalSizes,
26761
26808
  tryOnProcessing,
26762
26809
  tryOnStartedAt,
@@ -26893,9 +26940,9 @@ function SizeResultView({
26893
26940
  resultImageUrl && !tryOnProcessing && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-sr-img-actions", children: /* @__PURE__ */ jsxRuntimeExports.jsx(TryOnExperienceFeedback, { t: t2, onSubmit: onTryOnFeedbackSubmit }) })
26894
26941
  ] })
26895
26942
  ] }),
26896
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-v2-panel ps-tryon-v2-result-panel", children: [
26943
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-v2-panel ps-tryon-v2-result-panel ps-tryon-v2-multi-result-panel", children: [
26897
26944
  profileCompletionCta ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-v2-profile-head ps-expanded", children: /* @__PURE__ */ jsxRuntimeExports.jsx(ProfileCompletionCta, { onClick: profileCompletionCta.onClick, placement: "header", t: t2 }) }) : /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-v2-result-copy", children: [
26898
- /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "ps-tryon-v2-title", children: t2("Your Size Recommendation") }),
26945
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "ps-tryon-v2-title", children: t2("Your Suggested Size") }),
26899
26946
  /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "ps-tryon-v2-subtitle", children: t2("Tap any section for detailed breakdown") })
26900
26947
  ] }),
26901
26948
  mismatchNotice,
@@ -26926,7 +26973,7 @@ function SizeResultView({
26926
26973
  "span",
26927
26974
  {
26928
26975
  className: `ps-tryon-sr-card-v2-rec-pill${isOverridden ? " is-overridden" : ""}`,
26929
- children: isOverridden ? t2("YOUR SELECTION") : t2("RECOMMENDED")
26976
+ children: isOverridden ? t2("YOUR SELECTION") : t2("SUGGESTED")
26930
26977
  }
26931
26978
  ),
26932
26979
  /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "ps-tryon-sr-card-v2-view", children: [
@@ -27012,7 +27059,7 @@ function SizeResultView({
27012
27059
  backLabel: t2("Back"),
27013
27060
  internationalSizes: singleInternationalSizes,
27014
27061
  onTryOn: canAddToBag || isHistoryResult || resultImageUrl || vtoExcluded ? void 0 : handleSingleTryOn,
27015
- resultActionNode: canAddToBag || isHistoryResult || !!resultImageUrl || vtoExcluded ? renderShoppingCta() : void 0,
27062
+ resultActionNode: canAddToBag || isHistoryResult || !!resultImageUrl || vtoExcluded ? renderShoppingCta({ showContinue: false }) : void 0,
27016
27063
  continueLabel: resultImageUrl ? resolvedContinueShoppingLabel : void 0,
27017
27064
  tryOnProcessing,
27018
27065
  tryOnStartedAt,
@@ -27109,7 +27156,7 @@ function SizeResultView({
27109
27156
  backLabel: t2("Back"),
27110
27157
  internationalSizes: singleInternationalSizes,
27111
27158
  onTryOn: canAddToBag || isHistoryResult || resultImageUrl || vtoExcluded ? void 0 : handleSingleTryOn,
27112
- resultActionNode: canAddToBag || isHistoryResult || !!resultImageUrl || vtoExcluded ? renderShoppingCta() : void 0,
27159
+ resultActionNode: canAddToBag || isHistoryResult || !!resultImageUrl || vtoExcluded ? renderShoppingCta({ showContinue: false }) : void 0,
27113
27160
  continueLabel: resultImageUrl ? resolvedContinueShoppingLabel : void 0,
27114
27161
  tryOnProcessing,
27115
27162
  tryOnStartedAt,
@@ -27131,10 +27178,10 @@ function SizeResultView({
27131
27178
  const rawLabelText = pendingCustomSizes[sectionName]?.displayLabel || singleResult.recommendedSize || singleResult.sizeLabel || (guideOnlyResult ? t2("One Size") : "—");
27132
27179
  const labelText = measurementType === "foot" ? formatShoeSizeLabel(rawLabelText, shoeUserGender) : rawLabelText;
27133
27180
  const isLong = labelText.length > 12;
27134
- const badgeText = guideOnlyResult ? t2("SIZE GUIDE") : pendingCustomSizes[sectionName] ? t2("YOUR SELECTION") : t2("RECOMMENDED");
27181
+ const badgeText = guideOnlyResult ? t2("SIZE GUIDE") : pendingCustomSizes[sectionName] ? t2("YOUR SELECTION") : t2("SUGGESTED");
27135
27182
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
27136
27183
  profileCompletionCta ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-v2-result-head", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-v2-profile-head ps-expanded", children: /* @__PURE__ */ jsxRuntimeExports.jsx(ProfileCompletionCta, { onClick: profileCompletionCta.onClick, placement: "header", t: t2 }) }) }) : /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-tryon-v2-result-copy ps-single-result-copy", children: [
27137
- /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "ps-tryon-v2-title", children: t2("Your Size Recommendation") }),
27184
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "ps-tryon-v2-title", children: t2("Your Suggested Size") }),
27138
27185
  /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "ps-tryon-v2-subtitle", children: t2("Tap the card for detailed breakdown") })
27139
27186
  ] }),
27140
27187
  profileCompletionCta ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-tryon-v2-sep" }) : null,
@@ -27271,7 +27318,7 @@ function SizeResultView({
27271
27318
  /* @__PURE__ */ jsxRuntimeExports.jsx("li", { children: t2("Leave space above your head") }),
27272
27319
  /* @__PURE__ */ jsxRuntimeExports.jsx("li", { children: t2("Good lighting, plain background") })
27273
27320
  ] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
27274
- /* @__PURE__ */ jsxRuntimeExports.jsx("li", { children: t2("Form-fitting clothing is recommended") }),
27321
+ /* @__PURE__ */ jsxRuntimeExports.jsx("li", { children: t2("Wear fitted, simple clothing") }),
27275
27322
  /* @__PURE__ */ jsxRuntimeExports.jsx("li", { children: t2("Standing 2-3 meters from camera") }),
27276
27323
  /* @__PURE__ */ jsxRuntimeExports.jsx("li", { children: t2("Neutral background with good lighting") })
27277
27324
  ] }) })
@@ -27807,7 +27854,7 @@ function PhotoGuideView({
27807
27854
  /* @__PURE__ */ jsxRuntimeExports.jsx("li", { children: t2("Leave space above your head") }),
27808
27855
  /* @__PURE__ */ jsxRuntimeExports.jsx("li", { children: t2("Good lighting, plain background") })
27809
27856
  ] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
27810
- /* @__PURE__ */ jsxRuntimeExports.jsx("li", { children: t2("Form-fitting clothing is recommended") }),
27857
+ /* @__PURE__ */ jsxRuntimeExports.jsx("li", { children: t2("Wear fitted, simple clothing") }),
27811
27858
  /* @__PURE__ */ jsxRuntimeExports.jsx("li", { children: t2("Standing 2-3 meters from camera") }),
27812
27859
  /* @__PURE__ */ jsxRuntimeExports.jsx("li", { children: t2("Neutral background with good lighting") })
27813
27860
  ] }) })
@@ -27987,7 +28034,7 @@ function ProcessingView({
27987
28034
  }
27988
28035
  }, []);
27989
28036
  const aiFacts = [
27990
- t2("Our model is analyzing 150+ body landmarks for your size recommendation"),
28037
+ t2("Our model is analyzing 150+ body landmarks for your size suggestion"),
27991
28038
  t2("Calibrating fabric drape against your body proportions"),
27992
28039
  t2("Cross-checking fit against millions of garment patterns"),
27993
28040
  t2("Rendering shadows and highlights to match your photo's lighting")
@@ -28227,7 +28274,7 @@ function MiniSelect$1({
28227
28274
  isOpen,
28228
28275
  onToggle,
28229
28276
  onSelect,
28230
- direction = "down"
28277
+ direction = "up"
28231
28278
  }) {
28232
28279
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-bp-mini-select", "data-open": isOpen ? "true" : "false", "data-dir": direction, children: [
28233
28280
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
@@ -29661,10 +29708,10 @@ function CreateProfileWizard({ onSave, onCancel, initialMode, initialDraft, dire
29661
29708
  mode === "image" && imageStep === "calculating" && (() => {
29662
29709
  const stages = [
29663
29710
  { title: t2("DETECTING POSE"), desc: t2("Identifying body landmarks from your photo.") },
29664
- { title: t2("SCANNING FRAME"), desc: t2("Our AI is mapping your proportions for a size recommendation.") },
29711
+ { title: t2("SCANNING FRAME"), desc: t2("Our AI is mapping your proportions for a size suggestion.") },
29665
29712
  { title: t2("ANALYZING BODY"), desc: t2("Measuring shoulders, chest, waist and hips.") },
29666
29713
  { title: t2("MATCHING SIZE"), desc: t2("Comparing your measurements to the size guide.") },
29667
- { title: t2("FINALIZING RESULT"), desc: t2("Almost done — preparing your recommendation.") }
29714
+ { title: t2("FINALIZING RESULT"), desc: t2("Almost done — preparing your suggested size.") }
29668
29715
  ];
29669
29716
  const stage = stages[Math.min(scanStageIdx, stages.length - 1)] ?? stages[0];
29670
29717
  return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-cpw-fade-in", style: { display: "flex", flexDirection: "column", flex: 1, overflow: "auto" }, children: estimating ? /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { display: "flex", gap: "1.2vw", padding: "1.5vw", flex: 1 }, children: [
@@ -30444,7 +30491,7 @@ function BasicsStepMobile({
30444
30491
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-bpm-root", children: [
30445
30492
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-bpm-header", children: [
30446
30493
  /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "ps-bpm-title", children: t2("Body Measurements") }),
30447
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "ps-bpm-subtitle", children: t2("Enter your details for a bespoke size recommendation") })
30494
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "ps-bpm-subtitle", children: t2("Enter your details for a bespoke size suggestion") })
30448
30495
  ] }),
30449
30496
  activeProfileName && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-bp-profile-card", children: [
30450
30497
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-bp-profile-card-copy", children: [
@@ -31179,7 +31226,7 @@ function MiniSelect({
31179
31226
  isOpen,
31180
31227
  onToggle,
31181
31228
  onSelect,
31182
- direction = "down"
31229
+ direction = "up"
31183
31230
  }) {
31184
31231
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-bp-mini-select", "data-open": isOpen ? "true" : "false", "data-dir": direction, children: [
31185
31232
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
@@ -31990,7 +32037,8 @@ function BodyProfileView({
31990
32037
  setBandSize(null);
31991
32038
  setCupSize(null);
31992
32039
  setInlineBraOpen(null);
31993
- }
32040
+ },
32041
+ direction: "up"
31994
32042
  }
31995
32043
  ) })
31996
32044
  ] }),
@@ -32007,7 +32055,8 @@ function BodyProfileView({
32007
32055
  onSelect: (v2) => {
32008
32056
  setBandSize(v2);
32009
32057
  setInlineBraOpen(null);
32010
- }
32058
+ },
32059
+ direction: "up"
32011
32060
  }
32012
32061
  ) })
32013
32062
  ] }),
@@ -32066,6 +32115,7 @@ function BodyProfileView({
32066
32115
  const analyzeDisabled = analyzeMissing.length > 0;
32067
32116
  const analyzeLabel = analyzeDisabled ? analyzeMissing[0] ?? t2("Analyze My Size") : t2("Analyze My Size");
32068
32117
  const compactHeightWeightAccessory = simplePhotoOnly && simpleAccessoryLayout && !isShoeReferenceMode;
32118
+ const maleStandardPhotoDetails = !isWomen && !simplePhotoOnly && !isShoeReferenceMode;
32069
32119
  if (isMobile) {
32070
32120
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-bp-wrapper", children: [
32071
32121
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-bp-scan-progress", children: [
@@ -32245,7 +32295,7 @@ function BodyProfileView({
32245
32295
  overflow: "hidden"
32246
32296
  },
32247
32297
  children: [
32248
- !photoPreview && /* @__PURE__ */ jsxRuntimeExports.jsxs(
32298
+ !photoPreview && !compactHeightWeightAccessory && !maleStandardPhotoDetails && /* @__PURE__ */ jsxRuntimeExports.jsxs(
32249
32299
  "button",
32250
32300
  {
32251
32301
  type: "button",
@@ -32262,7 +32312,7 @@ function BodyProfileView({
32262
32312
  ]
32263
32313
  }
32264
32314
  ),
32265
- !photoPreview && photoHelpOpen && /* @__PURE__ */ jsxRuntimeExports.jsxs(
32315
+ !photoPreview && !compactHeightWeightAccessory && !maleStandardPhotoDetails && photoHelpOpen && /* @__PURE__ */ jsxRuntimeExports.jsxs(
32266
32316
  "div",
32267
32317
  {
32268
32318
  role: "dialog",
@@ -32556,19 +32606,118 @@ function BodyProfileView({
32556
32606
  flex: compactHeightWeightAccessory ? "0 1 min(34vw, 360px)" : 1,
32557
32607
  display: "flex",
32558
32608
  flexDirection: "column",
32559
- justifyContent: compactHeightWeightAccessory ? "center" : "flex-start",
32609
+ justifyContent: "flex-start",
32560
32610
  position: "relative",
32561
- gap: compactHeightWeightAccessory ? "1.1vw" : "0.8vw",
32611
+ gap: compactHeightWeightAccessory ? "0.8vw" : "0.8vw",
32562
32612
  minWidth: compactHeightWeightAccessory ? "280px" : void 0
32563
32613
  }, children: isShoeReferenceMode ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ps-shoe-ref-desktop", children: renderShoeReferenceFields() }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
32564
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `ps-bp-photo-details-head${compactHeightWeightAccessory ? " ps-bp-photo-details-head-simple" : ""}`, children: [
32565
- /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { children: t2("Body details") }),
32566
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-bp-system-toggle ps-bp-system-toggle-compact", children: [
32567
- /* @__PURE__ */ jsxRuntimeExports.jsx("button", { className: `ps-bp-system-btn${!isImperialMode ? " ps-bp-system-active" : ""}`, onClick: photoSwitchToMetric, type: "button", children: t2("Metric") }),
32568
- /* @__PURE__ */ jsxRuntimeExports.jsx("button", { className: `ps-bp-system-btn${isImperialMode ? " ps-bp-system-active" : ""}`, onClick: photoSwitchToImperial, type: "button", children: t2("Imperial") })
32569
- ] })
32614
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
32615
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `ps-bp-photo-details-head${compactHeightWeightAccessory || maleStandardPhotoDetails ? " ps-bp-photo-details-head-simple" : ""}`, children: [
32616
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { children: t2("Body details") }),
32617
+ compactHeightWeightAccessory || maleStandardPhotoDetails ? /* @__PURE__ */ jsxRuntimeExports.jsxs(
32618
+ "button",
32619
+ {
32620
+ type: "button",
32621
+ onClick: (e) => {
32622
+ e.stopPropagation();
32623
+ setPhotoHelpOpen((v2) => !v2);
32624
+ },
32625
+ "aria-label": t2("How to take a good photo"),
32626
+ title: t2("How to take a good photo"),
32627
+ className: `ps-bp-photo-help-chip${photoHelpOpen ? " ps-active" : ""}`,
32628
+ style: { position: "static", maxWidth: "none", flexShrink: 0 },
32629
+ children: [
32630
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "ps-bp-photo-help-chip-mark", "aria-hidden": "true", children: "?" }),
32631
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: t2("How to take a good photo") })
32632
+ ]
32633
+ }
32634
+ ) : /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-bp-system-toggle ps-bp-system-toggle-compact", children: [
32635
+ /* @__PURE__ */ jsxRuntimeExports.jsx("button", { className: `ps-bp-system-btn${!isImperialMode ? " ps-bp-system-active" : ""}`, onClick: photoSwitchToMetric, type: "button", children: t2("Metric") }),
32636
+ /* @__PURE__ */ jsxRuntimeExports.jsx("button", { className: `ps-bp-system-btn${isImperialMode ? " ps-bp-system-active" : ""}`, onClick: photoSwitchToImperial, type: "button", children: t2("Imperial") })
32637
+ ] })
32638
+ ] }),
32639
+ (compactHeightWeightAccessory || maleStandardPhotoDetails) && /* @__PURE__ */ jsxRuntimeExports.jsx("p", { style: { margin: "0.2vw 0 0", fontSize: "0.65vw", color: "var(--ps-text-muted)" }, children: t2("These calibrate the AI — all required.") })
32640
+ ] }),
32641
+ (compactHeightWeightAccessory || maleStandardPhotoDetails) && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `ps-bp-system-toggle ps-bp-system-toggle-compact${maleStandardPhotoDetails ? " ps-bp-system-toggle-large" : ""}`, style: { alignSelf: "center", marginTop: "1.2vw" }, children: [
32642
+ /* @__PURE__ */ jsxRuntimeExports.jsx("button", { className: `ps-bp-system-btn${!isImperialMode ? " ps-bp-system-active" : ""}`, onClick: photoSwitchToMetric, type: "button", children: t2("Metric") }),
32643
+ /* @__PURE__ */ jsxRuntimeExports.jsx("button", { className: `ps-bp-system-btn${isImperialMode ? " ps-bp-system-active" : ""}`, onClick: photoSwitchToImperial, type: "button", children: t2("Imperial") })
32570
32644
  ] }),
32571
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { marginTop: compactHeightWeightAccessory ? "0.35vw" : "0.15vw", marginBottom: 0, minHeight: 0 }, children: [
32645
+ (compactHeightWeightAccessory || maleStandardPhotoDetails) && photoHelpOpen && /* @__PURE__ */ jsxRuntimeExports.jsxs(
32646
+ "div",
32647
+ {
32648
+ role: "dialog",
32649
+ "aria-label": t2("How to take the best photo"),
32650
+ style: {
32651
+ position: "absolute",
32652
+ top: "2.2vw",
32653
+ right: 0,
32654
+ width: "min(360px, 22vw)",
32655
+ background: "#FFFFFF",
32656
+ border: "1px solid var(--ps-border-subtle)",
32657
+ borderRadius: "0.8vw",
32658
+ boxShadow: "0 20px 40px -12px rgba(17,24,39,0.25), 0 8px 16px -8px rgba(17,24,39,0.15)",
32659
+ padding: "0.8vw 1vw",
32660
+ display: "flex",
32661
+ flexDirection: "column",
32662
+ gap: "0.6vw",
32663
+ maxHeight: "min(70dvh, 520px)",
32664
+ overflowY: "auto",
32665
+ zIndex: 5
32666
+ },
32667
+ children: [
32668
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { display: "flex", alignItems: "center", justifyContent: "space-between" }, children: [
32669
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { style: { fontSize: "0.8vw", fontWeight: 700, color: "var(--ps-text-primary)" }, children: t2("How to take the best photo") }),
32670
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
32671
+ "button",
32672
+ {
32673
+ type: "button",
32674
+ onClick: () => setPhotoHelpOpen(false),
32675
+ "aria-label": t2("Close"),
32676
+ style: { width: "1.4vw", height: "1.4vw", borderRadius: "50%", background: "transparent", border: "none", color: "var(--ps-text-muted)", cursor: "pointer", fontSize: "1vw", lineHeight: 1 },
32677
+ children: "×"
32678
+ }
32679
+ )
32680
+ ] }),
32681
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { background: "#ddfbe7", borderRadius: "0.5vw", padding: "0.55vw 0.75vw" }, children: [
32682
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { color: "#1c9d4c", fontSize: "0.7vw", fontWeight: 700, marginBottom: "0.3vw" }, children: [
32683
+ "✓ ",
32684
+ t2("Do")
32685
+ ] }),
32686
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { fontSize: "0.6vw", color: "var(--ps-text-primary)", lineHeight: 1.6 }, children: [
32687
+ t2("Stand facing the camera with your full body in frame"),
32688
+ /* @__PURE__ */ jsxRuntimeExports.jsx("br", {}),
32689
+ t2("Use natural or even lighting"),
32690
+ /* @__PURE__ */ jsxRuntimeExports.jsx("br", {}),
32691
+ t2("Wear fitted, simple clothing"),
32692
+ /* @__PURE__ */ jsxRuntimeExports.jsx("br", {}),
32693
+ t2("Choose a plain background")
32694
+ ] })
32695
+ ] }),
32696
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { background: "#fee2e2", borderRadius: "0.5vw", padding: "0.55vw 0.75vw" }, children: [
32697
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { color: "#dc2626", fontSize: "0.7vw", fontWeight: 700, marginBottom: "0.3vw" }, children: [
32698
+ "✕ ",
32699
+ t2("Don't")
32700
+ ] }),
32701
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { fontSize: "0.6vw", color: "var(--ps-text-primary)", lineHeight: 1.6 }, children: [
32702
+ t2("Don't wear loose, baggy, or layered clothing"),
32703
+ /* @__PURE__ */ jsxRuntimeExports.jsx("br", {}),
32704
+ t2("Don't sit, pose, or bend your body"),
32705
+ /* @__PURE__ */ jsxRuntimeExports.jsx("br", {}),
32706
+ t2("Don't use strong backlighting")
32707
+ ] })
32708
+ ] }),
32709
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { background: "#dbeafe", borderRadius: "0.5vw", padding: "0.55vw 0.75vw", fontSize: "0.58vw", color: "var(--ps-text-primary)", lineHeight: 1.5 }, children: [
32710
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("strong", { children: [
32711
+ t2("Quick Tip"),
32712
+ ":"
32713
+ ] }),
32714
+ " ",
32715
+ t2("The simpler your photo is, the more accurate your virtual try-on results will be.")
32716
+ ] })
32717
+ ]
32718
+ }
32719
+ ),
32720
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { marginTop: compactHeightWeightAccessory || maleStandardPhotoDetails ? "auto" : "0.15vw", marginBottom: compactHeightWeightAccessory || maleStandardPhotoDetails ? "auto" : 0, minHeight: 0 }, children: [
32572
32721
  activeProfileName && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-bp-profile-card ps-bp-profile-card-compact", children: [
32573
32722
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ps-bp-profile-card-copy", children: [
32574
32723
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "ps-bp-profile-card-eyebrow", children: t2("Active Profile") }),
@@ -32612,7 +32761,8 @@ function BodyProfileView({
32612
32761
  setBandSize(null);
32613
32762
  setCupSize(null);
32614
32763
  setInlineBraOpen(null);
32615
- }
32764
+ },
32765
+ direction: "up"
32616
32766
  }
32617
32767
  ) })
32618
32768
  ] }),
@@ -32629,7 +32779,8 @@ function BodyProfileView({
32629
32779
  onSelect: (v2) => {
32630
32780
  setBandSize(v2);
32631
32781
  setInlineBraOpen(null);
32632
- }
32782
+ },
32783
+ direction: "up"
32633
32784
  }
32634
32785
  ) })
32635
32786
  ] }),
@@ -35699,7 +35850,7 @@ function PrimeStyleTryonInner({
35699
35850
  const body = await resp.text().catch(() => "");
35700
35851
  console.error("[PS-SDK] face-recommend failed:", resp.status, body);
35701
35852
  await minVisible;
35702
- setErrorMessage(t2("Unable to get size recommendation. Please try again."));
35853
+ setErrorMessage(t2("Unable to get a size suggestion. Please try again."));
35703
35854
  setView("error");
35704
35855
  setEstimationDone(true);
35705
35856
  }
@@ -35830,7 +35981,7 @@ function PrimeStyleTryonInner({
35830
35981
  } else {
35831
35982
  const errBody = await res.text().catch(() => "");
35832
35983
  console.error("[PS-SDK] Sizing recommend failed:", res.status, errBody);
35833
- setErrorMessage(t2("Unable to get size recommendation. Please try again."));
35984
+ setErrorMessage(t2("Unable to get a size suggestion. Please try again."));
35834
35985
  setView("error");
35835
35986
  setEstimationDone(true);
35836
35987
  }
@@ -36064,7 +36215,7 @@ function PrimeStyleTryonInner({
36064
36215
  await Promise.all([minVisible2, landmarksVisibleMin || Promise.resolve()]);
36065
36216
  const errBody = await recRes.text().catch(() => "");
36066
36217
  console.error("[ps-sdk] face-recommend failed:", recRes.status, errBody);
36067
- setErrorMessage(t2("Unable to get size recommendation. Please try manual measurements."));
36218
+ setErrorMessage(t2("Unable to get a size suggestion. Please try manual measurements."));
36068
36219
  setEstimationDone(true);
36069
36220
  setSizingLoading(false);
36070
36221
  setView("error");
@@ -36073,7 +36224,7 @@ function PrimeStyleTryonInner({
36073
36224
  } catch (err) {
36074
36225
  console.error("[ps-sdk] face-recommend failed:", err);
36075
36226
  await Promise.all([minVisible2, landmarksVisibleMin || Promise.resolve()]);
36076
- setErrorMessage(t2("Unable to get size recommendation. Please try manual measurements."));
36227
+ setErrorMessage(t2("Unable to get a size suggestion. Please try manual measurements."));
36077
36228
  setEstimationDone(true);
36078
36229
  setSizingLoading(false);
36079
36230
  setView("error");
@@ -36204,7 +36355,7 @@ function PrimeStyleTryonInner({
36204
36355
  } else {
36205
36356
  const errBody = await recRes.text().catch(() => "");
36206
36357
  console.error("[ps-sdk] Sizing recommend failed:", recRes.status, errBody);
36207
- setErrorMessage(t2("Unable to get size recommendation. Please try manual measurements."));
36358
+ setErrorMessage(t2("Unable to get a size suggestion. Please try manual measurements."));
36208
36359
  setEstimationDone(true);
36209
36360
  setSizingLoading(false);
36210
36361
  setView("error");
@@ -37195,6 +37346,7 @@ function PrimeStyleTryonInner({
37195
37346
  bodyLandmarks,
37196
37347
  faceLandmarks,
37197
37348
  measurementType: measurementType === "body-basic" ? "body" : measurementType,
37349
+ isAccessoryProduct: measurementType === "body-basic" || measurementType === "face" || measurementType === "head" || measurementType === "wrist",
37198
37350
  activeSection,
37199
37351
  setActiveSection,
37200
37352
  onResetTryOn: () => {