@primestyleai/tryon 5.8.27 → 5.8.29

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.
@@ -10389,10 +10389,11 @@ const STYLES$1 = `
10389
10389
  height: 100%; overflow: hidden;
10390
10390
  }
10391
10391
 
10392
- /* Left image column — proper contained display */
10392
+ /* Left image column — proper contained display.
10393
+ No background — the product/try-on image sits directly on the modal
10394
+ surface without a gray placeholder box behind it. */
10393
10395
  .ps-tryon-v2-bg {
10394
10396
  flex: 0 0 43%; position: relative; min-width: 0;
10395
- background: var(--ps-bg-secondary);
10396
10397
  border-radius: 0.9vw; overflow: hidden;
10397
10398
  display: flex; align-items: center; justify-content: center;
10398
10399
  }
@@ -13520,30 +13521,32 @@ const STYLES$1 = `
13520
13521
  overflow-y: auto; -webkit-overflow-scrolling: touch;
13521
13522
  padding: 4px 4px 32px;
13522
13523
  }
13523
- .ps-msp-header { margin-bottom: 18px; }
13524
+ .ps-msp-header { margin-bottom: clamp(10px, 0.85vw, 18px); }
13524
13525
  .ps-msp-title {
13525
- font-size: 26px; font-weight: 700;
13526
+ font-size: clamp(13px, 0.95vw, 18px);
13527
+ font-weight: 700;
13526
13528
  color: var(--ps-text-primary);
13527
- margin: 0 0 6px;
13528
- letter-spacing: -0.01em;
13529
+ margin: 0 0 clamp(2px, 0.2vw, 6px);
13530
+ letter-spacing: -0.005em;
13529
13531
  }
13530
13532
  .ps-msp-subtitle {
13531
- font-size: 13px; color: var(--ps-text-muted);
13533
+ font-size: clamp(10px, 0.7vw, 13px);
13534
+ color: var(--ps-text-muted);
13532
13535
  margin: 0; line-height: 1.5;
13533
13536
  }
13534
13537
 
13535
- /* Card grid */
13538
+ /* Card grid — compact saved profile cards */
13536
13539
  .ps-msp-grid {
13537
13540
  display: grid;
13538
- grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
13539
- gap: 14px;
13540
- margin-bottom: 28px;
13541
+ grid-template-columns: repeat(auto-fill, minmax(clamp(140px, 11vw, 200px), 1fr));
13542
+ gap: clamp(8px, 0.7vw, 14px);
13543
+ margin-bottom: clamp(14px, 1.2vw, 24px);
13541
13544
  }
13542
13545
  .ps-msp-card {
13543
13546
  background: var(--ps-bg-primary);
13544
13547
  border: 1px solid var(--ps-border-subtle);
13545
- border-radius: 12px;
13546
- padding: 14px;
13548
+ border-radius: clamp(8px, 0.6vw, 14px);
13549
+ padding: clamp(8px, 0.7vw, 14px);
13547
13550
  display: flex; flex-direction: column;
13548
13551
  transition: border-color 0.15s, transform 0.15s, box-shadow 0.15s;
13549
13552
  box-shadow: 0 1px 3px rgba(0,0,0,0.04);
@@ -13577,18 +13580,18 @@ const STYLES$1 = `
13577
13580
  .ps-msp-avatar { color: var(--ps-accent); border-color: var(--ps-accent); }
13578
13581
  .ps-msp-avatar-tag { background: var(--ps-accent); }
13579
13582
 
13580
- /* Big circular profile avatar — only chrome on the card, no
13581
- rectangular hero. Shows the head crop via object-position 12%. */
13583
+ /* Compact circular profile avatar — vw-scaled. */
13582
13584
  .ps-msp-card-circle {
13583
- width: 110px; height: 110px;
13585
+ width: clamp(56px, 4.5vw, 90px);
13586
+ height: clamp(56px, 4.5vw, 90px);
13584
13587
  border-radius: 50%;
13585
13588
  background: var(--ps-bg-secondary);
13586
- border: 3px solid var(--ps-accent);
13587
- box-shadow: 0 6px 18px rgba(33, 84, 239, 0.18);
13589
+ border: 2px solid var(--ps-accent);
13590
+ box-shadow: 0 0.3vw 0.9vw rgba(33, 84, 239, 0.15);
13588
13591
  overflow: hidden;
13589
13592
  display: flex; align-items: center; justify-content: center;
13590
13593
  color: var(--ps-accent);
13591
- margin: 6px auto 14px;
13594
+ margin: clamp(4px, 0.35vw, 8px) auto clamp(8px, 0.7vw, 14px);
13592
13595
  }
13593
13596
  .ps-msp-card-circle img {
13594
13597
  width: 100%; height: 100%; object-fit: cover;
@@ -13613,42 +13616,47 @@ const STYLES$1 = `
13613
13616
  }
13614
13617
 
13615
13618
  .ps-msp-card-name {
13616
- font-size: 16px; font-weight: 700;
13619
+ font-size: clamp(12px, 0.85vw, 16px);
13620
+ font-weight: 700;
13617
13621
  color: var(--ps-text-primary);
13618
- margin-bottom: 8px;
13622
+ margin-bottom: clamp(4px, 0.4vw, 10px);
13619
13623
  }
