@primestyleai/tryon 4.6.0 → 4.7.0

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.
@@ -278,31 +278,31 @@ function getApiUrl(override) {
278
278
  const STYLES = `
279
279
  .ps-tryon-root {
280
280
  display: inline-block; visibility: visible !important;
281
- --ps-accent: #bb945c;
282
- --ps-accent-hover: #a07d4e;
283
- --ps-accent-light: #d6ba7d;
284
- --ps-text-primary: #fff;
285
- --ps-text-secondary: #999;
286
- --ps-text-muted: #666;
287
- --ps-text-dim: #888;
288
- --ps-border-color: #333;
289
- --ps-border-subtle: #282828;
290
- --ps-bg-primary: #111211;
291
- --ps-bg-secondary: #1a1b1a;
292
- --ps-bg-tertiary: #222;
293
- --ps-input-bg: transparent;
294
- --ps-input-border: #333;
281
+ --ps-accent: #2154EF;
282
+ --ps-accent-hover: #193EDC;
283
+ --ps-accent-light: #BED6FF;
284
+ --ps-text-primary: #1C1D1E;
285
+ --ps-text-secondary: #454545;
286
+ --ps-text-muted: #84898C;
287
+ --ps-text-dim: #696E71;
288
+ --ps-border-color: #E7E7E7;
289
+ --ps-border-subtle: #F0F0F0;
290
+ --ps-bg-primary: #FFFFFF;
291
+ --ps-bg-secondary: #F8FAFF;
292
+ --ps-bg-tertiary: #F0F0F0;
293
+ --ps-input-bg: #FFFFFF;
294
+ --ps-input-border: #E7E7E7;
295
295
  --ps-input-focus-border: var(--ps-accent);
296
- --ps-error-color: #ef4444;
297
- --ps-success-color: #4ade80;
298
- --ps-warning-color: #f59e0b;
296
+ --ps-error-color: #E7000B;
297
+ --ps-success-color: #1C9D4C;
298
+ --ps-warning-color: #DF8400;
299
299
  --ps-logo-height: 2.8vw;
300
300
  }
301
301
 
302
302
  .ps-tryon-btn {
303
303
  display: inline-flex; align-items: center; gap: 0.42vw;
304
304
  padding: var(--ps-btn-padding, 0.63vw 1.25vw);
305
- background: var(--ps-btn-bg, var(--ps-accent)); color: var(--ps-btn-color, #111211);
305
+ background: var(--ps-btn-bg, var(--ps-accent)); color: var(--ps-btn-color, #FFFFFF);
306
306
  font-family: var(--ps-btn-font, system-ui, -apple-system, sans-serif);
307
307
  font-size: var(--ps-btn-font-size, 0.73vw); font-weight: var(--ps-btn-font-weight, 600);
308
308
  border: var(--ps-btn-border, none); border-radius: var(--ps-btn-radius, 0.42vw);
@@ -326,11 +326,11 @@ const STYLES = `
326
326
  @keyframes ps-fade-in { from { opacity: 0; } to { opacity: 1; } }
327
327
 
328
328
  .ps-tryon-modal {
329
- background: var(--ps-modal-bg, #111211); color: var(--ps-modal-color, #fff);
329
+ background: var(--ps-modal-bg, #FFFFFF); color: var(--ps-modal-color, #1C1D1E);
330
330
  border-radius: var(--ps-modal-radius, 0.83vw); width: var(--ps-modal-width, 100%);
331
331
  max-width: var(--ps-modal-max-width, 36vw); max-height: 92vh; overflow-y: auto;
332
332
  font-family: var(--ps-modal-font, system-ui, -apple-system, sans-serif);
333
- box-shadow: 0 1.3vw 2.6vw rgba(0,0,0,0.4); animation: ps-slide-up 0.3s ease;
333
+ box-shadow: 0 1.3vw 2.6vw rgba(0,0,0,0.08); animation: ps-slide-up 0.3s ease;
334
334
  scrollbar-width: thin; scrollbar-color: var(--ps-border-color) transparent;
335
335
  flex-shrink: 0;
336
336
  }
@@ -341,8 +341,8 @@ const STYLES = `
341
341
  /* Header */
342
342
  .ps-tryon-header {
343
343
  display: flex; align-items: center; justify-content: space-between;
344
- padding: 0.7vw 1.25vw; background: var(--ps-modal-header-bg, rgba(17,18,17,0.95));
345
- border-bottom: 1px solid rgba(255,255,255,0.04);
344
+ padding: 0.7vw 1.25vw; background: var(--ps-modal-header-bg, rgba(255,255,255,0.95));
345
+ border-bottom: 1px solid var(--ps-border-color);
346
346
  border-radius: var(--ps-modal-radius, 0.83vw) var(--ps-modal-radius, 0.83vw) 0 0;
347
347
  backdrop-filter: blur(12px);
348
348
  }
@@ -372,7 +372,7 @@ const STYLES = `
372
372
  background: none; border: none; color: var(--ps-modal-close-color, #999);
373
373
  cursor: pointer; border-radius: 0.31vw; transition: background 0.15s;
374
374
  }
375
- .ps-tryon-close:hover { background: rgba(255,255,255,0.1); }
375
+ .ps-tryon-close:hover { background: rgba(0,0,0,0.06); }
376
376
 
377
377
  /* Language switcher */
378
378
  .ps-tryon-lang-wrap { position: relative; z-index: 10; }
@@ -401,7 +401,7 @@ const STYLES = `
401
401
  background: var(--ps-bg-secondary); border: 1.5px solid var(--ps-border-color);
402
402
  border-radius: 0.73vw;
403
403
  box-shadow: 0 1vw 3vw rgba(0,0,0,0.5),
404
- 0 0 0 1px rgba(255,255,255,0.03);
404
+ 0 0 0 1px rgba(0,0,0,0.02);
405
405
  overflow: hidden;
406
406
  animation: ps-lang-open 0.2s ease both;
407
407
  }
@@ -421,7 +421,7 @@ const STYLES = `
421
421
  border-radius: 0.47vw; transition: all 0.15s ease;
422
422
  font-family: inherit; text-align: left;
423
423
  }
424
- .ps-tryon-lang-item:hover { background: rgba(255,255,255,0.06); color: var(--ps-text-primary); }
424
+ .ps-tryon-lang-item:hover { background: rgba(0,0,0,0.04); color: var(--ps-text-primary); }
425
425
  .ps-tryon-lang-item.ps-selected { background: rgba(187,148,92,0.1); color: var(--ps-accent); }
426
426
  .ps-tryon-lang-name {
427
427
  flex: 1; font-size: 0.73vw; font-weight: 500;
@@ -452,7 +452,7 @@ const STYLES = `
452
452
  .ps-tryon-welcome { text-align: center; padding: 0.5vw 0; }
453
453
  .ps-tryon-welcome-hero { margin-bottom: 1.3vw; }
454
454
  .ps-tryon-welcome-img-wrap { position: relative; display: inline-block; }
455
- .ps-tryon-welcome-product { width: 9vw; height: 10.5vw; object-fit: contain; background: var(--ps-modal-bg, #111211); border-radius: 0.9vw; border: 2px solid var(--ps-border-color); box-shadow: 0 8px 30px rgba(0,0,0,0.4); }
455
+ .ps-tryon-welcome-product { width: 9vw; height: 10.5vw; object-fit: contain; background: var(--ps-modal-bg, #FFFFFF); border-radius: 0.9vw; border: 2px solid var(--ps-border-color); box-shadow: 0 8px 30px rgba(0,0,0,0.08); }
456
456
  .ps-tryon-welcome-sparkle { position: absolute; top: -0.5vw; right: -0.5vw; width: 1.8vw; height: 1.8vw; background: var(--ps-accent); border-radius: 50%; display: flex; align-items: center; justify-content: center; animation: ps-float 3s ease-in-out infinite; }
457
457
  .ps-tryon-welcome-sparkle svg { stroke: #111; width: 0.9vw; height: 0.9vw; }
458
458
  @keyframes ps-float { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-4px); } }
@@ -711,16 +711,16 @@ const STYLES = `
711
711
  font-family: inherit;
712
712
  }
713
713
  .ps-tryon-v2-subtitle {
714
- font-size: 0.65vw; font-weight: 400; color: rgba(255,255,255,0.35);
714
+ font-size: 0.65vw; font-weight: 400; color: rgba(0,0,0,0.25);
715
715
  margin: 0.15vw 0 0; letter-spacing: 0.03em;
716
716
  }
717
717
  .ps-tryon-v2-unit-toggle {
718
718
  display: flex; gap: 0;
719
- border: 1px solid rgba(255,255,255,0.08); border-radius: 2vw; overflow: hidden;
719
+ border: 1px solid rgba(0,0,0,0.06); border-radius: 2vw; overflow: hidden;
720
720
  }
721
721
  .ps-tryon-v2-unit {
722
722
  background: none; border: none; padding: 0.22vw 0.7vw;
723
- font-size: 0.55vw; font-weight: 700; color: rgba(255,255,255,0.3);
723
+ font-size: 0.55vw; font-weight: 700; color: rgba(0,0,0,0.2);
724
724
  cursor: pointer; font-family: inherit; letter-spacing: 0.1em;
725
725
  transition: all 0.25s;
726
726
  }
@@ -739,8 +739,8 @@ const STYLES = `
739
739
  flex: 1; min-width: 0;
740
740
  display: flex; flex-direction: column; align-items: center; justify-content: center;
741
741
  gap: 0.2vw; padding: 0.4vw 0.2vw;
742
- border: 1.5px solid rgba(255,255,255,0.08); border-radius: 0.35vw;
743
- background: transparent; color: rgba(255,255,255,0.4);
742
+ border: 1.5px solid rgba(0,0,0,0.06); border-radius: 0.35vw;
743
+ background: transparent; color: rgba(0,0,0,0.3);
744
744
  cursor: pointer; font-family: inherit; transition: all 0.2s;
745
745
  }
746
746
  .ps-tryon-bodytype-card:hover {
@@ -764,8 +764,8 @@ const STYLES = `
764
764
  /* Profile select */
765
765
  .ps-tryon-v2-profile {
766
766
  width: 100%; padding: 0.3vw 0.5vw; margin-bottom: 0.6vw;
767
- background: rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.06);
768
- border-radius: 0.3vw; color: rgba(255,255,255,0.5);
767
+ background: rgba(0,0,0,0.02); border: 1px solid rgba(0,0,0,0.04);
768
+ border-radius: 0.3vw; color: rgba(0,0,0,0.08);
769
769
  font-size: 0.6vw; font-family: inherit; cursor: pointer; outline: none;
770
770
  appearance: none; -webkit-appearance: none;
771
771
  transition: border-color 0.2s;
@@ -776,7 +776,7 @@ const STYLES = `
776
776
  .ps-tryon-v2-fields {
777
777
  flex: 1; min-height: 0; overflow-y: auto;
778
778
  display: flex; flex-direction: column; gap: 0;
779
- scrollbar-width: thin; scrollbar-color: rgba(255,255,255,0.06) transparent;
779
+ scrollbar-width: thin; scrollbar-color: rgba(0,0,0,0.04) transparent;
780
780
  }
781
781
 
782
782
  /* Override float-row for inline look inside v2 */
@@ -791,7 +791,7 @@ const STYLES = `
791
791
  .ps-tryon-v2-fields .ps-tryon-sf-float-label {
792
792
  flex-shrink: 0;
793
793
  font-size: 0.75vw; font-weight: 500;
794
- color: rgba(255,255,255,0.5);
794
+ color: rgba(0,0,0,0.08);
795
795
  letter-spacing: 0.04em;
796
796
  margin: 0; white-space: nowrap;
797
797
  transition: color 0.25s;
@@ -801,7 +801,7 @@ const STYLES = `
801
801
  }
802
802
  .ps-tryon-v2-fields .ps-tryon-sf-input {
803
803
  flex: 1; border: none;
804
- border-bottom: 1.5px solid rgba(255,255,255,0.2);
804
+ border-bottom: 1.5px solid rgba(0,0,0,0.1);
805
805
  background: none; padding: 0.25vw 0;
806
806
  font-size: 1vw; font-weight: 400; color: #fff;
807
807
  font-family: inherit; outline: none;
@@ -812,7 +812,7 @@ const STYLES = `
812
812
  border-bottom-color: var(--ps-accent);
813
813
  }
814
814
  .ps-tryon-v2-fields .ps-tryon-sf-input::placeholder {
815
- color: rgba(255,255,255,0.15);
815
+ color: rgba(0,0,0,0.08);
816
816
  }
817
817
  .ps-tryon-v2-fields .ps-tryon-sf-input::-webkit-outer-spin-button,
818
818
  .ps-tryon-v2-fields .ps-tryon-sf-input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
@@ -867,7 +867,7 @@ const STYLES = `
867
867
  display: flex; align-items: center; gap: 0.6vw;
868
868
  padding: 0.6vw 0.7vw;
869
869
  background: rgba(255,255,255,0.02);
870
- border: 1px solid rgba(255,255,255,0.06);
870
+ border: 1px solid rgba(0,0,0,0.04);
871
871
  border-radius: 0.5vw;
872
872
  cursor: pointer; font-family: inherit;
873
873
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
@@ -898,13 +898,13 @@ const STYLES = `
898
898
  text-transform: capitalize;
899
899
  }
900
900
  .ps-tryon-sr-card-fit {
901
- font-size: 0.52vw; color: rgba(255,255,255,0.4); letter-spacing: 0.03em;
901
+ font-size: 0.52vw; color: rgba(0,0,0,0.3); letter-spacing: 0.03em;
902
902
  }
903
903
  .ps-tryon-sr-card-size {
904
904
  font-size: 1.3vw; font-weight: 300; color: var(--ps-accent);
905
905
  letter-spacing: -0.01em;
906
906
  }
907
- .ps-tryon-sr-card-row > svg { color: rgba(255,255,255,0.2); flex-shrink: 0; transition: color 0.2s; }
907
+ .ps-tryon-sr-card-row > svg { color: rgba(0,0,0,0.1); flex-shrink: 0; transition: color 0.2s; }
908
908
  .ps-tryon-sr-card-row:hover > svg { color: var(--ps-accent); }
909
909
 
910
910
  /* ── Result cards v2: bold, clear, unmissable ── */
@@ -916,7 +916,7 @@ const STYLES = `
916
916
  flex: 1 1 45%; max-width: 49%;
917
917
  display: flex; flex-direction: column; align-items: center; justify-content: center;
918
918
  text-align: center;
919
- background: rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.08);
919
+ background: rgba(0,0,0,0.02); border: 1px solid rgba(0,0,0,0.06);
920
920
  border-radius: 0.6vw; padding: 1vw 0.5vw;
921
921
  cursor: pointer; font-family: inherit;
922
922
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
@@ -935,7 +935,7 @@ const STYLES = `
935
935
  display: flex; flex-direction: column; align-items: center; gap: 0.15vw; z-index: 1;
936
936
  }
