@primestyleai/tryon 3.5.1 → 3.6.1

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.
@@ -6,6 +6,10 @@ export interface PrimeStyleTryonProps {
6
6
  buttonText?: string;
7
7
  apiUrl?: string;
8
8
  showPoweredBy?: boolean;
9
+ /** Show the default camera icon in the button. Defaults to true. Set to false to hide it. */
10
+ showIcon?: boolean;
11
+ /** Custom icon element to replace the default camera icon. Pass any React node (e.g. an <svg> or <img>). */
12
+ buttonIcon?: React.ReactNode;
9
13
  buttonStyles?: ButtonStyles;
10
14
  modalStyles?: ModalStyles;
11
15
  classNames?: PrimeStyleClassNames;
@@ -184,6 +184,8 @@ function PrimeStyleTryonInner({
184
184
  buttonText = "Virtual Try-On",
185
185
  apiUrl,
186
186
  showPoweredBy = true,
187
+ showIcon = true,
188
+ buttonIcon,
187
189
  buttonStyles: btnS = {},
188
190
  modalStyles: mdlS = {},
189
191
  classNames: cn = {},
@@ -1299,7 +1301,7 @@ function PrimeStyleTryonInner({
1299
1301
  }
1300
1302
  return /* @__PURE__ */ jsxs("div", { className: cx("ps-tryon-root", cn.root || className), style: { ...cssVars, ...style }, "data-ps-tryon": true, children: [
1301
1303
  /* @__PURE__ */ jsxs("button", { onClick: handleOpen, className: cx("ps-tryon-btn", cn.button), children: [
1302
- /* @__PURE__ */ jsx(CameraIcon, { size: parseInt(btnS.iconSize || "18") }),
1304
+ showIcon !== false && (buttonIcon || /* @__PURE__ */ jsx(CameraIcon, { size: parseInt(btnS.iconSize || "18") })),
1303
1305
  /* @__PURE__ */ jsx("span", { children: buttonText })
1304
1306
  ] }),
1305
1307
  view !== "idle" && /* @__PURE__ */ jsx("div", { className: cx("ps-tryon-overlay", cn.overlay), onClick: (e) => {
@@ -1331,16 +1333,17 @@ const STYLES = `
1331
1333
  .ps-tryon-root { display: inline-block; }
1332
1334
 
1333
1335
  .ps-tryon-btn {
1334
- display: inline-flex; align-items: center; gap: 8px;
1335
- padding: var(--ps-btn-padding, 12px 24px);
1336
+ display: inline-flex; align-items: center; gap: clamp(5px, 0.42vw, 8px);
1337
+ padding: var(--ps-btn-padding, clamp(8px, 0.63vw, 12px) clamp(14px, 1.25vw, 24px));
1336
1338
  background: var(--ps-btn-bg, #bb945c); color: var(--ps-btn-color, #111211);
1337
1339
  font-family: var(--ps-btn-font, system-ui, -apple-system, sans-serif);
1338
- font-size: var(--ps-btn-font-size, 14px); font-weight: var(--ps-btn-font-weight, 600);
1339
- border: var(--ps-btn-border, none); border-radius: var(--ps-btn-radius, 8px);
1340
+ font-size: var(--ps-btn-font-size, clamp(10px, 0.73vw, 14px)); font-weight: var(--ps-btn-font-weight, 600);
1341
+ border: var(--ps-btn-border, none); border-radius: var(--ps-btn-radius, clamp(5px, 0.42vw, 8px));
1340
1342
  cursor: pointer; transition: all 0.2s ease;
1341
1343
  width: var(--ps-btn-width, auto); height: var(--ps-btn-height, auto);
1342
1344
  box-shadow: var(--ps-btn-shadow, none); line-height: 1; white-space: nowrap;
1343
1345
  }
1346
+ .ps-tryon-btn svg { width: clamp(14px, 0.94vw, 18px); height: clamp(14px, 0.94vw, 18px); }
1344
1347
  .ps-tryon-btn:hover { background: var(--ps-btn-hover-bg, #a07d4e); transform: translateY(-1px); }
1345
1348
  .ps-tryon-btn:active { transform: translateY(0); }
1346
1349
 
@@ -1348,8 +1351,8 @@ const STYLES = `
1348
1351
  position: fixed; inset: 0; background: var(--ps-modal-overlay, rgba(0,0,0,0.6));
1349
1352
  display: flex; align-items: center; justify-content: center;
1350
1353
  z-index: 999999;
1351
- padding: 16px;
1352
- padding: max(16px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));
1354
+ padding: clamp(10px, 0.83vw, 16px);
1355
+ padding: max(clamp(10px, 0.83vw, 16px), env(safe-area-inset-top)) max(clamp(10px, 0.83vw, 16px), env(safe-area-inset-right)) max(clamp(10px, 0.83vw, 16px), env(safe-area-inset-bottom)) max(clamp(10px, 0.83vw, 16px), env(safe-area-inset-left));
1353
1356
  animation: ps-fade-in 0.2s ease;
1354
1357
  overflow-y: auto; -webkit-overflow-scrolling: touch;
1355
1358
  }
@@ -1357,243 +1360,243 @@ const STYLES = `
1357
1360
 
1358
1361
  .ps-tryon-modal {
1359
1362
  background: var(--ps-modal-bg, #111211); color: var(--ps-modal-color, #fff);
1360
- border-radius: var(--ps-modal-radius, 16px); width: var(--ps-modal-width, 100%);
1361
- max-width: var(--ps-modal-max-width, 520px); max-height: 92vh; overflow-y: auto;
1363
+ border-radius: var(--ps-modal-radius, clamp(10px, 0.83vw, 16px)); width: var(--ps-modal-width, 100%);
1364
+ max-width: var(--ps-modal-max-width, clamp(380px, 27vw, 520px)); max-height: 92vh; overflow-y: auto;
1362
1365
  font-family: var(--ps-modal-font, system-ui, -apple-system, sans-serif);
1363
- box-shadow: 0 25px 50px rgba(0,0,0,0.4); animation: ps-slide-up 0.3s ease;
1366
+ box-shadow: 0 clamp(16px, 1.3vw, 25px) clamp(32px, 2.6vw, 50px) rgba(0,0,0,0.4); animation: ps-slide-up 0.3s ease;
1364
1367
  scrollbar-width: thin; scrollbar-color: #333 transparent;
1365
1368
  flex-shrink: 0;
1366
1369
  }
1367
- .ps-tryon-modal-wide { max-width: 920px; }
1370
+ .ps-tryon-modal-wide { max-width: clamp(680px, 48vw, 920px); }
1368
1371
  .ps-tryon-modal:has(.ps-tryon-drawer-open) { overflow: hidden; }
1369
- @keyframes ps-slide-up { from { transform: translateY(20px) scale(0.97); opacity: 0; } to { transform: translateY(0) scale(1); opacity: 1; } }
1372
+ @keyframes ps-slide-up { from { transform: translateY(clamp(12px, 1.04vw, 20px)) scale(0.97); opacity: 0; } to { transform: translateY(0) scale(1); opacity: 1; } }
1370
1373
 
1371
1374
  /* Header */
1372
1375
  .ps-tryon-header {
1373
1376
  display: flex; align-items: center; justify-content: space-between;
1374
- padding: 18px 24px; background: var(--ps-modal-header-bg, #1a1b1a);
1377
+ padding: clamp(10px, 0.94vw, 18px) clamp(14px, 1.25vw, 24px); background: var(--ps-modal-header-bg, #1a1b1a);
1375
1378
  border-bottom: 1px solid #333;
1376
- border-radius: var(--ps-modal-radius, 16px) var(--ps-modal-radius, 16px) 0 0;
1379
+ border-radius: var(--ps-modal-radius, clamp(10px, 0.83vw, 16px)) var(--ps-modal-radius, clamp(10px, 0.83vw, 16px)) 0 0;
1377
1380
  }
1378
- .ps-tryon-title { font-size: 15px; font-weight: 600; color: var(--ps-modal-header-color, #fff); }
1379
- .ps-tryon-header-actions { display: flex; align-items: center; gap: 8px; }
1381
+ .ps-tryon-title { font-size: clamp(11px, 0.78vw, 15px); font-weight: 600; color: var(--ps-modal-header-color, #fff); }
1382
+ .ps-tryon-header-actions { display: flex; align-items: center; gap: clamp(5px, 0.42vw, 8px); }
1380
1383
  .ps-tryon-header-icon {
1381
- width: 34px; height: 34px; display: flex; align-items: center; justify-content: center;
1382
- border: 1.5px solid #333; border-radius: 10px; background: transparent;
1384
+ width: clamp(24px, 1.77vw, 34px); height: clamp(24px, 1.77vw, 34px); display: flex; align-items: center; justify-content: center;
1385
+ border: 1.5px solid #333; border-radius: clamp(6px, 0.52vw, 10px); background: transparent;
1383
1386
  cursor: pointer; color: #999; transition: all 0.2s;
1384
1387
  }
1385
1388
  .ps-tryon-header-icon:hover { border-color: #bb945c; color: #bb945c; }
1386
1389
  .ps-tryon-header-icon svg { stroke: currentColor; fill: none; }
1387
1390
  .ps-tryon-close {
1388
- width: 32px; height: 32px; display: flex; align-items: center; justify-content: center;
1391
+ width: clamp(22px, 1.67vw, 32px); height: clamp(22px, 1.67vw, 32px); display: flex; align-items: center; justify-content: center;
1389
1392
  background: none; border: none; color: var(--ps-modal-close-color, #999);
1390
- cursor: pointer; border-radius: 6px; transition: background 0.15s;
1393
+ cursor: pointer; border-radius: clamp(4px, 0.31vw, 6px); transition: background 0.15s;
1391
1394
  }
1392
1395
  .ps-tryon-close:hover { background: rgba(255,255,255,0.1); }
1393
1396
 
1394
1397
  /* Stepper */
1395
- .ps-tryon-stepper { padding: 20px 24px 12px; }
1398
+ .ps-tryon-stepper { padding: clamp(12px, 1.04vw, 20px) clamp(14px, 1.25vw, 24px) clamp(7px, 0.63vw, 12px); }
1396
1399
  .ps-tryon-stepper-track { display: flex; align-items: flex-start; }
1397
1400
  .ps-tryon-stepper-fragment { display: flex; align-items: flex-start; flex: 1; }
1398
1401
  .ps-tryon-stepper-fragment:first-child { flex: 0 0 auto; }
1399
- .ps-tryon-stepper-line { flex: 1; height: 2px; background: #333; margin-top: 14px; transition: background 0.4s; }
1402
+ .ps-tryon-stepper-line { flex: 1; height: 2px; background: #333; margin-top: clamp(8px, 0.73vw, 14px); transition: background 0.4s; }
1400
1403
  .ps-tryon-stepper-line.ps-done { background: #bb945c; }
1401
1404
  .ps-tryon-stepper-step { display: flex; flex-direction: column; align-items: center; }
1402
1405
  .ps-tryon-stepper-circle {
1403
- width: 28px; height: 28px; border-radius: 50%;
1406
+ width: clamp(20px, 1.46vw, 28px); height: clamp(20px, 1.46vw, 28px); border-radius: 50%;
1404
1407
  display: flex; align-items: center; justify-content: center;
1405
- border: 2px solid #333; font-size: 12px; font-weight: 600; color: #666;
1408
+ border: 2px solid #333; font-size: clamp(9px, 0.63vw, 12px); font-weight: 600; color: #666;
1406
1409
  transition: all 0.3s;
1407
1410
  }
1408
1411
  .ps-tryon-stepper-step.ps-done .ps-tryon-stepper-circle { background: #bb945c; border-color: #bb945c; color: #111; }
1409
1412
  .ps-tryon-stepper-step.ps-done .ps-tryon-stepper-circle svg { stroke: #111; }
1410
- .ps-tryon-stepper-step.ps-active .ps-tryon-stepper-circle { border-color: #bb945c; color: #bb945c; box-shadow: 0 0 0 4px rgba(187,148,92,0.15); }
1411
- .ps-tryon-stepper-label { font-size: 10px; margin-top: 5px; color: #666; font-weight: 500; text-align: center; white-space: nowrap; }
1413
+ .ps-tryon-stepper-step.ps-active .ps-tryon-stepper-circle { border-color: #bb945c; color: #bb945c; box-shadow: 0 0 0 clamp(3px, 0.21vw, 4px) rgba(187,148,92,0.15); }
1414
+ .ps-tryon-stepper-label { font-size: clamp(8px, 0.52vw, 10px); margin-top: clamp(3px, 0.26vw, 5px); color: #666; font-weight: 500; text-align: center; white-space: nowrap; }
1412
1415
  .ps-tryon-stepper-step.ps-done .ps-tryon-stepper-label { color: #bb945c; }
1413
1416
  .ps-tryon-stepper-step.ps-active .ps-tryon-stepper-label { color: #bb945c; font-weight: 700; }
1414
1417
 
1415
1418
  /* Body */
1416
- .ps-tryon-body { padding: 24px; min-height: 300px; }
1417
- @keyframes ps-fade-up { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } }
1419
+ .ps-tryon-body { padding: clamp(14px, 1.25vw, 24px); min-height: clamp(200px, 15.6vw, 300px); }
1420
+ @keyframes ps-fade-up { from { opacity: 0; transform: translateY(clamp(7px, 0.63vw, 12px)); } to { opacity: 1; transform: translateY(0); } }
1418
1421
  .ps-tryon-view-enter { animation: ps-fade-up 0.35s ease both; }
1419
1422
 
1420
1423
  /* Welcome */
1421
1424
  .ps-tryon-welcome { text-align: center; }
1422
- .ps-tryon-welcome-hero { margin-bottom: 20px; }
1425
+ .ps-tryon-welcome-hero { margin-bottom: clamp(12px, 1.04vw, 20px); }
1423
1426
  .ps-tryon-welcome-img-wrap { position: relative; display: inline-block; }
1424
- .ps-tryon-welcome-product { width: 120px; height: 140px; object-fit: cover; border-radius: 14px; border: 2px solid #333; }
1425
- .ps-tryon-welcome-sparkle { position: absolute; top: -8px; right: -8px; width: 28px; height: 28px; background: #bb945c; border-radius: 50%; display: flex; align-items: center; justify-content: center; animation: ps-float 3s ease-in-out infinite; }
1426
- .ps-tryon-welcome-sparkle svg { stroke: #111; width: 14px; height: 14px; }
1427
- @keyframes ps-float { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-6px); } }
1428
- .ps-tryon-welcome-title { font-size: 20px; font-weight: 700; color: #fff; margin: 14px 0 4px; }
1429
- .ps-tryon-welcome-sub { font-size: 13px; color: #999; margin: 0; }
1430
- .ps-tryon-features { display: flex; gap: 10px; margin: 20px 0; }
1431
- .ps-tryon-feature { flex: 1; padding: 14px 10px; border: 1px solid #333; border-radius: 12px; text-align: center; }
1432
- .ps-tryon-feature-icon { margin-bottom: 6px; color: #bb945c; display: flex; justify-content: center; }
1427
+ .ps-tryon-welcome-product { width: clamp(80px, 6.25vw, 120px); height: clamp(96px, 7.3vw, 140px); object-fit: cover; border-radius: clamp(8px, 0.73vw, 14px); border: 2px solid #333; }
1428
+ .ps-tryon-welcome-sparkle { position: absolute; top: clamp(-6px, -0.42vw, -8px); right: clamp(-6px, -0.42vw, -8px); width: clamp(20px, 1.46vw, 28px); height: clamp(20px, 1.46vw, 28px); background: #bb945c; border-radius: 50%; display: flex; align-items: center; justify-content: center; animation: ps-float 3s ease-in-out infinite; }
1429
+ .ps-tryon-welcome-sparkle svg { stroke: #111; width: clamp(10px, 0.73vw, 14px); height: clamp(10px, 0.73vw, 14px); }
1430
+ @keyframes ps-float { 0%,100% { transform: translateY(0); } 50% { transform: translateY(clamp(-4px, -0.31vw, -6px)); } }
1431
+ .ps-tryon-welcome-title { font-size: clamp(14px, 1.04vw, 20px); font-weight: 700; color: #fff; margin: clamp(8px, 0.73vw, 14px) 0 clamp(2px, 0.21vw, 4px); }
1432
+ .ps-tryon-welcome-sub { font-size: clamp(10px, 0.68vw, 13px); color: #999; margin: 0; }
1433
+ .ps-tryon-features { display: flex; gap: clamp(6px, 0.52vw, 10px); margin: clamp(12px, 1.04vw, 20px) 0; }
1434
+ .ps-tryon-feature { flex: 1; padding: clamp(8px, 0.73vw, 14px) clamp(6px, 0.52vw, 10px); border: 1px solid #333; border-radius: clamp(8px, 0.63vw, 12px); text-align: center; }
1435
+ .ps-tryon-feature-icon { margin-bottom: clamp(4px, 0.31vw, 6px); color: #bb945c; display: flex; justify-content: center; }
1433
1436
  .ps-tryon-feature-icon svg { stroke: currentColor; fill: none; }
1434
- .ps-tryon-feature-title { font-size: 12px; font-weight: 600; color: #fff; margin-bottom: 2px; }
1435
- .ps-tryon-feature-desc { font-size: 10px; color: #999; }
1437
+ .ps-tryon-feature-title { font-size: clamp(9px, 0.63vw, 12px); font-weight: 600; color: #fff; margin-bottom: 2px; }
1438
+ .ps-tryon-feature-desc { font-size: clamp(8px, 0.52vw, 10px); color: #999; }
1436
1439
  .ps-tryon-cta {
1437
- width: 100%; padding: 14px; background: #bb945c; color: #111; border: none;
1438
- border-radius: 12px; font-size: 15px; font-weight: 700; cursor: pointer;
1439
- display: flex; align-items: center; justify-content: center; gap: 8px; transition: all 0.2s;
1440
+ width: 100%; padding: clamp(8px, 0.73vw, 14px); background: #bb945c; color: #111; border: none;
1441
+ border-radius: clamp(8px, 0.63vw, 12px); font-size: clamp(11px, 0.78vw, 15px); font-weight: 700; cursor: pointer;
1442
+ display: flex; align-items: center; justify-content: center; gap: clamp(5px, 0.42vw, 8px); transition: all 0.2s;
1440
1443
  font-family: var(--ps-modal-font, system-ui, sans-serif);
1441
1444
  }
1442
1445
  .ps-tryon-cta:hover { background: #a07d4e; transform: translateY(-1px); }
1443
1446
  .ps-tryon-cta svg { stroke: #111; }
1444
- .ps-tryon-welcome-note { font-size: 11px; color: #666; margin-top: 12px; }
1447
+ .ps-tryon-welcome-note { font-size: clamp(8px, 0.57vw, 11px); color: #666; margin-top: clamp(7px, 0.63vw, 12px); }
1445
1448
 
1446
1449
  /* Upload */
1447
1450
  .ps-tryon-upload {
1448
- border: 2px dashed var(--ps-upload-border, #333); border-radius: 12px;
1449
- padding: 40px 24px; text-align: center; cursor: pointer; transition: all 0.2s;
1451
+ border: 2px dashed var(--ps-upload-border, #333); border-radius: clamp(8px, 0.63vw, 12px);
1452
+ padding: clamp(24px, 2.08vw, 40px) clamp(14px, 1.25vw, 24px); text-align: center; cursor: pointer; transition: all 0.2s;
1450
1453
  background: var(--ps-upload-bg, transparent); display: flex; flex-direction: column; align-items: center;
1451
1454
  }
1452
1455
  .ps-tryon-upload:hover, .ps-tryon-drag-over { border-color: #bb945c; background: rgba(187,148,92,0.05); }
1453
- .ps-tryon-upload svg { color: var(--ps-upload-icon-color, #bb945c); margin-bottom: 12px; }
1454
- .ps-tryon-upload-text { font-size: 14px; color: var(--ps-upload-color, #fff); margin: 0 0 4px; }
1455
- .ps-tryon-upload-hint { font-size: 12px; color: #999; margin: 0; }
1456
- .ps-tryon-preview { position: relative; margin-bottom: 4px; }
1457
- .ps-tryon-preview img { width: 100%; border-radius: 12px; display: block; }
1456
+ .ps-tryon-upload svg { color: var(--ps-upload-icon-color, #bb945c); margin-bottom: clamp(7px, 0.63vw, 12px); }
1457
+ .ps-tryon-upload-text { font-size: clamp(10px, 0.73vw, 14px); color: var(--ps-upload-color, #fff); margin: 0 0 clamp(2px, 0.21vw, 4px); }
1458
+ .ps-tryon-upload-hint { font-size: clamp(9px, 0.63vw, 12px); color: #999; margin: 0; }
1459
+ .ps-tryon-preview { position: relative; margin-bottom: clamp(2px, 0.21vw, 4px); }
1460
+ .ps-tryon-preview img { width: 100%; border-radius: clamp(8px, 0.63vw, 12px); display: block; }
1458
1461
  .ps-tryon-preview-remove {
1459
- position: absolute; top: 8px; right: 8px; width: 28px; height: 28px;
1462
+ position: absolute; top: clamp(5px, 0.42vw, 8px); right: clamp(5px, 0.42vw, 8px); width: clamp(20px, 1.46vw, 28px); height: clamp(20px, 1.46vw, 28px);
1460
1463
  border-radius: 50%; background: rgba(0,0,0,0.6); border: none; color: white;
1461
1464
  cursor: pointer; display: flex; align-items: center; justify-content: center;
1462
- font-size: 16px; transition: background 0.15s;
1465
+ font-size: clamp(12px, 0.83vw, 16px); transition: background 0.15s;
1463
1466
  }
1464
1467
  .ps-tryon-preview-remove:hover { background: rgba(0,0,0,0.8); }
1465
1468
  .ps-tryon-submit {
1466
- width: 100%; padding: 14px; margin-top: 16px;
1469
+ width: 100%; padding: clamp(8px, 0.73vw, 14px); margin-top: clamp(10px, 0.83vw, 16px);
1467
1470
  background: var(--ps-modal-primary-bg, #bb945c); color: var(--ps-modal-primary-color, #111);
1468
1471
  font-family: var(--ps-modal-font, system-ui, sans-serif);
1469
- font-size: 14px; font-weight: 600; border: none;
1470
- border-radius: var(--ps-modal-primary-radius, 10px);
1472
+ font-size: clamp(10px, 0.73vw, 14px); font-weight: 600; border: none;
1473
+ border-radius: var(--ps-modal-primary-radius, clamp(6px, 0.52vw, 10px));
1471
1474
  cursor: pointer; transition: all 0.2s;
1472
- display: flex; align-items: center; justify-content: center; gap: 8px;
1475
+ display: flex; align-items: center; justify-content: center; gap: clamp(5px, 0.42vw, 8px);
1473
1476
  }
1474
1477
  .ps-tryon-submit:hover { opacity: 0.9; transform: translateY(-1px); }
1475
1478
  .ps-tryon-submit svg { stroke: currentColor; }
1476
1479
 
1477
1480
  /* Profile bar */
1478
- .ps-tryon-profile-bar { margin-bottom: 16px; }
1481
+ .ps-tryon-profile-bar { margin-bottom: clamp(10px, 0.83vw, 16px); }
1479
1482
  .ps-tryon-profile-select {
1480
- width: 100%; padding: 10px 36px 10px 14px; border: 1.5px solid #333; border-radius: 10px;
1481
- background: #1a1b1a; color: #fff; font-size: 13px; font-family: inherit;
1483
+ width: 100%; padding: clamp(6px, 0.52vw, 10px) clamp(22px, 1.88vw, 36px) clamp(6px, 0.52vw, 10px) clamp(8px, 0.73vw, 14px); border: 1.5px solid #333; border-radius: clamp(6px, 0.52vw, 10px);
1484
+ background: #1a1b1a; color: #fff; font-size: clamp(10px, 0.68vw, 13px); font-family: inherit;
1482
1485
  appearance: none; -webkit-appearance: none; cursor: pointer; outline: none;
1483
1486
  background-image: url("data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 12 12' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M2.5 4.5L6 8L9.5 4.5' stroke='%23999' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
1484
- background-repeat: no-repeat; background-position: right 14px center;
1487
+ background-repeat: no-repeat; background-position: right clamp(8px, 0.73vw, 14px) center;
1485
1488
  }
1486
1489
  .ps-tryon-profile-select:focus { border-color: #bb945c; }
1487
1490
 
1488
1491
  /* Sizing choice */
1489
1492
  .ps-tryon-sizing-choice { text-align: center; }
1490
- .ps-tryon-section-title { font-size: 16px; font-weight: 600; color: #fff; margin: 0 0 16px; }
1491
- .ps-tryon-choice-cards { display: flex; flex-direction: column; gap: 10px; }
1493
+ .ps-tryon-section-title { font-size: clamp(12px, 0.83vw, 16px); font-weight: 600; color: #fff; margin: 0 0 clamp(10px, 0.83vw, 16px); }
1494
+ .ps-tryon-choice-cards { display: flex; flex-direction: column; gap: clamp(6px, 0.52vw, 10px); }
1492
1495
  .ps-tryon-choice-card {
1493
- display: flex; align-items: center; gap: 14px; padding: 16px;
1494
- border: 1.5px solid #333; border-radius: 12px;
1496
+ display: flex; align-items: center; gap: clamp(8px, 0.73vw, 14px); padding: clamp(10px, 0.83vw, 16px);
1497
+ border: 1.5px solid #333; border-radius: clamp(8px, 0.63vw, 12px);
1495
1498
  background: #1a1b1a; cursor: pointer; transition: all 0.25s; text-align: left;
1496
1499
  width: 100%; font-family: inherit; position: relative; overflow: hidden;
1497
1500
  }
1498
- .ps-tryon-choice-card:hover { border-color: #bb945c; transform: translateY(-1px); box-shadow: 0 6px 20px rgba(187,148,92,0.08); }
1501
+ .ps-tryon-choice-card:hover { border-color: #bb945c; transform: translateY(-1px); box-shadow: 0 clamp(4px, 0.31vw, 6px) clamp(12px, 1.04vw, 20px) rgba(187,148,92,0.08); }
1499
1502
  .ps-tryon-choice-card:hover::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: #bb945c; }
1500
1503
  .ps-tryon-choice-icon { color: #bb945c; flex-shrink: 0; }
1501
1504
  .ps-tryon-choice-icon svg { stroke: currentColor; fill: none; }
1502
1505
  .ps-tryon-choice-info { flex: 1; min-width: 0; }
1503
- .ps-tryon-choice-title { font-size: 14px; font-weight: 600; color: #fff; }
1504
- .ps-tryon-choice-desc { font-size: 12px; color: #999; margin-top: 2px; }
1506
+ .ps-tryon-choice-title { font-size: clamp(10px, 0.73vw, 14px); font-weight: 600; color: #fff; }
1507
+ .ps-tryon-choice-desc { font-size: clamp(9px, 0.63vw, 12px); color: #999; margin-top: 2px; }
1505
1508
  .ps-tryon-choice-badge {
1506
- padding: 3px 10px; border-radius: 20px; flex-shrink: 0;
1507
- background: rgba(187,148,92,0.12); color: #bb945c; font-size: 10px; font-weight: 600;
1509
+ padding: clamp(2px, 0.16vw, 3px) clamp(6px, 0.52vw, 10px); border-radius: clamp(12px, 1.04vw, 20px); flex-shrink: 0;
1510
+ background: rgba(187,148,92,0.12); color: #bb945c; font-size: clamp(8px, 0.52vw, 10px); font-weight: 600;
1508
1511
  }
1509
1512
  .ps-tryon-sg-notice {
1510
- font-size: 12px; color: #999; text-align: center; padding: 10px 14px;
1511
- margin-bottom: 12px; border: 1px solid #333; border-radius: 10px; background: #1a1b1a;
1513
+ font-size: clamp(9px, 0.63vw, 12px); color: #999; text-align: center; padding: clamp(6px, 0.52vw, 10px) clamp(8px, 0.73vw, 14px);
1514
+ margin-bottom: clamp(7px, 0.63vw, 12px); border: 1px solid #333; border-radius: clamp(6px, 0.52vw, 10px); background: #1a1b1a;
1512
1515
  }
1513
1516
  .ps-tryon-sg-found {
1514
1517
  color: #4ade80; border-color: rgba(74,222,128,0.2); background: rgba(74,222,128,0.05);
1515
- display: flex; align-items: center; justify-content: center; gap: 6px;
1518
+ display: flex; align-items: center; justify-content: center; gap: clamp(4px, 0.31vw, 6px);
1516
1519
  }
1517
1520
  .ps-tryon-sg-found svg { stroke: #4ade80; }
1518
- .ps-tryon-sg-checking { display: flex; flex-direction: column; align-items: center; padding: 40px 20px; text-align: center; }
1519
- .ps-tryon-sg-checking-icon { color: #bb945c; margin-bottom: 16px; animation: ps-pulse-ruler 1.5s ease-in-out infinite; }
1521
+ .ps-tryon-sg-checking { display: flex; flex-direction: column; align-items: center; padding: clamp(24px, 2.08vw, 40px) clamp(12px, 1.04vw, 20px); text-align: center; }
1522
+ .ps-tryon-sg-checking-icon { color: #bb945c; margin-bottom: clamp(10px, 0.83vw, 16px); animation: ps-pulse-ruler 1.5s ease-in-out infinite; }
1520
1523
  .ps-tryon-sg-checking-icon svg { stroke: currentColor; fill: none; }
1521
1524
  @keyframes ps-pulse-ruler { 0%, 100% { transform: scale(1); opacity: 0.7; } 50% { transform: scale(1.15); opacity: 1; } }
1522
- .ps-tryon-sg-checking-bar-wrap { width: 180px; height: 4px; background: #333; border-radius: 2px; overflow: hidden; margin-bottom: 20px; }
1525
+ .ps-tryon-sg-checking-bar-wrap { width: clamp(120px, 9.4vw, 180px); height: 4px; background: #333; border-radius: 2px; overflow: hidden; margin-bottom: clamp(12px, 1.04vw, 20px); }
1523
1526
  .ps-tryon-sg-checking-bar { height: 100%; width: 40%; background: linear-gradient(90deg, #bb945c, #d6ba7d); border-radius: 2px; animation: ps-sg-bar 1.5s ease-in-out infinite; }
1524
1527
  @keyframes ps-sg-bar { 0% { transform: translateX(-100%); } 100% { transform: translateX(350%); } }
1525
- .ps-tryon-sg-checking .ps-tryon-section-title { margin-bottom: 6px; }
1526
- .ps-tryon-sg-checking-sub { font-size: 13px; color: #999; margin: 0; }
1528
+ .ps-tryon-sg-checking .ps-tryon-section-title { margin-bottom: clamp(4px, 0.31vw, 6px); }
1529
+ .ps-tryon-sg-checking-sub { font-size: clamp(10px, 0.68vw, 13px); color: #999; margin: 0; }
1527
1530
 
1528
1531
  /* Back button */
1529
- .ps-tryon-back { display: flex; align-items: center; gap: 6px; background: none; border: none; color: #999; font-size: 13px; cursor: pointer; padding: 0; margin-bottom: 12px; font-family: inherit; transition: color 0.2s; }
1532
+ .ps-tryon-back { display: flex; align-items: center; gap: clamp(4px, 0.31vw, 6px); background: none; border: none; color: #999; font-size: clamp(10px, 0.68vw, 13px); cursor: pointer; padding: 0; margin-bottom: clamp(7px, 0.63vw, 12px); font-family: inherit; transition: color 0.2s; }
1530
1533
  .ps-tryon-back:hover { color: #fff; }
1531
1534
  .ps-tryon-back svg { stroke: currentColor; fill: none; }
1532
1535
 
1533
1536
  /* Sizing form */
1534
- .ps-tryon-sizing-form { display: flex; flex-direction: column; gap: 12px; }
1535
- .ps-tryon-input-row { display: flex; align-items: center; gap: 10px; }
1536
- .ps-tryon-input-row label { font-size: 13px; font-weight: 500; color: #ccc; min-width: 90px; flex-shrink: 0; }
1537
+ .ps-tryon-sizing-form { display: flex; flex-direction: column; gap: clamp(7px, 0.63vw, 12px); }
1538
+ .ps-tryon-input-row { display: flex; align-items: center; gap: clamp(6px, 0.52vw, 10px); }
1539
+ .ps-tryon-input-row label { font-size: clamp(10px, 0.68vw, 13px); font-weight: 500; color: #ccc; min-width: clamp(60px, 4.7vw, 90px); flex-shrink: 0; }
1537
1540
  .ps-tryon-input-row input {
1538
- flex: 1; padding: 10px 14px; border: 1.5px solid #333; border-radius: 10px;
1539
- background: #1a1b1a; color: #fff; font-size: 14px; font-family: inherit; outline: none;
1541
+ flex: 1; padding: clamp(6px, 0.52vw, 10px) clamp(8px, 0.73vw, 14px); border: 1.5px solid #333; border-radius: clamp(6px, 0.52vw, 10px);
1542
+ background: #1a1b1a; color: #fff; font-size: clamp(10px, 0.73vw, 14px); font-family: inherit; outline: none;
1540
1543
  transition: border-color 0.2s; -moz-appearance: textfield;
1541
1544
  }
1542
1545
  .ps-tryon-input-row input::-webkit-outer-spin-button,
1543
1546
  .ps-tryon-input-row input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
1544
1547
  .ps-tryon-input-row input:focus { border-color: #bb945c; }
1545
- .ps-tryon-input-unit { font-size: 12px; color: #666; flex-shrink: 0; }
1546
- .ps-tryon-height-ft { display: flex; align-items: center; gap: 6px; flex: 1; }
1547
- .ps-tryon-height-ft input { width: 60px; padding: 10px 10px; border: 1.5px solid #333; border-radius: 10px; background: #1a1b1a; color: #fff; font-size: 14px; font-family: inherit; outline: none; text-align: center; -moz-appearance: textfield; }
1548
+ .ps-tryon-input-unit { font-size: clamp(9px, 0.63vw, 12px); color: #666; flex-shrink: 0; }
1549
+ .ps-tryon-height-ft { display: flex; align-items: center; gap: clamp(4px, 0.31vw, 6px); flex: 1; }
1550
+ .ps-tryon-height-ft input { width: clamp(42px, 3.13vw, 60px); padding: clamp(6px, 0.52vw, 10px); border: 1.5px solid #333; border-radius: clamp(6px, 0.52vw, 10px); background: #1a1b1a; color: #fff; font-size: clamp(10px, 0.73vw, 14px); font-family: inherit; outline: none; text-align: center; -moz-appearance: textfield; }
1548
1551
  .ps-tryon-height-ft input::-webkit-outer-spin-button, .ps-tryon-height-ft input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
1549
1552
  .ps-tryon-height-ft input:focus { border-color: #bb945c; }
1550
- .ps-tryon-height-ft span { font-size: 12px; color: #666; }
1553
+ .ps-tryon-height-ft span { font-size: clamp(9px, 0.63vw, 12px); color: #666; }
1551
1554
  .ps-tryon-country-select {
1552
- flex: 1; padding: 10px 36px 10px 14px; border: 1.5px solid #333; border-radius: 10px;
1553
- background: #1a1b1a; color: #fff; font-size: 13px; font-family: inherit;
1555
+ flex: 1; padding: clamp(6px, 0.52vw, 10px) clamp(22px, 1.88vw, 36px) clamp(6px, 0.52vw, 10px) clamp(8px, 0.73vw, 14px); border: 1.5px solid #333; border-radius: clamp(6px, 0.52vw, 10px);
1556
+ background: #1a1b1a; color: #fff; font-size: clamp(10px, 0.68vw, 13px); font-family: inherit;
1554
1557
  appearance: none; -webkit-appearance: none; cursor: pointer; outline: none;
1555
1558
  background-image: url("data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 12 12' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M2.5 4.5L6 8L9.5 4.5' stroke='%23999' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
1556
- background-repeat: no-repeat; background-position: right 14px center;
1559
+ background-repeat: no-repeat; background-position: right clamp(8px, 0.73vw, 14px) center;
1557
1560
  }
1558
1561
  .ps-tryon-country-select:focus { border-color: #bb945c; }
1559
- .ps-tryon-unit-toggle { display: flex; gap: 0; border: 1.5px solid #333; border-radius: 8px; overflow: hidden; }
1562
+ .ps-tryon-unit-toggle { display: flex; gap: 0; border: 1.5px solid #333; border-radius: clamp(5px, 0.42vw, 8px); overflow: hidden; }
1560
1563
  .ps-tryon-unit-btn {
1561
- padding: 6px 14px; background: transparent; border: none; color: #999;
1562
- font-size: 12px; font-weight: 600; cursor: pointer; transition: all 0.2s; font-family: inherit;
1564
+ padding: clamp(4px, 0.31vw, 6px) clamp(8px, 0.73vw, 14px); background: transparent; border: none; color: #999;
1565
+ font-size: clamp(9px, 0.63vw, 12px); font-weight: 600; cursor: pointer; transition: all 0.2s; font-family: inherit;
1563
1566
  }
1564
1567
  .ps-tryon-unit-btn.ps-active { background: #bb945c; color: #111; }
1565
- .ps-tryon-section-label { font-size: 11px; font-weight: 700; color: #bb945c; text-transform: uppercase; letter-spacing: 0.08em; margin: 4px 0 2px; }
1566
- .ps-tryon-optional-section { border-top: 1px solid #333; padding-top: 10px; margin-top: 6px; }
1567
- .ps-tryon-optional-toggle { display: flex; align-items: center; justify-content: space-between; width: 100%; background: none; border: 1px solid #333; border-radius: 10px; padding: 10px 14px; color: #999; font-size: 13px; font-weight: 600; cursor: pointer; font-family: inherit; transition: all 0.2s; }
1568
+ .ps-tryon-section-label { font-size: clamp(8px, 0.57vw, 11px); font-weight: 700; color: #bb945c; text-transform: uppercase; letter-spacing: 0.08em; margin: clamp(2px, 0.21vw, 4px) 0 clamp(1px, 0.1vw, 2px); }
1569
+ .ps-tryon-optional-section { border-top: 1px solid #333; padding-top: clamp(6px, 0.52vw, 10px); margin-top: clamp(4px, 0.31vw, 6px); }
1570
+ .ps-tryon-optional-toggle { display: flex; align-items: center; justify-content: space-between; width: 100%; background: none; border: 1px solid #333; border-radius: clamp(6px, 0.52vw, 10px); padding: clamp(6px, 0.52vw, 10px) clamp(8px, 0.73vw, 14px); color: #999; font-size: clamp(10px, 0.68vw, 13px); font-weight: 600; cursor: pointer; font-family: inherit; transition: all 0.2s; }
1568
1571
  .ps-tryon-optional-toggle:hover { border-color: #555; color: #ccc; }
1569
- .ps-tryon-chevron { transition: transform 0.2s; font-size: 14px; }
1570
- .ps-tryon-optional-fields { display: flex; flex-direction: column; gap: 10px; padding-top: 12px; }
1571
- .ps-tryon-shoe-section { border-top: 1px solid #333; padding-top: 14px; margin-top: 6px; display: flex; flex-direction: column; gap: 10px; }
1572
- .ps-tryon-shoe-title { font-size: 13px; font-weight: 600; color: #999; }
1573
- .ps-tryon-disclaimer { font-size: 11px; color: #666; margin: 4px 0 0; }
1574
- .ps-tryon-form-save-toggle { margin-top: 10px; display: flex; flex-direction: column; gap: 8px; }
1572
+ .ps-tryon-chevron { transition: transform 0.2s; font-size: clamp(10px, 0.73vw, 14px); }
1573
+ .ps-tryon-optional-fields { display: flex; flex-direction: column; gap: clamp(6px, 0.52vw, 10px); padding-top: clamp(7px, 0.63vw, 12px); }
1574
+ .ps-tryon-shoe-section { border-top: 1px solid #333; padding-top: clamp(8px, 0.73vw, 14px); margin-top: clamp(4px, 0.31vw, 6px); display: flex; flex-direction: column; gap: clamp(6px, 0.52vw, 10px); }
1575
+ .ps-tryon-shoe-title { font-size: clamp(10px, 0.68vw, 13px); font-weight: 600; color: #999; }
1576
+ .ps-tryon-disclaimer { font-size: clamp(8px, 0.57vw, 11px); color: #666; margin: clamp(2px, 0.21vw, 4px) 0 0; }
1577
+ .ps-tryon-form-save-toggle { margin-top: clamp(6px, 0.52vw, 10px); display: flex; flex-direction: column; gap: clamp(5px, 0.42vw, 8px); }
1575
1578
  .ps-tryon-form-save-check {
1576
- display: flex; align-items: center; gap: 8px; font-size: 13px; color: #ccc; cursor: pointer; user-select: none;
1579
+ display: flex; align-items: center; gap: clamp(5px, 0.42vw, 8px); font-size: clamp(10px, 0.68vw, 13px); color: #ccc; cursor: pointer; user-select: none;
1577
1580
  }
1578
1581
  .ps-tryon-form-save-check input[type="checkbox"] {
1579
- width: 16px; height: 16px; accent-color: #bb945c; cursor: pointer;
1582
+ width: clamp(12px, 0.83vw, 16px); height: clamp(12px, 0.83vw, 16px); accent-color: #bb945c; cursor: pointer;
1580
1583
  }
1581
1584
  .ps-tryon-form-save-name {
1582
- padding: 8px 12px; border: 1.5px solid #333; border-radius: 10px;
1583
- background: #1a1b1a; color: #fff; font-size: 13px; font-family: inherit; outline: none;
1585
+ padding: clamp(5px, 0.42vw, 8px) clamp(7px, 0.63vw, 12px); border: 1.5px solid #333; border-radius: clamp(6px, 0.52vw, 10px);
1586
+ background: #1a1b1a; color: #fff; font-size: clamp(10px, 0.68vw, 13px); font-family: inherit; outline: none;
1584
1587
  transition: border-color 0.2s;
1585
1588
  }
1586
1589
  .ps-tryon-form-save-name:focus { border-color: #bb945c; }
1587
1590
 
1588
1591
  /* Processing */
1589
- .ps-tryon-processing { text-align: center; padding: 24px; display: flex; flex-direction: column; align-items: center; }
1592
+ .ps-tryon-processing { text-align: center; padding: clamp(14px, 1.25vw, 24px); display: flex; flex-direction: column; align-items: center; }
1590
1593
 
1591
1594
  .ps-tryon-processing-image-wrap {
1592
- position: relative; width: 220px; height: 280px; margin: 0 auto 24px;
1593
- border-radius: 16px; overflow: hidden; border: 2px solid #333;
1595
+ position: relative; width: clamp(160px, 11.5vw, 220px); height: clamp(200px, 14.6vw, 280px); margin: 0 auto clamp(14px, 1.25vw, 24px);
1596
+ border-radius: clamp(10px, 0.83vw, 16px); overflow: hidden; border: 2px solid #333;
1594
1597
  }
1595
1598
  .ps-tryon-processing-blur {
1596
- position: absolute; inset: -20px; background-size: cover; background-position: center;
1599
+ position: absolute; inset: clamp(-14px, -1.04vw, -20px); background-size: cover; background-position: center;
1597
1600
  filter: blur(25px) brightness(0.5); transform: scale(1.2);
1598
1601
  }
1599
1602
  .ps-tryon-processing-model {
@@ -1607,7 +1610,7 @@ const STYLES = `
1607
1610
  .ps-tryon-scan-line {
1608
1611
  position: absolute; left: 0; right: 0; height: 3px;
1609
1612
  background: linear-gradient(90deg, transparent, #bb945c 20%, #d6ba7d 50%, #bb945c 80%, transparent);
1610
- box-shadow: 0 0 15px rgba(187,148,92,0.6), 0 0 40px rgba(187,148,92,0.2);
1613
+ box-shadow: 0 0 clamp(10px, 0.78vw, 15px) rgba(187,148,92,0.6), 0 0 clamp(24px, 2.08vw, 40px) rgba(187,148,92,0.2);
1611
1614
  animation: ps-scan 2.5s ease-in-out infinite;
1612
1615
  pointer-events: none; z-index: 2;
1613
1616
  }
@@ -1619,35 +1622,35 @@ const STYLES = `
1619
1622
  }
1620
1623
 
1621
1624
  .ps-tryon-progress-section {
1622
- display: flex; align-items: center; gap: 12px; width: 100%; max-width: 300px; margin-bottom: 16px;
1625
+ display: flex; align-items: center; gap: clamp(7px, 0.63vw, 12px); width: 100%; max-width: clamp(200px, 15.6vw, 300px); margin-bottom: clamp(10px, 0.83vw, 16px);
1623
1626
  }
1624
1627
  .ps-tryon-progress-bar-wrap {
1625
- flex: 1; height: 6px; background: #333; border-radius: 3px; overflow: hidden;
1628
+ flex: 1; height: clamp(4px, 0.31vw, 6px); background: #333; border-radius: 3px; overflow: hidden;
1626
1629
  }
1627
1630
  .ps-tryon-progress-bar-fill {
1628
1631
  height: 100%; background: linear-gradient(90deg, #bb945c, #d6ba7d);
1629
1632
  border-radius: 3px; transition: width 0.3s ease; width: 0%;
1630
1633
  }
1631
1634
  .ps-tryon-progress-pct {
1632
- font-size: 13px; font-weight: 700; color: #bb945c; min-width: 36px; text-align: right;
1635
+ font-size: clamp(10px, 0.68vw, 13px); font-weight: 700; color: #bb945c; min-width: clamp(24px, 1.88vw, 36px); text-align: right;
1633
1636
  font-variant-numeric: tabular-nums;
1634
1637
  }
1635
1638
 
1636
1639
  @keyframes ps-scale-in { from { opacity: 0; transform: scale(0.8); } to { opacity: 1; transform: scale(1); } }
1637
- .ps-tryon-processing-text { font-size: 14px; color: #fff; margin: 0 0 4px; }
1638
- .ps-tryon-processing-sub { font-size: 12px; color: #999; margin: 0; }
1640
+ .ps-tryon-processing-text { font-size: clamp(10px, 0.73vw, 14px); color: #fff; margin: 0 0 clamp(2px, 0.21vw, 4px); }
1641
+ .ps-tryon-processing-sub { font-size: clamp(9px, 0.63vw, 12px); color: #999; margin: 0; }
1639
1642
 
1640
1643
  /* Result */
1641
1644
  .ps-tryon-result-layout { text-align: center; }
1642
- .ps-tryon-result-split { display: flex; gap: 24px; text-align: left; align-items: stretch; }
1645
+ .ps-tryon-result-split { display: flex; gap: clamp(14px, 1.25vw, 24px); text-align: left; align-items: stretch; }
1643
1646
  .ps-tryon-result-image-col { flex: 0 0 45%; min-width: 0; display: flex; align-items: center; justify-content: center; }
1644
- .ps-tryon-result-image-col img { width: 100%; max-height: 400px; object-fit: contain; border-radius: 14px; box-shadow: 0 8px 32px rgba(0,0,0,0.2); animation: ps-scale-in 0.5s ease both; }
1647
+ .ps-tryon-result-image-col img { width: 100%; max-height: clamp(280px, 20.8vw, 400px); object-fit: contain; border-radius: clamp(8px, 0.73vw, 14px); box-shadow: 0 clamp(5px, 0.42vw, 8px) clamp(20px, 1.67vw, 32px) rgba(0,0,0,0.2); animation: ps-scale-in 0.5s ease both; }
1645
1648
  .ps-tryon-result-info-col { flex: 1; min-width: 0; }
1646
- .ps-tryon-result-layout:not(.ps-tryon-result-split) img { width: 100%; border-radius: 12px; margin-bottom: 16px; }
1647
- .ps-tryon-result-actions { display: flex; gap: 8px; margin-top: 16px; }
1649
+ .ps-tryon-result-layout:not(.ps-tryon-result-split) img { width: 100%; border-radius: clamp(8px, 0.63vw, 12px); margin-bottom: clamp(10px, 0.83vw, 16px); }
1650
+ .ps-tryon-result-actions { display: flex; gap: clamp(5px, 0.42vw, 8px); margin-top: clamp(10px, 0.83vw, 16px); }
1648
1651
  .ps-tryon-result-actions button {
1649
- flex: 1; padding: 12px; font-family: var(--ps-modal-font, system-ui, sans-serif);
1650
- font-size: 13px; font-weight: 600; border-radius: 10px; cursor: pointer; transition: all 0.2s; border: none;
1652
+ flex: 1; padding: clamp(7px, 0.63vw, 12px); font-family: var(--ps-modal-font, system-ui, sans-serif);
1653
+ font-size: clamp(10px, 0.68vw, 13px); font-weight: 600; border-radius: clamp(6px, 0.52vw, 10px); cursor: pointer; transition: all 0.2s; border: none;
1651
1654
  }
1652
1655
  .ps-tryon-btn-download { background: #bb945c; color: #111; }
1653
1656
  .ps-tryon-btn-download:hover { opacity: 0.9; }
@@ -1655,153 +1658,153 @@ const STYLES = `
1655
1658
  .ps-tryon-btn-retry:hover { background: rgba(255,255,255,0.12); }
1656
1659
 
1657
1660
  /* Size recommendation */
1658
- .ps-tryon-size-recommend { margin-bottom: 16px; }
1659
- .ps-tryon-size-title { font-size: 18px; font-weight: 700; color: #fff; margin: 0 0 14px; }
1661
+ .ps-tryon-size-recommend { margin-bottom: clamp(10px, 0.83vw, 16px); }
1662
+ .ps-tryon-size-title { font-size: clamp(13px, 0.94vw, 18px); font-weight: 700; color: #fff; margin: 0 0 clamp(8px, 0.73vw, 14px); }
1660
1663
  .ps-tryon-size-hero-row {
1661
- display: flex; align-items: center; gap: 16px; padding: 16px 20px;
1662
- border: 1.5px solid #333; border-radius: 14px; margin-bottom: 18px; background: rgba(255,255,255,0.02);
1664
+ display: flex; align-items: center; gap: clamp(10px, 0.83vw, 16px); padding: clamp(10px, 0.83vw, 16px) clamp(12px, 1.04vw, 20px);
1665
+ border: 1.5px solid #333; border-radius: clamp(8px, 0.73vw, 14px); margin-bottom: clamp(10px, 0.94vw, 18px); background: rgba(255,255,255,0.02);
1663
1666
  }
1664
1667
  .ps-tryon-size-badge {
1665
1668
  display: inline-flex; align-items: center; justify-content: center;
1666
- min-width: 56px; height: 56px; padding: 0 12px; border-radius: 12px;
1669
+ min-width: clamp(40px, 2.92vw, 56px); height: clamp(40px, 2.92vw, 56px); padding: 0 clamp(7px, 0.63vw, 12px); border-radius: clamp(8px, 0.63vw, 12px);
1667
1670
  background: linear-gradient(135deg, #bb945c, #d6ba7d);
1668
- color: #111; font-size: 24px; font-weight: 800; letter-spacing: -0.02em;
1671
+ color: #111; font-size: clamp(16px, 1.25vw, 24px); font-weight: 800; letter-spacing: -0.02em;
1669
1672
  }
1670
- .ps-tryon-size-conf-label { font-size: 15px; font-weight: 600; }
1673
+ .ps-tryon-size-conf-label { font-size: clamp(11px, 0.78vw, 15px); font-weight: 600; }
1671
1674
  .ps-conf-high { color: #4ade80; } .ps-conf-medium { color: #bb945c; } .ps-conf-low { color: #ef4444; }
1672
1675
 
1673
- .ps-tryon-sizing-loading { text-align: center; padding: 20px 0; }
1676
+ .ps-tryon-sizing-loading { text-align: center; padding: clamp(12px, 1.04vw, 20px) 0; }
1674
1677
  .ps-tryon-size-loading-spinner {
1675
- width: 36px; height: 36px; border: 3px solid #333;
1678
+ width: clamp(24px, 1.88vw, 36px); height: clamp(24px, 1.88vw, 36px); border: 3px solid #333;
1676
1679
  border-top-color: #bb945c; border-radius: 50%;
1677
- animation: ps-spin 0.8s linear infinite; margin: 0 auto 12px;
1680
+ animation: ps-spin 0.8s linear infinite; margin: 0 auto clamp(7px, 0.63vw, 12px);
1678
1681
  }
1679
1682
  @keyframes ps-spin { to { transform: rotate(360deg); } }
1680
1683
 
1681
1684
  /* Fit Summary */
1682
- .ps-tryon-fit-summary { margin-bottom: 16px; }
1683
- .ps-tryon-fit-summary-title { font-size: 15px; font-weight: 700; color: #fff; margin: 0 0 10px; }
1684
- .ps-tryon-fit-row { display: flex; align-items: center; gap: 10px; padding: 8px 0; }
1685
+ .ps-tryon-fit-summary { margin-bottom: clamp(10px, 0.83vw, 16px); }
1686
+ .ps-tryon-fit-summary-title { font-size: clamp(11px, 0.78vw, 15px); font-weight: 700; color: #fff; margin: 0 0 clamp(6px, 0.52vw, 10px); }
1687
+ .ps-tryon-fit-row { display: flex; align-items: center; gap: clamp(6px, 0.52vw, 10px); padding: clamp(5px, 0.42vw, 8px) 0; }
1685
1688
  .ps-tryon-fit-icon {
1686
- width: 22px; height: 22px; border-radius: 50%; display: flex; align-items: center; justify-content: center;
1687
- font-size: 12px; font-weight: 700; flex-shrink: 0;
1689
+ width: clamp(16px, 1.15vw, 22px); height: clamp(16px, 1.15vw, 22px); border-radius: 50%; display: flex; align-items: center; justify-content: center;
1690
+ font-size: clamp(9px, 0.63vw, 12px); font-weight: 700; flex-shrink: 0;
1688
1691
  }
1689
1692
  .ps-fit-icon-good { background: rgba(74,222,128,0.15); color: #4ade80; }
1690
1693
  .ps-fit-icon-tight { background: rgba(245,158,11,0.15); color: #f59e0b; }
1691
1694
  .ps-fit-icon-loose { background: rgba(96,165,250,0.15); color: #60a5fa; }
1692
- .ps-tryon-fit-text { font-size: 14px; color: #ccc; line-height: 1.4; }
1695
+ .ps-tryon-fit-text { font-size: clamp(10px, 0.73vw, 14px); color: #ccc; line-height: 1.4; }
1693
1696
  .ps-tryon-fit-text strong { color: #fff; font-weight: 600; }
1694
1697
  .ps-tryon-fit-details-toggle {
1695
- display: inline-block; margin-top: 8px; font-size: 13px; color: #bb945c; cursor: pointer;
1698
+ display: inline-block; margin-top: clamp(5px, 0.42vw, 8px); font-size: clamp(10px, 0.68vw, 13px); color: #bb945c; cursor: pointer;
1696
1699
  font-weight: 600; background: none; border: none; padding: 0; font-family: inherit;
1697
1700
  }
1698
1701
  .ps-tryon-fit-details-toggle:hover { color: #d6ba7d; }
1699
- .ps-tryon-fit-table { width: 100%; border-collapse: collapse; margin-top: 10px; font-size: 13px; }
1700
- .ps-tryon-fit-table th { text-align: left; padding: 8px 10px; border-bottom: 1px solid #333; color: #999; font-weight: 600; }
1701
- .ps-tryon-fit-table td { padding: 8px 10px; border-bottom: 1px solid #222; color: #ccc; }
1702
+ .ps-tryon-fit-table { width: 100%; border-collapse: collapse; margin-top: clamp(6px, 0.52vw, 10px); font-size: clamp(10px, 0.68vw, 13px); }
1703
+ .ps-tryon-fit-table th { text-align: left; padding: clamp(5px, 0.42vw, 8px) clamp(6px, 0.52vw, 10px); border-bottom: 1px solid #333; color: #999; font-weight: 600; }
1704
+ .ps-tryon-fit-table td { padding: clamp(5px, 0.42vw, 8px) clamp(6px, 0.52vw, 10px); border-bottom: 1px solid #222; color: #ccc; }
1702
1705
  .ps-fit-good { color: #4ade80; } .ps-fit-tight { color: #f59e0b; } .ps-fit-loose { color: #60a5fa; }
1703
1706
 
1704
1707
  /* Equivalent Sizes */
1705
- .ps-tryon-equiv-section { margin-bottom: 16px; }
1706
- .ps-tryon-equiv-title { font-size: 15px; font-weight: 700; color: #fff; margin: 0 0 10px; }
1707
- .ps-tryon-equiv-chips { display: flex; flex-wrap: wrap; gap: 8px; }
1708
+ .ps-tryon-equiv-section { margin-bottom: clamp(10px, 0.83vw, 16px); }
1709
+ .ps-tryon-equiv-title { font-size: clamp(11px, 0.78vw, 15px); font-weight: 700; color: #fff; margin: 0 0 clamp(6px, 0.52vw, 10px); }
1710
+ .ps-tryon-equiv-chips { display: flex; flex-wrap: wrap; gap: clamp(5px, 0.42vw, 8px); }
1708
1711
  .ps-tryon-equiv-chip {
1709
- display: flex; align-items: center; border: 1.5px solid #333; border-radius: 10px; overflow: hidden;
1712
+ display: flex; align-items: center; border: 1.5px solid #333; border-radius: clamp(6px, 0.52vw, 10px); overflow: hidden;
1710
1713
  }
1711
- .ps-tryon-equiv-region { padding: 7px 10px; font-size: 12px; color: #999; font-weight: 600; background: rgba(255,255,255,0.03); }
1712
- .ps-tryon-equiv-value { padding: 7px 12px; font-size: 14px; color: #fff; font-weight: 700; }
1714
+ .ps-tryon-equiv-region { padding: clamp(4px, 0.36vw, 7px) clamp(6px, 0.52vw, 10px); font-size: clamp(9px, 0.63vw, 12px); color: #999; font-weight: 600; background: rgba(255,255,255,0.03); }
1715
+ .ps-tryon-equiv-value { padding: clamp(4px, 0.36vw, 7px) clamp(7px, 0.63vw, 12px); font-size: clamp(10px, 0.73vw, 14px); color: #fff; font-weight: 700; }
1713
1716
 
1714
- .ps-tryon-size-reasoning { font-size: 14px; color: #ccc; line-height: 1.6; margin-bottom: 14px; }
1717
+ .ps-tryon-size-reasoning { font-size: clamp(10px, 0.73vw, 14px); color: #ccc; line-height: 1.6; margin-bottom: clamp(8px, 0.73vw, 14px); }
1715
1718
 
1716
1719
  /* Save profile prompt */
1717
- .ps-tryon-save-prompt { margin-top: 14px; padding: 14px; border: 1px solid #333; border-radius: 12px; background: #1a1b1a; }
1718
- .ps-tryon-save-label { font-size: 12px; color: #999; margin-bottom: 10px; }
1719
- .ps-tryon-save-row { display: flex; gap: 8px; }
1720
+ .ps-tryon-save-prompt { margin-top: clamp(8px, 0.73vw, 14px); padding: clamp(8px, 0.73vw, 14px); border: 1px solid #333; border-radius: clamp(8px, 0.63vw, 12px); background: #1a1b1a; }
1721
+ .ps-tryon-save-label { font-size: clamp(9px, 0.63vw, 12px); color: #999; margin-bottom: clamp(6px, 0.52vw, 10px); }
1722
+ .ps-tryon-save-row { display: flex; gap: clamp(5px, 0.42vw, 8px); }
1720
1723
  .ps-tryon-save-row input {
1721
- flex: 1; padding: 10px 14px; border: 1.5px solid #333; border-radius: 10px;
1722
- background: #111211; color: #fff; font-size: 13px; font-family: inherit; outline: none;
1724
+ flex: 1; padding: clamp(6px, 0.52vw, 10px) clamp(8px, 0.73vw, 14px); border: 1.5px solid #333; border-radius: clamp(6px, 0.52vw, 10px);
1725
+ background: #111211; color: #fff; font-size: clamp(10px, 0.68vw, 13px); font-family: inherit; outline: none;
1723
1726
  }
1724
1727
  .ps-tryon-save-row input:focus { border-color: #bb945c; }
1725
1728
  .ps-tryon-save-row button {
1726
- padding: 10px 20px; background: #bb945c; color: #111; border: none; border-radius: 10px;
1727
- font-size: 13px; font-weight: 600; cursor: pointer; transition: opacity 0.2s; font-family: inherit;
1729
+ padding: clamp(6px, 0.52vw, 10px) clamp(12px, 1.04vw, 20px); background: #bb945c; color: #111; border: none; border-radius: clamp(6px, 0.52vw, 10px);
1730
+ font-size: clamp(10px, 0.68vw, 13px); font-weight: 600; cursor: pointer; transition: opacity 0.2s; font-family: inherit;
1728
1731
  }
1729
1732
  .ps-tryon-save-row button:hover { opacity: 0.9; }
1730
- .ps-tryon-save-btn-group { display: flex; gap: 6px; }
1733
+ .ps-tryon-save-btn-group { display: flex; gap: clamp(4px, 0.31vw, 6px); }
1731
1734
  .ps-tryon-save-new-btn { background: transparent !important; border: 1.5px solid #bb945c !important; color: #bb945c !important; }
1732
1735
  .ps-tryon-save-new-btn:hover { background: rgba(187,148,92,0.1) !important; }
1733
- .ps-tryon-save-done { font-size: 12px; color: #4ade80; margin-top: 10px; display: flex; align-items: center; gap: 6px; justify-content: center; }
1736
+ .ps-tryon-save-done { font-size: clamp(9px, 0.63vw, 12px); color: #4ade80; margin-top: clamp(6px, 0.52vw, 10px); display: flex; align-items: center; gap: clamp(4px, 0.31vw, 6px); justify-content: center; }
1734
1737
  .ps-tryon-save-done svg { stroke: currentColor; }
1735
1738
 
1736
1739
  /* Error */
1737
- .ps-tryon-error { text-align: center; padding: 24px; display: flex; flex-direction: column; align-items: center; }
1738
- .ps-tryon-error svg { color: #ef4444; margin-bottom: 12px; }
1739
- .ps-tryon-error-text { font-size: 14px; color: #ef4444; margin: 0 0 16px; }
1740
+ .ps-tryon-error { text-align: center; padding: clamp(14px, 1.25vw, 24px); display: flex; flex-direction: column; align-items: center; }
1741
+ .ps-tryon-error svg { color: #ef4444; margin-bottom: clamp(7px, 0.63vw, 12px); }
1742
+ .ps-tryon-error-text { font-size: clamp(10px, 0.73vw, 14px); color: #ef4444; margin: 0 0 clamp(10px, 0.83vw, 16px); }
1740
1743
 
1741
1744
  /* Footer */
1742
- .ps-tryon-powered { text-align: center; padding: 12px 24px 16px; font-size: 11px; color: #666; }
1745
+ .ps-tryon-powered { text-align: center; padding: clamp(7px, 0.63vw, 12px) clamp(14px, 1.25vw, 24px) clamp(10px, 0.83vw, 16px); font-size: clamp(8px, 0.57vw, 11px); color: #666; }
1743
1746
  .ps-tryon-powered a { color: #bb945c; text-decoration: none; }
1744
1747
  .ps-tryon-powered a:hover { text-decoration: underline; }
1745
1748
 
1746
1749
  /* Drawer */
1747
1750
  .ps-tryon-drawer {
1748
1751
  position: absolute; inset: 0; z-index: 20; background: var(--ps-modal-bg, #111211);
1749
- overflow-y: auto; scrollbar-width: thin; padding: 20px 24px;
1752
+ overflow-y: auto; scrollbar-width: thin; padding: clamp(12px, 1.04vw, 20px) clamp(14px, 1.25vw, 24px);
1750
1753
  transform: translateX(100%); transition: transform 0.25s cubic-bezier(0.4,0,0.2,1);
1751
1754
  }
1752
1755
  .ps-tryon-drawer-open { transform: translateX(0); }
1753
- .ps-tryon-drawer-header { display: flex; align-items: center; gap: 10px; padding-bottom: 14px; margin-bottom: 14px; border-bottom: 1px solid #333; }
1756
+ .ps-tryon-drawer-header { display: flex; align-items: center; gap: clamp(6px, 0.52vw, 10px); padding-bottom: clamp(8px, 0.73vw, 14px); margin-bottom: clamp(8px, 0.73vw, 14px); border-bottom: 1px solid #333; }
1754
1757
  .ps-tryon-drawer-back {
1755
- width: 32px; height: 32px; display: flex; align-items: center; justify-content: center;
1756
- border: 1.5px solid #333; border-radius: 10px; background: transparent;
1758
+ width: clamp(22px, 1.67vw, 32px); height: clamp(22px, 1.67vw, 32px); display: flex; align-items: center; justify-content: center;
1759
+ border: 1.5px solid #333; border-radius: clamp(6px, 0.52vw, 10px); background: transparent;
1757
1760
  cursor: pointer; color: #999; transition: all 0.2s; flex-shrink: 0;
1758
1761
  }
1759
1762
  .ps-tryon-drawer-back:hover { border-color: #bb945c; color: #bb945c; }
1760
- .ps-tryon-drawer-title { font-size: 16px; font-weight: 600; color: #fff; }
1761
- .ps-tryon-drawer-list { display: flex; flex-direction: column; gap: 10px; }
1762
- .ps-tryon-drawer-empty { text-align: center; padding: 32px 16px; color: #666; font-size: 14px; }
1763
+ .ps-tryon-drawer-title { font-size: clamp(12px, 0.83vw, 16px); font-weight: 600; color: #fff; }
1764
+ .ps-tryon-drawer-list { display: flex; flex-direction: column; gap: clamp(6px, 0.52vw, 10px); }
1765
+ .ps-tryon-drawer-empty { text-align: center; padding: clamp(20px, 1.67vw, 32px) clamp(10px, 0.83vw, 16px); color: #666; font-size: clamp(10px, 0.73vw, 14px); }
1763
1766
 
1764
1767
  /* Profile items */
1765
1768
  .ps-tryon-profile-item {
1766
- display: flex; align-items: center; gap: 12px; padding: 14px;
1767
- border: 1px solid #333; border-radius: 12px; cursor: pointer; transition: all 0.2s;
1769
+ display: flex; align-items: center; gap: clamp(7px, 0.63vw, 12px); padding: clamp(8px, 0.73vw, 14px);
1770
+ border: 1px solid #333; border-radius: clamp(8px, 0.63vw, 12px); cursor: pointer; transition: all 0.2s;
1768
1771
  }
1769
1772
  .ps-tryon-profile-item:hover { border-color: #bb945c; }
1770
1773
  .ps-tryon-profile-avatar {
1771
- width: 40px; height: 40px; border-radius: 50%;
1774
+ width: clamp(28px, 2.08vw, 40px); height: clamp(28px, 2.08vw, 40px); border-radius: 50%;
1772
1775
  display: flex; align-items: center; justify-content: center;
1773
1776
  background: rgba(187,148,92,0.1); flex-shrink: 0;
1774
1777
  }
1775
1778
  .ps-tryon-profile-avatar svg { stroke: #bb945c; fill: none; }
1776
1779
  .ps-tryon-profile-info { flex: 1; min-width: 0; }
1777
- .ps-tryon-profile-name { font-size: 14px; font-weight: 600; color: #fff; }
1778
- .ps-tryon-profile-detail { font-size: 11px; color: #999; margin-top: 2px; }
1780
+ .ps-tryon-profile-name { font-size: clamp(10px, 0.73vw, 14px); font-weight: 600; color: #fff; }
1781
+ .ps-tryon-profile-detail { font-size: clamp(8px, 0.57vw, 11px); color: #999; margin-top: 2px; }
1779
1782
  .ps-tryon-profile-item > svg:last-child { color: #666; flex-shrink: 0; transition: color 0.2s; }
1780
1783
  .ps-tryon-profile-item:hover > svg:last-child { color: #bb945c; }
1781
1784
 
1782
1785
  /* History items */
1783
1786
  .ps-tryon-history-item {
1784
- display: flex; gap: 14px; padding: 14px;
1785
- border: 1px solid #333; border-radius: 12px; align-items: flex-start; transition: all 0.2s;
1787
+ display: flex; gap: clamp(8px, 0.73vw, 14px); padding: clamp(8px, 0.73vw, 14px);
1788
+ border: 1px solid #333; border-radius: clamp(8px, 0.63vw, 12px); align-items: flex-start; transition: all 0.2s;
1786
1789
  }
1787
- .ps-tryon-history-item:hover { border-color: #bb945c; box-shadow: 0 4px 12px rgba(187,148,92,0.06); }
1788
- .ps-tryon-history-images { display: flex; gap: 8px; flex-shrink: 0; }
1789
- .ps-tryon-history-thumb { width: 64px; height: 80px; border-radius: 10px; object-fit: cover; flex-shrink: 0; }
1790
+ .ps-tryon-history-item:hover { border-color: #bb945c; box-shadow: 0 clamp(2px, 0.21vw, 4px) clamp(7px, 0.63vw, 12px) rgba(187,148,92,0.06); }
1791
+ .ps-tryon-history-images { display: flex; gap: clamp(5px, 0.42vw, 8px); flex-shrink: 0; }
1792
+ .ps-tryon-history-thumb { width: clamp(44px, 3.33vw, 64px); height: clamp(56px, 4.17vw, 80px); border-radius: clamp(6px, 0.52vw, 10px); object-fit: cover; flex-shrink: 0; }
1790
1793
  .ps-tryon-history-info { flex: 1; min-width: 0; }
1791
- .ps-tryon-history-product { font-size: 13px; font-weight: 600; color: #fff; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
1792
- .ps-tryon-history-meta { font-size: 11px; color: #666; margin-top: 3px; }
1793
- .ps-tryon-history-sizing { display: flex; align-items: center; gap: 8px; margin-top: 6px; }
1794
- .ps-tryon-history-sizing-reason { font-size: 11px; color: #999; flex: 1; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
1794
+ .ps-tryon-history-product { font-size: clamp(10px, 0.68vw, 13px); font-weight: 600; color: #fff; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
1795
+ .ps-tryon-history-meta { font-size: clamp(8px, 0.57vw, 11px); color: #666; margin-top: 3px; }
1796
+ .ps-tryon-history-sizing { display: flex; align-items: center; gap: clamp(5px, 0.42vw, 8px); margin-top: clamp(4px, 0.31vw, 6px); }
1797
+ .ps-tryon-history-sizing-reason { font-size: clamp(8px, 0.57vw, 11px); color: #999; flex: 1; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
1795
1798
  .ps-tryon-history-size-badge {
1796
- flex-shrink: 0; width: 40px; height: 40px; border-radius: 50%;
1799
+ flex-shrink: 0; width: clamp(28px, 2.08vw, 40px); height: clamp(28px, 2.08vw, 40px); border-radius: 50%;
1797
1800
  display: flex; align-items: center; justify-content: center;
1798
1801
  background: linear-gradient(135deg, #bb945c, #d6ba7d);
1799
- color: #111; font-size: 13px; font-weight: 700;
1802
+ color: #111; font-size: clamp(10px, 0.68vw, 13px); font-weight: 700;
1800
1803
  }
1801
- .ps-tryon-history-result-img { width: 64px; height: 80px; border-radius: 10px; object-fit: cover; flex-shrink: 0; border: 2px solid #bb945c; }
1804
+ .ps-tryon-history-result-img { width: clamp(44px, 3.33vw, 64px); height: clamp(56px, 4.17vw, 80px); border-radius: clamp(6px, 0.52vw, 10px); object-fit: cover; flex-shrink: 0; border: 2px solid #bb945c; }
1802
1805
  .ps-tryon-history-delete {
1803
- width: 28px; height: 28px; display: flex; align-items: center; justify-content: center;
1804
- border: none; background: transparent; cursor: pointer; color: #666; border-radius: 6px; transition: all 0.2s; flex-shrink: 0;
1806
+ width: clamp(20px, 1.46vw, 28px); height: clamp(20px, 1.46vw, 28px); display: flex; align-items: center; justify-content: center;
1807
+ border: none; background: transparent; cursor: pointer; color: #666; border-radius: clamp(4px, 0.31vw, 6px); transition: all 0.2s; flex-shrink: 0;
1805
1808
  }
1806
1809
  .ps-tryon-history-delete:hover { background: rgba(239,68,68,0.1); color: #ef4444; }
1807
1810
  .ps-tryon-history-delete svg { stroke: currentColor; fill: none; }
@@ -1810,33 +1813,33 @@ const STYLES = `
1810
1813
  .ps-tryon-detail-overlay {
1811
1814
  position: fixed; inset: 0; background: rgba(0,0,0,0.55);
1812
1815
  display: flex; align-items: center; justify-content: center;
1813
- z-index: 9999999; padding: 16px; animation: ps-fade-in 0.2s ease;
1816
+ z-index: 9999999; padding: clamp(10px, 0.83vw, 16px); animation: ps-fade-in 0.2s ease;
1814
1817
  }
1815
1818
  .ps-tryon-detail-modal {
1816
- background: #111211; border-radius: 16px; width: 100%; max-width: 440px; max-height: 85vh;
1817
- overflow-y: auto; box-shadow: 0 32px 64px rgba(0,0,0,0.3); animation: ps-slide-up 0.25s ease;
1819
+ background: #111211; border-radius: clamp(10px, 0.83vw, 16px); width: 100%; max-width: clamp(340px, 23vw, 440px); max-height: 85vh;
1820
+ overflow-y: auto; box-shadow: 0 clamp(20px, 1.67vw, 32px) clamp(40px, 3.33vw, 64px) rgba(0,0,0,0.3); animation: ps-slide-up 0.25s ease;
1818
1821
  font-family: var(--ps-modal-font, system-ui, sans-serif); color: #fff;
1819
1822
  }
1820
1823
  .ps-tryon-detail-header {
1821
1824
  display: flex; align-items: center; justify-content: space-between;
1822
- padding: 18px 24px; border-bottom: 1px solid #333;
1825
+ padding: clamp(10px, 0.94vw, 18px) clamp(14px, 1.25vw, 24px); border-bottom: 1px solid #333;
1823
1826
  }
1824
- .ps-tryon-detail-header span { font-size: 15px; font-weight: 600; }
1825
- .ps-tryon-detail-header button { background: none; border: none; color: #999; cursor: pointer; display: flex; align-items: center; border-radius: 6px; padding: 4px; transition: background 0.15s; }
1827
+ .ps-tryon-detail-header span { font-size: clamp(11px, 0.78vw, 15px); font-weight: 600; }
1828
+ .ps-tryon-detail-header button { background: none; border: none; color: #999; cursor: pointer; display: flex; align-items: center; border-radius: clamp(4px, 0.31vw, 6px); padding: clamp(2px, 0.21vw, 4px); transition: background 0.15s; }
1826
1829
  .ps-tryon-detail-header button:hover { background: rgba(255,255,255,0.1); }
1827
- .ps-tryon-detail-body { padding: 20px 24px; }
1828
- .ps-tryon-detail-gender { display: flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 600; padding-bottom: 14px; border-bottom: 1px solid #333; margin-bottom: 14px; }
1830
+ .ps-tryon-detail-body { padding: clamp(12px, 1.04vw, 20px) clamp(14px, 1.25vw, 24px); }
1831
+ .ps-tryon-detail-gender { display: flex; align-items: center; gap: clamp(5px, 0.42vw, 8px); font-size: clamp(10px, 0.73vw, 14px); font-weight: 600; padding-bottom: clamp(8px, 0.73vw, 14px); border-bottom: 1px solid #333; margin-bottom: clamp(8px, 0.73vw, 14px); }
1829
1832
  .ps-tryon-detail-gender svg { stroke: #bb945c; fill: none; }
1830
- .ps-tryon-detail-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 16px; }
1831
- .ps-tryon-detail-cell { background: #1a1b1a; border-radius: 10px; padding: 12px 14px; }
1832
- .ps-tryon-detail-cell-label { font-size: 11px; color: #999; text-transform: uppercase; letter-spacing: 0.04em; margin-bottom: 4px; }
1833
- .ps-tryon-detail-cell-value { font-size: 16px; font-weight: 600; color: #fff; }
1834
- .ps-tryon-detail-date { font-size: 11px; color: #666; text-align: center; margin-top: 8px; }
1833
+ .ps-tryon-detail-grid { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(6px, 0.52vw, 10px); margin-bottom: clamp(10px, 0.83vw, 16px); }
1834
+ .ps-tryon-detail-cell { background: #1a1b1a; border-radius: clamp(6px, 0.52vw, 10px); padding: clamp(7px, 0.63vw, 12px) clamp(8px, 0.73vw, 14px); }
1835
+ .ps-tryon-detail-cell-label { font-size: clamp(8px, 0.57vw, 11px); color: #999; text-transform: uppercase; letter-spacing: 0.04em; margin-bottom: clamp(2px, 0.21vw, 4px); }
1836
+ .ps-tryon-detail-cell-value { font-size: clamp(12px, 0.83vw, 16px); font-weight: 600; color: #fff; }
1837
+ .ps-tryon-detail-date { font-size: clamp(8px, 0.57vw, 11px); color: #666; text-align: center; margin-top: clamp(5px, 0.42vw, 8px); }
1835
1838
  .ps-tryon-detail-delete {
1836
- width: 100%; display: flex; align-items: center; justify-content: center; gap: 6px;
1837
- padding: 12px; border: 1px solid #333; border-radius: 10px; background: none;
1838
- color: #ef4444; font-size: 13px; font-weight: 500; cursor: pointer; transition: all 0.2s;
1839
- font-family: inherit; margin-top: 16px;
1839
+ width: 100%; display: flex; align-items: center; justify-content: center; gap: clamp(4px, 0.31vw, 6px);
1840
+ padding: clamp(7px, 0.63vw, 12px); border: 1px solid #333; border-radius: clamp(6px, 0.52vw, 10px); background: none;
1841
+ color: #ef4444; font-size: clamp(10px, 0.68vw, 13px); font-weight: 500; cursor: pointer; transition: all 0.2s;
1842
+ font-family: inherit; margin-top: clamp(10px, 0.83vw, 16px);
1840
1843
  }
1841
1844
  .ps-tryon-detail-delete:hover { background: rgba(239,68,68,0.06); border-color: #ef4444; }
1842
1845
  .ps-tryon-detail-delete svg { stroke: currentColor; fill: none; }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@primestyleai/tryon",
3
- "version": "3.5.1",
3
+ "version": "3.6.1",
4
4
  "description": "PrimeStyle Virtual Try-On SDK — React component & Web Component",
5
5
  "type": "module",
6
6
  "main": "dist/primestyle-tryon.js",