13620
13624
  .ps-msp-card-meta {
13621
13625
  display: flex; flex-direction: column;
13622
- gap: 4px;
13623
- margin-bottom: 12px;
13626
+ gap: clamp(2px, 0.2vw, 6px);
13627
+ margin-bottom: clamp(6px, 0.55vw, 14px);
13624
13628
  }
13625
13629
  .ps-msp-meta-row {
13626
13630
  display: flex; align-items: center; justify-content: space-between;
13627
- padding: 4px 0;
13631
+ padding: clamp(2px, 0.2vw, 6px) 0;
13628
13632
  border-bottom: 1px solid var(--ps-border-subtle);
13629
13633
  }
13630
13634
  .ps-msp-meta-row:last-child { border-bottom: none; }
13631
13635
  .ps-msp-meta-label {
13632
- font-size: 9px; font-weight: 600;
13636
+ font-size: clamp(8px, 0.55vw, 11px);
13637
+ font-weight: 600;
13633
13638
  letter-spacing: 0.1em; text-transform: uppercase;
13634
13639
  color: var(--ps-text-muted);
13635
13640
  }
13636
13641
  .ps-msp-meta-value {
13637
- font-size: 12px; font-weight: 600;
13642
+ font-size: clamp(10px, 0.7vw, 13px);
13643
+ font-weight: 600;
13638
13644
  color: var(--ps-text-primary);
13639
13645
  font-feature-settings: "tnum" 1;
13640
13646
  }
13641
13647
 
13642
13648
  .ps-msp-card-actions {
13643
- display: flex; gap: 8px;
13649
+ display: flex; gap: clamp(4px, 0.4vw, 10px);
13644
13650
  margin-top: auto;
13645
13651
  }
13646
13652
  .ps-msp-card-select {
13647
13653
  flex: 1;
13648
13654
  background: var(--ps-accent); color: #FFFFFF;
13649
- border: none; border-radius: 6px;
13650
- padding: 10px;
13651
- font-family: inherit; font-size: 11px; font-weight: 700;
13655
+ border: none; border-radius: clamp(4px, 0.35vw, 8px);
13656
+ padding: clamp(6px, 0.55vw, 12px);
13657
+ font-family: inherit;
13658
+ font-size: clamp(9px, 0.65vw, 12px);
13659
+ font-weight: 700;
13652
13660
  letter-spacing: 0.12em; text-transform: uppercase;
13653
13661
  cursor: pointer;
13654
13662
  transition: opacity 0.15s, transform 0.15s;
@@ -13753,14 +13761,15 @@ const STYLES$1 = `
13753
13761
  }
13754
13762
  .ps-msp-edit-save:hover { opacity: 0.9; }
13755
13763
 
13756
- /* "Create New Profile" empty card */
13764
+ /* "Create New Profile" empty card — same compact size as the saved
13765
+ profile cards (no min-height forcing it taller). */
13757
13766
  .ps-msp-card-create {
13758
13767
  background: var(--ps-bg-secondary);
13759
13768
  border: 2px dashed var(--ps-border-color);
13760
13769
  align-items: center; justify-content: center;
13761
13770
  text-align: center;
13762
13771
  cursor: pointer;
13763
- min-height: 280px;
13772
+ min-height: 0;
13764
13773
  transition: border-color 0.15s, background 0.15s;
13765
13774
  }
13766
13775
  .ps-msp-card-create:hover {
@@ -13768,19 +13777,22 @@ const STYLES$1 = `
13768
13777
  background: rgba(33,84,239,0.04);
13769
13778
  }
13770
13779
  .ps-msp-create-icon {
13771
- width: 50px; height: 50px;
13780
+ width: clamp(32px, 2.6vw, 48px);
13781
+ height: clamp(32px, 2.6vw, 48px);
13772
13782
  background: var(--ps-accent); color: #FFFFFF;
13773
- border-radius: 8px;
13783
+ border-radius: clamp(4px, 0.35vw, 8px);
13774
13784
  display: flex; align-items: center; justify-content: center;
13775
- margin-bottom: 12px;
13785
+ margin-bottom: clamp(6px, 0.55vw, 12px);
13776
13786
  }
13777
13787
  .ps-msp-create-title {
13778
- font-size: 15px; font-weight: 700;
13788
+ font-size: clamp(11px, 0.78vw, 14px);
13789
+ font-weight: 700;
13779
13790
  color: var(--ps-text-primary);
13780
- margin-bottom: 4px;
13791
+ margin-bottom: clamp(2px, 0.2vw, 6px);
13781
13792
  }
13782
13793
  .ps-msp-create-sub {
13783
- font-size: 9px; font-weight: 700;
13794
+ font-size: clamp(8px, 0.55vw, 11px);
13795
+ font-weight: 700;
13784
13796
  letter-spacing: 0.14em; text-transform: uppercase;
13785
13797
  color: var(--ps-text-muted);
13786
13798
  }