937
937
  .ps-tryon-sr-card-v2-label {
938
- font-size: 0.6vw; font-weight: 500; color: rgba(255,255,255,0.5);
938
+ font-size: 0.6vw; font-weight: 500; color: rgba(0,0,0,0.08);
939
939
  text-transform: uppercase; letter-spacing: 0.1em;
940
940
  }
941
941
  .ps-tryon-sr-card-v2-value {
@@ -956,7 +956,7 @@ const STYLES = `
956
956
  /* ── Photo guide v2 ── */
957
957
  .ps-tryon-guide-drop-v2 {
958
958
  width: 90%; height: 90%; border-radius: 0.6vw;
959
- border: 1.5px dashed rgba(255,255,255,0.12);
959
+ border: 1.5px dashed rgba(0,0,0,0.08);
960
960
  display: flex; flex-direction: column; align-items: center; justify-content: center;
961
961
  gap: 0.3vw; cursor: pointer; transition: all 0.25s;
962
962
  position: relative; overflow: hidden;
@@ -964,17 +964,17 @@ const STYLES = `
964
964
  .ps-tryon-guide-drop-v2:hover, .ps-tryon-guide-drop-v2.ps-drag {
965
965
  border-color: var(--ps-accent); background: rgba(187,148,92,0.04);
966
966
  }
967
- .ps-tryon-guide-drop-v2.ps-has { border-style: solid; border-color: rgba(255,255,255,0.08); cursor: default; }
968
- .ps-tryon-guide-drop-v2 svg { color: rgba(255,255,255,0.3); }
969
- .ps-tryon-guide-drop-v2-text { font-size: 0.8vw; font-weight: 500; color: rgba(255,255,255,0.6); }
970
- .ps-tryon-guide-drop-v2-hint { font-size: 0.55vw; color: rgba(255,255,255,0.25); }
967
+ .ps-tryon-guide-drop-v2.ps-has { border-style: solid; border-color: rgba(0,0,0,0.06); cursor: default; }
968
+ .ps-tryon-guide-drop-v2 svg { color: rgba(0,0,0,0.2); }
969
+ .ps-tryon-guide-drop-v2-text { font-size: 0.8vw; font-weight: 500; color: rgba(0,0,0,0.5); }
970
+ .ps-tryon-guide-drop-v2-hint { font-size: 0.55vw; color: rgba(0,0,0,0.15); }
971
971
  .ps-tryon-guide-drop-v2-img {
972
972
  width: 100%; height: 100%; object-fit: contain; border-radius: 0.5vw;
973
973
  }
974
974
  .ps-tryon-guide-drop-v2-remove {
975
975
  position: absolute; top: 0.4vw; right: 0.4vw;
976
976
  width: 1.4vw; height: 1.4vw; border-radius: 50%;
977
- background: rgba(0,0,0,0.7); border: 1px solid rgba(255,255,255,0.15);
977
+ background: rgba(0,0,0,0.7); border: 1px solid rgba(0,0,0,0.08);
978
978
  color: #fff; font-size: 0.6vw; cursor: pointer;
979
979
  display: flex; align-items: center; justify-content: center;
980
980
  transition: background 0.2s;
@@ -987,7 +987,7 @@ const STYLES = `
987
987
  }
988
988
  .ps-tryon-guide-v2-tip {
989
989
  display: flex; align-items: center; gap: 0.4vw;
990
- font-size: 0.65vw; color: rgba(255,255,255,0.6);
990
+ font-size: 0.65vw; color: rgba(0,0,0,0.5);
991
991
  }
992
992
  .ps-tryon-guide-v2-tip-icon {
993
993
  width: 1.2vw; height: 1.2vw; flex-shrink: 0;
@@ -1039,7 +1039,7 @@ const STYLES = `
1039
1039
  transition: color 0.2s; padding: 0;
1040
1040
  }
1041
1041
  .ps-tryon-v2-alt button:hover { color: var(--ps-accent); }
1042
- .ps-tryon-v2-alt span { color: rgba(255,255,255,0.1); font-size: 0.55vw; }
1042
+ .ps-tryon-v2-alt span { color: rgba(0,0,0,0.06); font-size: 0.55vw; }
1043
1043
 
1044
1044
  /* Active field row highlight (legacy) */
1045
1045
  .ps-tryon-sf-row-active { border-bottom-color: var(--ps-accent); }
@@ -1052,20 +1052,20 @@ const STYLES = `
1052
1052
  font-size: 1.1vw; font-weight: 300; color: var(--ps-text-primary);
1053
1053
  margin: 0 0 0.8vw; letter-spacing: 0.12em; text-transform: uppercase;
1054
1054
  text-align: left;
1055
- background: linear-gradient(90deg, #fff 0%, rgba(255,255,255,0.6) 100%);
1055
+ background: linear-gradient(90deg, #fff 0%, rgba(0,0,0,0.5) 100%);
1056
1056
  -webkit-background-clip: text; -webkit-text-fill-color: transparent;
1057
1057
  background-clip: text;
1058
1058
  }
1059
1059
  .ps-tryon-sf-unit-tabs {
1060
- display: inline-flex; gap: 0; border: 1px solid rgba(255,255,255,0.08);
1060
+ display: inline-flex; gap: 0; border: 1px solid rgba(0,0,0,0.06);
1061
1061
  border-radius: 0.3vw; overflow: hidden; margin-bottom: 1vw; align-self: flex-start;
1062
1062
  }
1063
1063
  .ps-tryon-sf-unit-tab {
1064
1064
  background: none; border: none; padding: 0.3vw 0.9vw;
1065
- font-size: 0.62vw; font-weight: 600; color: rgba(255,255,255,0.35); cursor: pointer;
1065
+ font-size: 0.62vw; font-weight: 600; color: rgba(0,0,0,0.25); cursor: pointer;
1066
1066
  font-family: inherit; transition: all 0.25s; letter-spacing: 0.06em; text-transform: uppercase;
1067
1067
  }
1068
- .ps-tryon-sf-unit-tab:hover { color: rgba(255,255,255,0.6); }
1068
+ .ps-tryon-sf-unit-tab:hover { color: rgba(0,0,0,0.5); }
1069
1069
  .ps-tryon-sf-unit-tab.ps-active { color: var(--ps-accent); background: rgba(187,148,92,0.08); }
1070
1070
 
1071
1071
  .ps-tryon-sf-profile-bar { margin-bottom: 0.7vw; }
@@ -1098,7 +1098,7 @@ const STYLES = `
1098
1098
  /* Label — subtle, editorial */
1099
1099
  .ps-tryon-sf-float-label {
1100
1100
  display: block;
1101
- font-size: 0.58vw; font-weight: 500; color: rgba(255,255,255,0.35);
1101
+ font-size: 0.58vw; font-weight: 500; color: rgba(0,0,0,0.25);
1102
1102
  letter-spacing: 0.1em; text-transform: uppercase;
1103
1103
  margin-bottom: 0.15vw;
1104
1104
  transition: color 0.3s cubic-bezier(0.4, 0, 0.2, 1);
@@ -1111,7 +1111,7 @@ const STYLES = `
1111
1111
  .ps-tryon-sf-input {
1112
1112
  width: 100%; box-sizing: border-box;
1113
1113
  background: none; border: none;
1114
- border-bottom: 1px solid rgba(255,255,255,0.1);
1114
+ border-bottom: 1px solid rgba(0,0,0,0.06);
1115
1115
  color: var(--ps-text-primary);
1116
1116
  font-size: 0.85vw; font-weight: 300; font-family: inherit;
1117
1117
  padding: 0.4vw 0; letter-spacing: 0.02em;
@@ -1123,12 +1123,12 @@ const STYLES = `
1123
1123
  border-bottom-color: var(--ps-accent);
1124
1124
  }
1125
1125
  .ps-tryon-sf-input:not(:placeholder-shown) {
1126
- border-bottom-color: rgba(255,255,255,0.2);
1126
+ border-bottom-color: rgba(0,0,0,0.1);
1127
1127
  }
1128
1128
  .ps-tryon-sf-input:focus:not(:placeholder-shown) {
1129
1129
  border-bottom-color: var(--ps-accent);
1130
1130
  }
1131
- .ps-tryon-sf-input::placeholder { color: rgba(255,255,255,0.12); }
1131
+ .ps-tryon-sf-input::placeholder { color: rgba(0,0,0,0.08); }
1132
1132
  .ps-tryon-sf-input::-webkit-outer-spin-button,
1133
1133
  .ps-tryon-sf-input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
1134
1134
 
@@ -1186,7 +1186,7 @@ const STYLES = `
1186
1186
  transition: color 0.25s; padding: 0.15vw 0; letter-spacing: 0.03em;
1187
1187
  }
1188
1188
  .ps-tryon-sf-switch-btn:hover { color: var(--ps-accent); }
1189
- .ps-tryon-sf-switch-divider { color: rgba(255,255,255,0.15); font-size: 0.65vw; font-weight: 300; }
1189
+ .ps-tryon-sf-switch-divider { color: rgba(0,0,0,0.08); font-size: 0.65vw; font-weight: 300; }
1190
1190
  .ps-tryon-sf-switch-btn svg { stroke: currentColor; width: 0.8vw; height: 0.8vw; }
1191
1191
 
1192
1192
  /* How to measure — overlaid on product image bottom-left */
@@ -1494,7 +1494,7 @@ const STYLES = `
1494
1494
  position: relative;
1495
1495
  }