@@ -13873,17 +13885,21 @@ const STYLES$1 = `
13873
13885
  overflow-x: hidden;
13874
13886
  }
13875
13887
 
13876
- /* Step header — single tiny title + a thin progress bar inline */
13888
+ /* Step header — single tiny title + a thin progress bar inline.
13889
+ All sizing is vw-based with sensible clamps so the wizard scales
13890
+ proportionally from a 320px phone all the way up to a 5000px display
13891
+ without losing its ratios. */
13877
13892
  .ps-cpw-step-head {
13878
13893
  display: flex; align-items: center; justify-content: space-between;
13879
- gap: 12px;
13880
- padding: 6px 16px;
13894
+ gap: clamp(8px, 0.75vw, 16px);
13895
+ padding: clamp(4px, 0.4vw, 10px) clamp(12px, 1vw, 22px);
13881
13896
  border-bottom: 1px solid var(--ps-border-subtle);
13882
13897
  flex-shrink: 0;
13883
13898
  }
13884
13899
  .ps-cpw-eyebrow { display: none; }
13885
13900
  .ps-cpw-step-title {
13886
- font-size: 11px; font-weight: 600;
13901
+ font-size: clamp(10px, 0.7vw, 14px);
13902
+ font-weight: 600;
13887
13903
  color: var(--ps-text-primary);
13888
13904
  letter-spacing: 0.02em;
13889
13905
  margin: 0;
@@ -13892,10 +13908,10 @@ const STYLES$1 = `
13892
13908
  .ps-cpw-progress {
13893
13909
  display: flex; flex-direction: column; align-items: flex-end;
13894
13910
  gap: 0; flex-shrink: 0;
13895
- min-width: 80px;
13911
+ min-width: clamp(60px, 5vw, 100px);
13896
13912
  }
13897
13913
  .ps-cpw-progress-track {
13898
- width: 100%; height: 2px;
13914
+ width: 100%; height: clamp(2px, 0.12vw, 3px);
13899
13915
  background: var(--ps-border-color); border-radius: 2px;
13900
13916
  overflow: hidden;
13901
13917
  }
@@ -13907,30 +13923,29 @@ const STYLES$1 = `
13907
13923
 
13908
13924
  .ps-cpw-body {
13909
13925
  display: flex; flex-direction: column;
13910
- gap: 14px;
13926
+ gap: clamp(10px, 0.85vw, 18px);
13911
13927
  flex: 1; min-height: 0;
13912
13928
  width: 100%; max-width: 100%;
13913
13929
  box-sizing: border-box;
13914
- /* Modal height is fixed by the parent — don't grow it. If a step
13915
- happens to be taller (rare), let it scroll inside the body
13916
- instead of forcing the modal to expand. */
13917
13930
  overflow-y: auto; overflow-x: hidden;
13918
13931
  -webkit-overflow-scrolling: touch;
13919
- padding: 14px 16px;
13932
+ padding: clamp(10px, 0.9vw, 18px) clamp(12px, 1vw, 22px);
13920
13933
  }
13921
13934
 
13922
- /* Step 1 — Identity form (compact) */
13935
+ /* Step 1 — Identity form (compact, vw-scaled) */
13923
13936
  .ps-cpw-identity {
13924
- display: flex; flex-direction: column; gap: 10px;
13937
+ display: flex; flex-direction: column;
13938
+ gap: clamp(8px, 0.7vw, 14px);
13925
13939
  flex: 1; min-height: 0;
13926
13940
  width: 100%; box-sizing: border-box;
13927
13941
  }
13928
13942
  .ps-cpw-field {
13929
13943
  display: flex; flex-direction: column;
13930
- gap: 6px;
13944
+ gap: clamp(4px, 0.4vw, 10px);
13931
13945
  }
13932
13946
  .ps-cpw-field-label {
13933
- font-size: 10px; font-weight: 700;
13947
+ font-size: clamp(9px, 0.62vw, 12px);
13948
+ font-weight: 700;
13934
13949
  letter-spacing: 0.14em; text-transform: uppercase;
13935
13950
  color: var(--ps-text-muted);
13936
13951
  }
@@ -13938,8 +13953,10 @@ const STYLES$1 = `
13938
13953
  background: transparent; border: none;
13939
13954
  border-bottom: 1px solid var(--ps-border-color);
13940
13955
  color: var(--ps-text-primary);
13941
- font-family: inherit; font-size: 18px; font-weight: 500;
13942
- padding: 6px 0 8px;
13956
+ font-family: inherit;
13957
+ font-size: clamp(13px, 0.95vw, 18px);
13958
+ font-weight: 500;
13959
+ padding: clamp(4px, 0.4vw, 10px) 0 clamp(6px, 0.55vw, 12px);
13943
13960
  outline: none;
13944
13961
  transition: border-color 0.15s;
13945
13962
  }
@@ -13950,7 +13967,8 @@ const STYLES$1 = `
13950
13967
  .ps-cpw-input[type="number"] { -moz-appearance: textfield; }
13951
13968
 
13952
13969
  .ps-cpw-pill-row {
13953
- display: flex; align-items: center; gap: 8px;
13970
+ display: flex; align-items: center;
13971
+ gap: clamp(6px, 0.5vw, 12px);
13954
13972
  flex-wrap: wrap;
13955
13973
  }
13956
13974
  .ps-cpw-pill-group {
@@ -13958,12 +13976,15 @@ const STYLES$1 = `
13958
13976
  background: var(--ps-bg-secondary);
13959
13977
  border: 1px solid var(--ps-border-color);
13960
13978
  border-radius: 999px;
13961
- padding: 2px;
13979
+ padding: clamp(2px, 0.15vw, 4px);
13962
13980
  }
13963
13981
  .ps-cpw-pill {
13964
13982
  background: none; border: none;
13965
- padding: 5px 14px; border-radius: 999px;
13966
- font-family: inherit; font-size: 11px; font-weight: 600;
13983
+ padding: clamp(4px, 0.35vw, 8px) clamp(10px, 0.9vw, 20px);
13984
+ border-radius: 999px;
13985
+ font-family: inherit;
13986
+ font-size: clamp(10px, 0.7vw, 13px);
13987
+ font-weight: 600;
13967
13988
  color: var(--ps-text-secondary); cursor: pointer;
13968
13989
  transition: background 0.15s, color 0.15s;
13969
13990
  }
@@ -13973,29 +13994,31 @@ const STYLES$1 = `
13973
13994
 
13974
13995
  .ps-cpw-field-grid {
13975
13996
  display: grid;
13976
- grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
13977
- gap: 24px;
13997
+ grid-template-columns: repeat(auto-fit, minmax(clamp(140px, 11vw, 220px), 1fr));
13998
+ gap: clamp(14px, 1.2vw, 28px);
13978
13999
  }
13979
14000
 
13980
14001
  /* Two-column split: inputs stacked left, photo right */
13981
14002
  .ps-cpw-split {
13982
14003
  display: grid;
13983
- grid-template-columns: 1fr 280px;
13984
- gap: 28px;
14004
+ grid-template-columns: 1fr clamp(180px, 14vw, 320px);
14005
+ gap: clamp(16px, 1.4vw, 32px);
13985
14006
  align-items: start;
13986
14007
  }
13987
14008
  .ps-cpw-split-left {
13988
- display: flex; flex-direction: column; gap: 22px;
14009
+ display: flex; flex-direction: column;
14010
+ gap: clamp(14px, 1.2vw, 24px);
13989
14011
  min-width: 0;
13990
14012
  }
13991
14013
  .ps-cpw-split-right {
13992
- display: flex; flex-direction: column; gap: 8px;
14014
+ display: flex; flex-direction: column;
14015
+ gap: clamp(6px, 0.55vw, 12px);
13993
14016
  min-width: 0;
13994
14017
  }
13995
14018
  .ps-cpw-error {
13996
- font-size: 12px;
14019
+ font-size: clamp(10px, 0.72vw, 13px);
13997
14020
  color: var(--ps-error-color);
13998
- margin-top: -6px;
14021
+ margin-top: calc(clamp(4px, 0.4vw, 10px) * -1);
13999
14022
  }
14000
14023
 
14001
14024
  /* Optional photo upload (step 1) */
@@ -14051,67 +14074,84 @@ const STYLES$1 = `
14051
14074
  display: flex; align-items: center; justify-content: center;
14052
14075
  }
14053
14076
 
14054
- /* Step 2 — Silhouette */
14077
+ /* Step 2 — Silhouette (vw-scaled) */
14055
14078
  .ps-cpw-silhouette {
14056
- display: flex; flex-direction: column; gap: 28px;
14079
+ display: flex; flex-direction: column;
14080
+ gap: clamp(16px, 1.4vw, 32px);
14057
14081
  }
14058
14082
  .ps-cpw-section {
14059
- display: flex; flex-direction: column; gap: 14px;
14083
+ display: flex; flex-direction: column;
14084
+ gap: clamp(8px, 0.7vw, 16px);
14060
14085
  }
14061
14086
  .ps-cpw-section-head {
14062
- display: flex; flex-direction: column; gap: 4px;
14087
+ display: flex; flex-direction: column;
14088
+ gap: clamp(2px, 0.2vw, 6px);
14063
14089
  }
14064
14090
  .ps-cpw-section-title {
14065
- font-size: 11px; font-weight: 700;
14091
+ font-size: clamp(10px, 0.72vw, 14px);
14092
+ font-weight: 700;
14066
14093
  letter-spacing: 0.14em; text-transform: uppercase;
14067
14094
  color: var(--ps-text-primary);
14068
14095
  }
14069
14096
  .ps-cpw-section-sub {
14070
- font-size: 12px; font-weight: 400;
14097
+ font-size: clamp(10px, 0.7vw, 13px);
14098
+ font-weight: 400;
14071
14099
  color: var(--ps-text-muted);
14072
14100
  }
14073
14101
  .ps-cpw-card-row {
14074
14102
  display: grid;
14075
14103
  grid-template-columns: repeat(3, 1fr);
14076
- gap: 12px;
14104
+ gap: clamp(8px, 0.75vw, 16px);
14105
+ /* Inside a flex parent (ProgressiveStep with flex:1), let the row
14106
+ claim leftover vertical space so the cards stretch to fill it. */
14107
+ flex: 1; min-height: 0;
14077
14108
  }