1496
1496
  .ps-tryon-unit-tab:first-child { border-right: 1px solid var(--ps-border-color); }
1497
- .ps-tryon-unit-tab:hover { color: var(--ps-text-secondary); background: rgba(255,255,255,0.03); }
1497
+ .ps-tryon-unit-tab:hover { color: var(--ps-text-secondary); background: rgba(0,0,0,0.02); }
1498
1498
  .ps-tryon-unit-tab.ps-active {
1499
1499
  background: var(--ps-accent); color: #111;
1500
1500
  }
@@ -1673,8 +1673,8 @@ const STYLES = `
1673
1673
  }
1674
1674
  .ps-tryon-btn-download { background: var(--ps-accent); color: #111; }
1675
1675
  .ps-tryon-btn-download:hover { opacity: 0.9; }
1676
- .ps-tryon-btn-retry { background: rgba(255,255,255,0.08); color: var(--ps-text-primary); border: 1px solid var(--ps-border-color) !important; }
1677
- .ps-tryon-btn-retry:hover { background: rgba(255,255,255,0.12); }
1676
+ .ps-tryon-btn-retry { background: rgba(0,0,0,0.06); color: var(--ps-text-primary); border: 1px solid var(--ps-border-color) !important; }
1677
+ .ps-tryon-btn-retry:hover { background: rgba(0,0,0,0.08); }
1678
1678
 
1679
1679
  /* ── Size Result ── */
1680
1680
  .ps-tryon-sr { flex: 1; display: flex; flex-direction: column; min-height: 0; overflow: hidden; }
@@ -1868,7 +1868,7 @@ const STYLES = `
1868
1868
  /* Full-screen overlay inside the modal */