14078
14109
  .ps-cpw-bra-row {
14079
14110
  display: grid;
14080
14111
  grid-template-columns: 1fr 1fr;
14081
- gap: 12px;
14112
+ gap: clamp(8px, 0.75vw, 16px);
14082
14113
  }
14083
14114
  .ps-cpw-bra-field {
14084
- display: flex; flex-direction: column; gap: 6px;
14115
+ display: flex; flex-direction: column;
14116
+ gap: clamp(4px, 0.4vw, 10px);
14085
14117
  }
14086
14118
  .ps-cpw-card {
14087
14119
  display: flex; flex-direction: column; align-items: center;
14088
14120
  background: var(--ps-bg-primary);
14089
14121
  border: 2px solid var(--ps-border-subtle);
14090
- border-radius: 10px;
14091
- padding: 14px 8px 10px;
14122
+ border-radius: clamp(8px, 0.6vw, 14px);
14123
+ padding: clamp(10px, 0.85vw, 18px) clamp(6px, 0.5vw, 12px) clamp(8px, 0.65vw, 14px);
14092
14124
  cursor: pointer; font-family: inherit;
14093
14125
  transition: border-color 0.15s, transform 0.15s, box-shadow 0.15s;
14126
+ /* Stretch inside the grid track so all 3 cards in the row fill
14127
+ the available height equally. */
14128
+ min-width: 0; min-height: 0;
14094
14129
  }
14095
14130
  .ps-cpw-card:hover {
14096
14131
  border-color: rgba(33, 84, 239, 0.35);
14097
14132
  }
14098
14133
  .ps-cpw-card.ps-active {
14099
14134
  border-color: var(--ps-accent);
14100
- box-shadow: 0 6px 16px rgba(33, 84, 239, 0.12);
14135
+ box-shadow: 0 0.4vw 1.1vw rgba(33, 84, 239, 0.16);
14101
14136
  transform: translateY(-1px);
14102
14137
  }
14103
14138
  .ps-cpw-card-thumb {
14104
- width: 100%; height: 110px;
14139
+ width: 100%;
14140
+ /* Fills whatever space the card has — combined with the card's
14141
+ min-height: 0, this lets the thumb image grow with viewport size
14142
+ and stretch to fill the wizard body. */
14143
+ flex: 1; min-height: 0;
14105
14144
  display: flex; align-items: center; justify-content: center;
14106
14145
  overflow: hidden;
14107
- margin-bottom: 8px;
14146
+ margin-bottom: clamp(4px, 0.4vw, 10px);
14108
14147
  }
14109
14148
  .ps-cpw-card-thumb img {
14110
14149
  max-width: 100%; max-height: 100%;
14111
14150
  object-fit: contain;
14112
14151
  }
14113
14152
  .ps-cpw-card-label {
14114
- font-size: 10px; font-weight: 700;
14153
+ font-size: clamp(9px, 0.65vw, 12px);
14154
+ font-weight: 700;
14115
14155
  letter-spacing: 0.12em; text-transform: uppercase;
14116
14156
  color: var(--ps-text-muted);
14117
14157
  }
@@ -14119,11 +14159,11 @@ const STYLES$1 = `
14119
14159
  color: var(--ps-accent);
14120
14160
  }
14121
14161
 
14122
- /* Footer actions — sticky at the bottom (compact) */
14162
+ /* Footer actions — vw-scaled */
14123
14163
  .ps-cpw-footer {
14124
14164
  display: flex; align-items: center; justify-content: space-between;
14125
- gap: 10px;
14126
- padding: 8px 16px;
14165
+ gap: clamp(8px, 0.7vw, 14px);
14166
+ padding: clamp(6px, 0.55vw, 12px) clamp(12px, 1vw, 22px);
14127
14167
  border-top: 1px solid var(--ps-border-subtle);
14128
14168
  background: var(--ps-bg-primary);
14129
14169
  flex-shrink: 0;
@@ -14131,20 +14171,25 @@ const STYLES$1 = `
14131
14171
  .ps-cpw-back-btn {
14132
14172
  background: none; border: none;
14133
14173
  color: var(--ps-text-secondary);
14134
- font-family: inherit; font-size: 11px; font-weight: 600;
14135
- cursor: pointer; padding: 8px 4px;
14174
+ font-family: inherit;
14175
+ font-size: clamp(10px, 0.7vw, 13px);
14176
+ font-weight: 600;
14177
+ cursor: pointer;
14178
+ padding: clamp(6px, 0.55vw, 12px) clamp(2px, 0.2vw, 6px);
14136
14179
  transition: color 0.15s;
14137
14180
  }
14138
14181
  .ps-cpw-back-btn:hover { color: var(--ps-text-primary); }
14139
14182
  .ps-cpw-next-btn {
14140
14183
  background: var(--ps-accent); color: #FFFFFF;
14141
- border: none; border-radius: 6px;
14142
- padding: 10px 22px;
14143
- font-family: inherit; font-size: 11px; font-weight: 700;
14184
+ border: none; border-radius: clamp(4px, 0.35vw, 8px);
14185
+ padding: clamp(8px, 0.7vw, 14px) clamp(16px, 1.4vw, 28px);
14186
+ font-family: inherit;
14187
+ font-size: clamp(10px, 0.7vw, 13px);
14188
+ font-weight: 700;
14144
14189
  letter-spacing: 0.1em; text-transform: uppercase;
14145
14190
  cursor: pointer;
14146
14191
  transition: opacity 0.15s, transform 0.15s, box-shadow 0.15s;
14147
- box-shadow: 0 4px 12px rgba(33, 84, 239, 0.16);
14192
+ box-shadow: 0 0.25vw 0.8vw rgba(33, 84, 239, 0.16);
14148
14193
  }
14149
14194
  .ps-cpw-next-btn:disabled {
14150
14195
  background: var(--ps-border-color);
@@ -14155,33 +14200,18 @@ const STYLES$1 = `
14155
14200
  .ps-cpw-next-btn:hover { opacity: 0.92; }
14156
14201
  .ps-cpw-next-btn:active { transform: scale(0.98); }
14157
14202
 
14158
- @media (max-width: 768px) {
14159
- .ps-cpw-root { gap: 14px; }
14160
- .ps-cpw-step-head {
14161
- flex-direction: column; gap: 10px;
14162
- padding-bottom: 12px;
14163
- }
14164
- .ps-cpw-progress { min-width: 0; width: 100%; align-items: flex-start; margin-top: 0; }
14165
- .ps-cpw-step-title { font-size: 22px; }
14166
- .ps-cpw-field-grid { grid-template-columns: 1fr; gap: 18px; }
14167
- .ps-cpw-split { grid-template-columns: 1fr; gap: 18px; }
14168
- .ps-cpw-photo-preview { max-width: 220px; }
14169
- .ps-cpw-card-row { gap: 8px; }
14170
- .ps-cpw-card { padding: 10px 6px 8px; }
14171
- .ps-cpw-card-thumb { height: 80px; }
14172
- .ps-cpw-card-label { font-size: 9px; }
14173
- .ps-cpw-footer { flex-direction: column-reverse; gap: 10px; align-items: stretch; }
14174
- .ps-cpw-next-btn { width: 100%; padding: 14px; }
14175
- .ps-cpw-back-btn { text-align: center; }
14176
- .ps-cpw-method-grid { grid-template-columns: 1fr; }
14177
- .ps-cpw-method-card { padding: 22px 18px; }
14178
- .ps-cpw-photo-frame { max-width: 100%; height: 320px; }
14179
- }
14203
+ /* No wizard-specific @media (max-width: 768px) overrides anymore.
14204
+ Every ps-cpw-* rule is clamp/vw-driven, so the layout shrinks
14205
+ gracefully from 320px → 5000px without a hard breakpoint. */
14180
14206
 
14181
14207
  /* ── Progressive (one-question-at-a-time) flow ── */
14182
14208
  .ps-cpw-progressive {
14183
- display: flex; flex-direction: column; gap: 16px;
14184
- padding: 8px 0;
14209
+ display: flex; flex-direction: column;
14210
+ gap: clamp(12px, 1vw, 22px);
14211
+ padding: clamp(6px, 0.5vw, 12px) 0;
14212
+ /* Fills the wizard body so the card row can stretch vertically */
14213
+ flex: 1; min-height: 0;
14214
+ width: 100%; box-sizing: border-box;
14185
14215
  }
14186
14216
  .ps-cpw-fade-in {
14187
14217
  animation: ps-cpw-fade-up 0.35s cubic-bezier(0.16, 1, 0.3, 1);
@@ -14191,34 +14221,34 @@ const STYLES$1 = `
14191
14221
  to { opacity: 1; transform: translateY(0); }
14192
14222
  }
14193
14223
 
14194
- /* ── Method picker (initial step) — vertical stack of compact rows ── */
14224
+ /* ── Method picker (initial step) — cards stretch to fill body ── */
14195
14225
  .ps-cpw-method-picker {
14196
14226
  display: flex; flex-direction: column;
14197
- gap: 10px; padding: 8px 0;
14227
+ gap: clamp(8px, 0.7vw, 14px);
14228
+ padding: clamp(4px, 0.4vw, 10px) 0;
14198
14229
  flex: 1; min-height: 0;
14199
14230
  width: 100%; box-sizing: border-box;
14200
- justify-content: center;
14201
14231
  }
14202
14232
  .ps-cpw-method-intro { display: none; }
14203
- /* Two cards side by side. Each card stacks the illustration on top
14204
- and the text below keeps the cards short and lets the picker fit
14205
- inside the wizard body without changing the modal height. */
14233
+ /* Grid claims the picker's leftover height so the cards inside
14234
+ stretch vertically to fill it. */
14206
14235
  .ps-cpw-method-grid {
14207
14236
  display: grid;
14208
14237
  grid-template-columns: 1fr 1fr;
14209
- gap: 12px;
14238
+ gap: clamp(8px, 0.75vw, 16px);
14210
14239
  width: 100%; max-width: 100%;
14211
14240
  box-sizing: border-box;
14241
+ flex: 1; min-height: 0;
14212
14242
  }