1869
1869
  .ps-tryon-sr-chart-overlay {
1870
1870
  position: absolute; inset: -3vw -1.2vw; z-index: 50;
1871
- background: var(--ps-modal-bg, #111211);
1871
+ background: var(--ps-modal-bg, #FFFFFF);
1872
1872
  display: flex; flex-direction: column;
1873
1873
  animation: ps-fade-in 0.2s ease;
1874
1874
  }
@@ -1927,12 +1927,12 @@ const STYLES = `
1927
1927
  .ps-tryon-guide-preview img {
1928
1928
  max-width: 100%; max-height: 100%; object-fit: contain;
1929
1929
  display: block; border-radius: 0.5vw;
1930
- background: var(--ps-modal-bg, #111211);
1930
+ background: var(--ps-modal-bg, #FFFFFF);
1931
1931
  }
1932
1932
  .ps-tryon-guide-preview-remove {
1933
1933
  position: absolute; top: 0.4vw; right: 0.4vw;
1934
1934
  width: 1.4vw; height: 1.4vw; display: flex; align-items: center; justify-content: center;
1935
- background: rgba(0,0,0,0.7); border: 1px solid rgba(255,255,255,0.2); border-radius: 50%;
1935
+ background: rgba(0,0,0,0.7); border: 1px solid rgba(0,0,0,0.1); border-radius: 50%;
1936
1936
  color: var(--ps-text-primary); font-size: 0.65vw; cursor: pointer; font-family: inherit;
1937
1937
  transition: all 0.2s;
1938
1938
  }
@@ -2040,7 +2040,7 @@ const STYLES = `
2040
2040
  .ps-tryon-sr-multi-top {
2041
2041
  display: flex; align-items: center; justify-content: space-between;
2042
2042
  padding-bottom: 0.5vw; margin-bottom: 0.4vw;
2043
- border-bottom: 1px solid rgba(255,255,255,0.04);
2043
+ border-bottom: 1px solid rgba(0,0,0,0.03);
2044
2044
  }
2045
2045
  .ps-tryon-sr-multi-title {
2046
2046
  font-size: 0.9vw; font-weight: 300; color: var(--ps-text-primary);
@@ -2066,7 +2066,7 @@ const STYLES = `
2066
2066
  .ps-tryon-sec-bigcard {
2067
2067
  position: relative; overflow: hidden;
2068
2068
  display: flex; flex-direction: column;
2069
- background: #0e0e0e; border: 1px solid rgba(255,255,255,0.06); border-radius: 0.7vw;
2069
+ background: #0e0e0e; border: 1px solid rgba(0,0,0,0.04); border-radius: 0.7vw;
2070
2070
  cursor: pointer; font-family: inherit;
2071
2071
  text-align: center; flex: 1; min-width: 0; padding: 0;
2072
2072
  transition: border-color 0.4s, transform 0.4s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.4s;
@@ -2161,11 +2161,11 @@ const STYLES = `
2161
2161
  display: flex; flex-direction: column; gap: 0.5vw;
2162
2162
  animation: ps-v2-fade 0.3s ease forwards;
2163
2163
  flex: 1; min-height: 0; overflow-y: auto;
2164
- scrollbar-width: thin; scrollbar-color: rgba(255,255,255,0.06) transparent;
2164
+ scrollbar-width: thin; scrollbar-color: rgba(0,0,0,0.04) transparent;
2165
2165
  }
2166
2166
  .ps-tryon-sec-detail-back {
2167
2167
  display: inline-flex; align-items: center; gap: 0.25vw;
2168
- background: none; border: none; color: rgba(255,255,255,0.4); cursor: pointer;
2168
+ background: none; border: none; color: rgba(0,0,0,0.3); cursor: pointer;
2169
2169
  font-size: 0.6vw; font-family: inherit; padding: 0;
2170
2170
  transition: color 0.2s; align-self: flex-start;
2171
2171
  letter-spacing: 0.03em;
@@ -2175,7 +2175,7 @@ const STYLES = `
2175
2175
  .ps-tryon-sec-detail-header {
2176
2176
  display: flex; align-items: center; gap: 0.5vw;
2177
2177
  padding-bottom: 0.4vw;
2178
- border-bottom: 1px solid rgba(255,255,255,0.06);
2178
+ border-bottom: 1px solid rgba(0,0,0,0.04);
2179
2179
  }
2180
2180
  .ps-tryon-sec-detail-icon {
2181
2181
  width: 1.8vw; height: 1.8vw;
@@ -2214,7 +2214,7 @@ const STYLES = `
2214
2214
  }
2215
2215
  .ps-tryon-sr-glass-btn {
2216
2216
  background: rgba(0,0,0,0.6); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
2217
- border: 1px solid rgba(255,255,255,0.25); border-radius: 0.45vw;
2217
+ border: 1px solid rgba(0,0,0,0.15); border-radius: 0.45vw;
2218
2218
  color: var(--ps-text-primary); font-size: 0.62vw; font-weight: 700; font-family: inherit;
2219
2219
  padding: 0.4vw 0.8vw; cursor: pointer; transition: all 0.2s;
2220
2220
  white-space: nowrap; letter-spacing: 0.02em;
@@ -2226,14 +2226,14 @@ const STYLES = `
2226
2226
  position: absolute; bottom: 0.5vw; left: 0.5vw; z-index: 3;
2227
2227
  }
2228
2228
  .ps-tryon-sr-glass-btn:hover {
2229
- background: rgba(0,0,0,0.75); border-color: rgba(255,255,255,0.4);
2229
+ background: rgba(0,0,0,0.75); border-color: rgba(0,0,0,0.3);
2230
2230
  }
2231
2231
  .ps-tryon-sr-img-icon {
2232
2232
  width: 1.8vw; height: 1.8vw; display: flex; align-items: center; justify-content: center;
2233
- background: rgba(0,0,0,0.6); border: 1px solid rgba(255,255,255,0.15); border-radius: 0.4vw;
2233
+ background: rgba(0,0,0,0.6); border: 1px solid rgba(0,0,0,0.08); border-radius: 0.4vw;
2234
2234
  color: #ccc; cursor: pointer; transition: all 0.2s; backdrop-filter: blur(4px);
2235
2235
  }
2236
- .ps-tryon-sr-img-icon:hover { background: rgba(0,0,0,0.8); color: var(--ps-text-primary); border-color: rgba(255,255,255,0.3); }
2236
+ .ps-tryon-sr-img-icon:hover { background: rgba(0,0,0,0.8); color: var(--ps-text-primary); border-color: rgba(0,0,0,0.2); }
2237
2237
 
2238
2238
  /* See fit visually — below size chips */
2239
2239
  .ps-tryon-sr-visual-btn {
@@ -2426,7 +2426,7 @@ const STYLES = `
2426
2426
 
2427
2427
  /* Drawer */
2428
2428
  .ps-tryon-drawer {
2429
- position: absolute; inset: 0; z-index: 20; background: var(--ps-modal-bg, #111211);
2429
+ position: absolute; inset: 0; z-index: 20; background: var(--ps-modal-bg, #FFFFFF);
2430
2430
  overflow-y: auto; overflow-x: hidden; scrollbar-width: thin; padding: 1.04vw 1.25vw;
2431
2431
  transform: translateX(100%); transition: transform 0.25s cubic-bezier(0.4,0,0.2,1);
2432
2432
  box-sizing: border-box;
@@ -2475,7 +2475,7 @@ const STYLES = `
2475
2475
  }
2476
2476
  .ps-tryon-history-item:hover { border-color: var(--ps-accent); box-shadow: 0 0.21vw 0.63vw rgba(187,148,92,0.06); }
2477
2477
  .ps-tryon-history-images { display: flex; gap: 0.42vw; flex-shrink: 0; }
2478
- .ps-tryon-history-thumb { width: 3.33vw; height: 4.17vw; border-radius: 0.52vw; object-fit: contain; background: var(--ps-modal-bg, #111211); flex-shrink: 0; }
2478
+ .ps-tryon-history-thumb { width: 3.33vw; height: 4.17vw; border-radius: 0.52vw; object-fit: contain; background: var(--ps-modal-bg, #FFFFFF); flex-shrink: 0; }
2479
2479
  .ps-tryon-history-info { flex: 1; min-width: 0; }
2480
2480
  .ps-tryon-history-product { font-size: 0.68vw; font-weight: 600; color: var(--ps-text-primary); overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
2481
2481
  .ps-tryon-history-meta { font-size: 0.57vw; color: var(--ps-text-muted); margin-top: 3px; }
@@ -2487,7 +2487,7 @@ const STYLES = `
2487
2487
  background: linear-gradient(135deg, var(--ps-accent), var(--ps-accent-light));
2488
2488
  color: #111; font-size: 0.68vw; font-weight: 700;
2489
2489
  }
2490
- .ps-tryon-history-result-img { width: 3.33vw; height: 4.17vw; border-radius: 0.52vw; object-fit: contain; background: var(--ps-modal-bg, #111211); flex-shrink: 0; border: 2px solid var(--ps-accent); }
2490
+ .ps-tryon-history-result-img { width: 3.33vw; height: 4.17vw; border-radius: 0.52vw; object-fit: contain; background: var(--ps-modal-bg, #FFFFFF); flex-shrink: 0; border: 2px solid var(--ps-accent); }
2491
2491
  .ps-tryon-history-delete {
2492
2492
  width: 1.46vw; height: 1.46vw; display: flex; align-items: center; justify-content: center;
2493
2493
  border: none; background: transparent; cursor: pointer; color: var(--ps-text-muted); border-radius: 0.31vw; transition: all 0.2s; flex-shrink: 0;
@@ -2542,7 +2542,7 @@ const STYLES = `
2542
2542
  font-family: inherit; transition: all 0.15s; white-space: nowrap; line-height: 1.2;
2543
2543
  }
2544
2544
  .ps-tryon-pe-pill-btn.ps-active { background: var(--ps-accent); color: #111; }
2545
- .ps-tryon-pe-pill-btn:not(.ps-active):hover { color: var(--ps-text-secondary); background: rgba(255,255,255,0.04); }
2545
+ .ps-tryon-pe-pill-btn:not(.ps-active):hover { color: var(--ps-text-secondary); background: rgba(0,0,0,0.03); }
2546
2546
  .ps-tryon-pe-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 1vw 1.6vw; width: 100%; box-sizing: border-box; }
2547
2547
  .ps-tryon-pe-fields .ps-tryon-sf-float-field {
2548
2548
  min-width: 0; padding: 0.15vw 0.4vw;
@@ -2550,7 +2550,7 @@ const STYLES = `
2550
2550
  }
2551
2551
  .ps-tryon-pe-fields .ps-tryon-sf-float-label {
2552
2552
  flex-shrink: 0; margin: 0; white-space: nowrap;
2553
- font-size: 0.58vw; color: rgba(255,255,255,0.4);
2553
+ font-size: 0.58vw; color: rgba(0,0,0,0.3);
2554
2554
  }
2555
2555
  .ps-tryon-pe-fields .ps-tryon-sf-float-field:focus-within .ps-tryon-sf-float-label { color: var(--ps-accent); }
2556
2556
  .ps-tryon-pe-fields .ps-tryon-sf-input {
@@ -2602,7 +2602,7 @@ const STYLES = `
2602
2602
  }
2603
2603
  .ps-tryon-detail-header span { font-size: 0.78vw; font-weight: 600; }
2604
2604
  .ps-tryon-detail-header button { background: none; border: none; color: var(--ps-text-secondary); cursor: pointer; display: flex; align-items: center; border-radius: 0.31vw; padding: 0.21vw; transition: background 0.15s; }
2605
- .ps-tryon-detail-header button:hover { background: rgba(255,255,255,0.1); }
2605
+ .ps-tryon-detail-header button:hover { background: rgba(0,0,0,0.06); }
2606
2606
  .ps-tryon-detail-body { padding: 1.04vw 1.25vw; }
2607
2607
  .ps-tryon-detail-gender { display: flex; align-items: center; gap: 0.42vw; font-size: 0.73vw; font-weight: 600; padding-bottom: 0.73vw; border-bottom: 1px solid var(--ps-border-color); margin-bottom: 0.73vw; }
2608
2608
  .ps-tryon-detail-gender svg { stroke: var(--ps-accent); fill: none; }
@@ -2881,7 +2881,7 @@ const STYLES = `
2881
2881
  .ps-bp-bra-region-wrap { position: relative; z-index: 100; }
2882
2882
  .ps-bp-bra-region-trigger {
2883
2883
  display: flex; align-items: center; gap: 0.35vw;
2884
- padding: 0.45vw 0.9vw; border: 1.5px solid rgba(255,255,255,0.2);
2884
+ padding: 0.45vw 0.9vw; border: 1.5px solid rgba(0,0,0,0.1);
2885
2885
  border-radius: 0.4vw; background: transparent;
2886
2886
  color: rgba(255,255,255,0.7); font-size: 0.8vw; font-weight: 600;
2887
2887
  cursor: pointer; font-family: inherit; transition: all 0.25s;
@@ -2894,7 +2894,7 @@ const STYLES = `
2894
2894
  .ps-bp-bra-region-dropdown {
2895
2895
  position: absolute; top: calc(100% + 0.3vw); right: 0;
2896
2896
  min-width: 5vw; background: var(--ps-bg-secondary);
2897
- border: 1.5px solid rgba(255,255,255,0.15); border-radius: 0.4vw;
2897
+ border: 1.5px solid rgba(0,0,0,0.08); border-radius: 0.4vw;
2898
2898
  box-shadow: 0 0.5vw 1.5vw rgba(0,0,0,0.5);
2899
2899
  overflow: hidden; animation: ps-bp-fade 0.2s ease both;
2900
2900
  padding: 0.25vw; z-index: 200;
@@ -2902,30 +2902,30 @@ const STYLES = `
2902
2902
  .ps-bp-bra-region-item {
2903
2903
  display: block; width: 100%; padding: 0.4vw 0.7vw;
2904
2904
  background: transparent; border: none; border-radius: 0.3vw;
2905
- color: rgba(255,255,255,0.5); font-size: 0.75vw; font-weight: 600;
2905
+ color: rgba(0,0,0,0.08); font-size: 0.75vw; font-weight: 600;
2906
2906
  cursor: pointer; font-family: inherit; text-align: left;
2907
2907
  transition: all 0.15s;
2908
2908
  }
2909
- .ps-bp-bra-region-item:hover { background: rgba(255,255,255,0.06); color: var(--ps-text-primary); }
2909
+ .ps-bp-bra-region-item:hover { background: rgba(0,0,0,0.04); color: var(--ps-text-primary); }
2910
2910
  .ps-bp-bra-region-item.ps-selected { color: var(--ps-accent); background: rgba(187,148,92,0.1); }
2911
2911
  .ps-bp-bra-grid {
2912
2912
  display: grid; grid-template-columns: repeat(7, 1fr); gap: 0.35vw;
2913
2913
  }
2914
2914
  .ps-bp-bra-btn {
2915
2915
  padding: 0.4vw 0; text-align: center;
2916
- background: transparent; border: 1px solid rgba(255,255,255,0.15);
2916
+ background: transparent; border: 1px solid rgba(0,0,0,0.08);
2917
2917
  border-radius: 0.35vw; color: rgba(255,255,255,0.55);
2918
2918
  font-size: 0.65vw; font-weight: 500; cursor: pointer;
2919
2919
  font-family: inherit; transition: all 0.2s;
2920
2920
  }
2921
- .ps-bp-bra-btn:hover { border-color: rgba(255,255,255,0.4); color: var(--ps-text-primary); }
2921
+ .ps-bp-bra-btn:hover { border-color: rgba(0,0,0,0.3); color: var(--ps-text-primary); }
2922
2922
  .ps-bp-bra-btn-selected {
2923
2923
  background: var(--ps-accent) !important; border-color: var(--ps-accent) !important;
2924
2924
  color: #111 !important; font-weight: 700;
2925
2925
  }
2926
2926
  /* Bra result */
2927
2927
  .ps-bp-bra-result {
2928
- text-align: center; font-size: 0.85vw; color: rgba(255,255,255,0.6);
2928
+ text-align: center; font-size: 0.85vw; color: rgba(0,0,0,0.5);
2929
2929
  margin-top: 0.8vw; font-weight: 400;
2930
2930
  }
2931
2931
  .ps-bp-bra-result strong {
@@ -2933,7 +2933,7 @@ const STYLES = `
2933
2933
  }
2934
2934
  .ps-bp-bra-bust {
2935
2935
  display: block; margin-top: 0.2vw;
2936
- font-size: 0.75vw; color: rgba(255,255,255,0.4); font-weight: 400;
2936
+ font-size: 0.75vw; color: rgba(0,0,0,0.3); font-weight: 400;
2937
2937
  }
2938
2938
 
2939
2939
  /* Profile option rows — WAIR style stacked list */
@@ -2999,7 +2999,7 @@ const STYLES = `
2999
2999
  }
3000
3000
  .ps-bp-shape-label::after {
3001
3001
  content: ""; flex: 1; height: 1px;
3002
- background: linear-gradient(to right, rgba(255,255,255,0.15), transparent);
3002
+ background: linear-gradient(to right, rgba(0,0,0,0.08), transparent);
3003
3003
  }
3004
3004
  .ps-bp-shape-row {
3005
3005
  display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 0.5vw;
@@ -3007,7 +3007,7 @@ const STYLES = `
3007
3007
  }
3008
3008
  .ps-bp-img-card {
3009
3009
  display: flex; flex-direction: column; align-items: center;
3010
- background: transparent; border: 2px solid rgba(255,255,255,0.15);
3010
+ background: transparent; border: 2px solid rgba(0,0,0,0.08);
3011
3011
  border-radius: 0.5vw; overflow: hidden; cursor: pointer;
3012
3012
  transition: all 0.2s ease; padding: 0; font-family: inherit;
3013
3013
  position: relative;
@@ -3044,12 +3044,12 @@ const STYLES = `
3044
3044
  .ps-bp-img-card .ps-bp-illust svg { width: 100%; height: 100%; }
3045
3045
  .ps-bp-img-card-label {
3046
3046
  padding: 0.3vw 0.2vw; font-size: 0.6vw; font-weight: 600;
3047
- color: rgba(255,255,255,0.5); text-align: center; width: 100%;
3047
+ color: rgba(0,0,0,0.08); text-align: center; width: 100%;
3048
3048
  transition: opacity 0.2s;
3049
3049
  }
3050
3050
  /* Hover hint text below cards */
3051
3051
  .ps-bp-hover-hint {
3052
- text-align: center; font-size: 0.7vw; color: rgba(255,255,255,0.35);
3052
+ text-align: center; font-size: 0.7vw; color: rgba(0,0,0,0.25);
3053
3053
  margin: 0.15vw 0 0; min-height: 1em; transition: opacity 0.2s;
3054
3054
  font-weight: 400; letter-spacing: 0.01em;
3055
3055
  }
@@ -3092,7 +3092,7 @@ const STYLES = `
3092
3092
  cursor: pointer; font-size: 1vw; line-height: 1; border-radius: 0.25vw;
3093
3093
  transition: all 0.15s; flex-shrink: 0;
3094
3094
  }
3095
- .ps-bp-photo-remove:hover { background: rgba(255,255,255,0.1); color: var(--ps-text-primary); }
3095
+ .ps-bp-photo-remove:hover { background: rgba(0,0,0,0.06); color: var(--ps-text-primary); }
3096
3096
 
3097
3097
  /* Error */
3098
3098
  .ps-bp-error {
@@ -4142,7 +4142,7 @@ function MeasurementOverlay({ lines, fitRows, show, imgWidth, imgHeight }) {
4142
4142
  const curveDepth = width * 0.06;
4143
4143
  const midX = (x1 + x2) / 2;
4144
4144
  const fitRow = fitRows.find((r) => r.area.toLowerCase() === key);
4145
- const color = fitRow ? fitColor(fitRow.fit) : "#bb945c";
4145
+ const color = fitRow ? fitColor(fitRow.fit) : "#2154EF";
4146
4146
  const delay = i * 0.35;
4147
4147
  const curvePath = `M ${x1} ${cy} Q ${midX} ${cy + curveDepth} ${x2} ${cy}`;
4148
4148
  const lineLen = width * 1.05;