14213
14243
  .ps-cpw-method-card {
14214
14244
  display: flex; flex-direction: column; align-items: stretch;
14215
14245
  gap: 0;
14216
- min-width: 0;
14246
+ min-width: 0; min-height: 0;
14217
14247
  width: 100%; max-width: 100%;
14218
14248
  box-sizing: border-box;
14219
14249
  background: var(--ps-bg-primary);
14220
14250
  border: 1.5px solid var(--ps-border-subtle);
14221
- border-radius: 10px;
14251
+ border-radius: clamp(8px, 0.6vw, 14px);
14222
14252
  overflow: hidden;
14223
14253
  cursor: pointer; font-family: inherit; text-align: left;
14224
14254
  transition: border-color 0.18s, transform 0.18s, box-shadow 0.18s;
@@ -14226,34 +14256,40 @@ const STYLES$1 = `
14226
14256
  .ps-cpw-method-card:hover {
14227
14257
  border-color: var(--ps-accent);
14228
14258
  transform: translateY(-1px);
14229
- box-shadow: 0 6px 18px rgba(33, 84, 239, 0.10);
14259
+ box-shadow: 0 0.4vw 1.2vw rgba(33, 84, 239, 0.10);
14230
14260
  }
14231
- /* Square-ish illustration slot at the top of each card */
14261
+ /* Illustration fills the upper portion of each card — flex 1 instead
14262
+ of a fixed height so the image grows with the available card height
14263
+ instead of leaving empty space. */
14232
14264
  .ps-cpw-method-img {
14233
14265
  width: 100%;
14234
- aspect-ratio: 1 / 1;
14235
- flex-shrink: 0;
14266
+ flex: 1; min-height: 0;
14236
14267
  background: var(--ps-bg-secondary);
14237
14268
  display: flex; align-items: center; justify-content: center;
14238
14269
  border-bottom: 1px solid var(--ps-border-subtle);
14270
+ padding: clamp(6px, 0.6vw, 14px);
14271
+ box-sizing: border-box;
14239
14272
  }
14240
14273
  .ps-cpw-method-img img {
14241
14274
  width: 100%; height: 100%;
14275
+ max-width: 100%; max-height: 100%;
14242
14276
  object-fit: contain;
14243
14277
  display: block;
14244
14278
  }
14245
14279
  .ps-cpw-method-text {
14246
- display: flex; flex-direction: column; gap: 3px;
14247
- padding: 10px 12px 12px;
14280
+ display: flex; flex-direction: column; gap: clamp(2px, 0.15vw, 4px);
14281
+ padding: clamp(6px, 0.55vw, 12px) clamp(8px, 0.7vw, 14px) clamp(8px, 0.7vw, 14px);
14248
14282
  width: 100%; box-sizing: border-box;
14249
14283
  }
14250
14284
  .ps-cpw-method-title {
14251
- font-size: 13px; font-weight: 700;
14285
+ font-size: clamp(11px, 0.78vw, 15px);
14286
+ font-weight: 700;
14252
14287
  color: var(--ps-text-primary);
14253
14288
  letter-spacing: -0.005em;
14254
14289
  }
14255
14290
  .ps-cpw-method-desc {
14256
- font-size: 11px; line-height: 1.4;
14291
+ font-size: clamp(9px, 0.65vw, 12px);
14292
+ line-height: 1.4;
14257
14293
  color: var(--ps-text-muted);
14258
14294
  }
14259
14295
  /* Wizard reuses the SDK basics screen's .ps-bp-inline-* row styles for
@@ -14261,53 +14297,48 @@ const STYLES$1 = `
14261
14297
  them inside the wizard body so all rows fit without scrolling. */
14262
14298
  .ps-cpw-inline-fields {
14263
14299
  width: 100%;
14264
- margin-top: 4px;
14265
- /* Generous breathing room between rows so the inputs don't feel
14266
- cramped together — each row owns its own divider. */
14300
+ margin-top: clamp(2px, 0.2vw, 6px);
14267
14301
  display: flex; flex-direction: column;
14268
- gap: 6px;
14302
+ gap: clamp(4px, 0.4vw, 10px);
14269
14303
  }
14270
14304
  .ps-cpw-inline-fields .ps-bp-inline-row {
14271
- padding: 14px 2px;
14305
+ padding: clamp(10px, 0.9vw, 18px) clamp(1px, 0.1vw, 4px);
14272
14306
  border-bottom: 1px solid var(--ps-border-subtle);
14273
14307
  }
14274
14308
  .ps-cpw-inline-fields .ps-bp-inline-row:last-child { border-bottom: none; }
14275
14309
  .ps-cpw-inline-fields .ps-bp-inline-label {
14276
- flex: 0 0 70px;
14277
- font-size: 10px;
14310
+ flex: 0 0 clamp(56px, 4.5vw, 90px);
14311
+ font-size: clamp(9px, 0.62vw, 12px);
14278
14312
  font-weight: 700;
14279
- color: var(--ps-text-primary); /* black labels */
14313
+ color: var(--ps-text-primary);
14280
14314
  letter-spacing: 0.08em;
14281
14315
  }
14282
14316
  .ps-cpw-inline-fields .ps-bp-inline-input {
14283
- font-size: 14px;
14317
+ font-size: clamp(12px, 0.85vw, 16px);
14284
14318
  padding-bottom: 0;
14285
- border-bottom: none; /* parent row owns the divider */
14319
+ border-bottom: none;
14286
14320
  color: var(--ps-text-primary);
14287
14321
  }
14288
14322
  .ps-cpw-inline-fields .ps-bp-inline-unit {
14289
- font-size: 11px;
14323
+ font-size: clamp(10px, 0.7vw, 13px);
14290
14324
  color: var(--ps-text-muted);
14291
14325
  }
14292
14326
 
14293
- /* ── Image path — single combined screen ──
14294
- Gender pills + name input + photo dropzone (or preview) all on one
14295
- screen with no scrolling. The dropzone/preview takes whatever
14296
- vertical space is left after the inputs. */
14327
+ /* ── Image path — single combined screen, vw-scaled ── */
14297
14328
  .ps-cpw-image-combined {
14298
14329
  display: flex; flex-direction: column; align-items: stretch;
14299
- gap: 10px;
14330
+ gap: clamp(8px, 0.7vw, 14px);
14300
14331
  flex: 1; min-height: 0;
14301
14332
  width: 100%; box-sizing: border-box;
14302
14333
  }
14303
14334
  .ps-cpw-photo-dropzone {
14304
14335
  display: flex; flex-direction: column; align-items: center; justify-content: center;
14305
- gap: 6px;
14336
+ gap: clamp(4px, 0.4vw, 10px);
14306
14337
  flex: 1; min-height: 0;
14307
14338
  width: 100%; box-sizing: border-box;
14308
- padding: 14px;
14339
+ padding: clamp(10px, 0.9vw, 18px);
14309
14340
  border: 2px dashed var(--ps-border-color);
14310
- border-radius: 10px;
14341
+ border-radius: clamp(8px, 0.6vw, 14px);
14311
14342
  background: var(--ps-bg-secondary);
14312
14343
  color: var(--ps-text-muted);
14313
14344
  cursor: pointer; font-family: inherit;
@@ -14316,17 +14347,19 @@ const STYLES$1 = `
14316
14347
  .ps-cpw-photo-dropzone:hover { border-color: var(--ps-accent); background: rgba(33, 84, 239, 0.04); }
14317
14348
  .ps-cpw-photo-dropzone:disabled { opacity: 0.6; cursor: default; }
14318
14349
  .ps-cpw-photo-dropzone-title {
14319
- font-size: 12px; font-weight: 600; color: var(--ps-text-primary);
14350
+ font-size: clamp(11px, 0.78vw, 14px);
14351
+ font-weight: 600; color: var(--ps-text-primary);
14320
14352
  }
14321
14353
  .ps-cpw-photo-dropzone-hint {
14322
- font-size: 10px; color: var(--ps-text-muted);
14354
+ font-size: clamp(9px, 0.62vw, 12px);
14355
+ color: var(--ps-text-muted);
14323
14356
  }
14324
14357
  .ps-cpw-photo-frame {
14325
14358
  position: relative;
14326
14359
  flex: 1; min-height: 0;
14327
14360
  width: 100%;
14328
14361
  background: var(--ps-bg-secondary);
14329
- border-radius: 10px;
14362
+ border-radius: clamp(8px, 0.6vw, 14px);
14330
14363
  overflow: hidden;
14331
14364
  border: 1px solid var(--ps-border-subtle);
14332
14365
  }
@@ -14337,25 +14370,27 @@ const STYLES$1 = `
14337
14370
  }
14338
14371
  .ps-cpw-photo-retake {
14339
14372
  align-self: center;
14340
- padding: 12px 24px;
14373
+ padding: clamp(8px, 0.7vw, 14px) clamp(16px, 1.4vw, 28px);
14341
14374
  border-radius: 999px;
14342
14375
  background: transparent;
14343
14376
  color: var(--ps-accent);
14344
14377
  border: 2px solid var(--ps-accent);
14345
- font-weight: 700; font-size: 12px;
14378
+ font-weight: 700;
14379
+ font-size: clamp(10px, 0.7vw, 13px);
14346
14380
  text-transform: uppercase; letter-spacing: 0.08em;
14347
14381
  cursor: pointer; font-family: inherit;
14348
14382
  transition: background 0.18s;
14349
14383
  }
14350
14384
  .ps-cpw-photo-retake:hover { background: rgba(33, 84, 239, 0.08); }
14351
14385
  .ps-cpw-hint {
14352
- font-size: 12.5px; line-height: 1.6;
14386
+ font-size: clamp(10px, 0.72vw, 13px);
14387
+ line-height: 1.6;
14353
14388
  color: var(--ps-text-muted);
14354
- margin: 8px 0 0;
14355
- padding: 12px 14px;
14389
+ margin: clamp(4px, 0.4vw, 10px) 0 0;
14390
+ padding: clamp(8px, 0.7vw, 14px) clamp(10px, 0.85vw, 16px);
14356
14391
  background: rgba(33, 84, 239, 0.05);
14357
14392
  border-left: 3px solid var(--ps-accent);
14358
- border-radius: 6px;
14393
+ border-radius: clamp(4px, 0.35vw, 8px);
14359
14394
  }
14360
14395
 
14361
14396
  /* ════════════════════════════════════════════════════════════════