/* TFPPrintSteps styles (phase 2, 7 Oct 2026); lane PRINT.
   Every rule is scoped under .ps-root (the node the module builds inside its host), so nothing
   outside the hosts is restyled. Buttons use the studios' .btn / .btn-outline; cards carry
   .size-card / .media-card so shell.css's one selection idiom (.studio-glass-panel ...) applies.
   Sized for the frame studio's right panel (about 400 px at 1440) and full width at 390. */
.ps-root{--ps-forest:var(--forest,#313E28);--ps-ink:var(--ink,#262019);--ps-walnut:var(--walnut,#7C664D);
  --ps-line:var(--line,rgba(38,32,25,.16));--ps-soft:var(--line-soft,rgba(38,32,25,.09));
  --ps-panel:var(--panel-a,#FFFFFF);--ps-gesso:var(--panel-b,#F1E9E1);
  --ps-green:#4F7A3A;--ps-amber:#B07A1E;--ps-red:#A3402F;
  color:var(--ps-ink);font-size:13px;line-height:1.5;min-width:0}
.ps-root *,.ps-root *::before,.ps-root *::after{box-sizing:border-box}
.ps-root [hidden]{display:none!important}
.ps-root button{font-family:inherit}
.ps-root .ps-lead{margin:0 0 14px;font-size:13px;color:var(--ps-ink);line-height:1.55}
.ps-root .ps-hint{margin:10px 0 0;font-size:12px;color:var(--ps-walnut);line-height:1.5}
.ps-root .ps-hint a{color:inherit}
.ps-root .ps-label{display:block;margin:18px 0 8px;font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ps-walnut);font-weight:600}
.ps-root .ps-label-aside{text-transform:none;letter-spacing:0;font-weight:400;color:#8A7F70}
.ps-root .ps-link{background:none;border:0;padding:0;font:inherit;font-weight:600;color:var(--ps-forest);text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.ps-root .ps-spin{display:inline-block;width:12px;height:12px;margin-right:7px;vertical-align:-1px;border:1.5px solid var(--ps-line);border-top-color:var(--ps-forest);border-radius:50%;animation:ps-spin .8s linear infinite}
@keyframes ps-spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.ps-root .ps-spin{animation:none}}

/* ── upload ─────────────────────────────────────────────────────────────── */
.ps-root .ps-drop{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding:26px 18px;
  border:1.5px dashed rgba(38,32,25,.28);border-radius:2px;background:var(--ps-panel);cursor:pointer;transition:border-color .2s,background .2s}
.ps-root .ps-drop:hover,.ps-root .ps-drop.ps-over{border-color:var(--ps-forest);background:#F7F3EC}
.ps-root .ps-drop:focus-visible{outline:2px solid var(--ps-forest);outline-offset:2px}
.ps-root .ps-drop-ico{width:34px;height:34px;color:var(--ps-walnut)}
.ps-root .ps-drop-title{font-family:'Qeraldin','Cormorant Garamond',serif;font-size:20px;color:var(--ps-ink);line-height:1.2}
.ps-root .ps-drop-sub{font-size:12px;color:var(--ps-walnut);max-width:30em}
.ps-root .ps-drop-btn{margin-top:6px;pointer-events:none}
.ps-root .ps-drop-formats{font-size:11px;color:#8A7F70;letter-spacing:.04em}
.ps-root .ps-file{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.ps-root .ps-up-card{display:flex;gap:14px;align-items:flex-start;padding:14px;border:1px solid var(--ps-line);border-radius:2px;background:var(--ps-panel)}
.ps-root .ps-up-thumb{flex:0 0 72px;width:72px;height:72px;display:flex;align-items:center;justify-content:center;background:var(--ps-gesso);overflow:hidden;border-radius:2px}
.ps-root .ps-up-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.ps-root .ps-up-body{flex:1;min-width:0}
.ps-root .ps-up-name{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ps-root .ps-up-meta{font-size:12px;color:var(--ps-walnut)}
.ps-root .ps-up-bar{height:4px;margin:8px 0;background:var(--ps-soft);border-radius:2px;overflow:hidden}
.ps-root .ps-up-fill{height:100%;width:0;background:var(--ps-forest);transition:width .2s}
.ps-root .ps-up-status{font-size:12px;color:var(--ps-ink)}
.ps-root .ps-up-status.ps-err{color:var(--ps-red)}
.ps-root .ps-up-status.ps-ok{color:var(--ps-green);font-weight:600}
.ps-root .ps-up-change{margin-top:10px}
.ps-root .ps-phone{display:flex;align-items:center;gap:12px;margin-top:14px;padding:12px 14px;border:1px solid var(--ps-soft);border-radius:2px;background:var(--ps-gesso)}
.ps-root .ps-phone-ico{flex:0 0 22px;width:22px;height:22px;color:var(--ps-walnut)}
.ps-root .ps-phone-ico svg{width:100%;height:100%}
.ps-root .ps-phone-body{flex:1;min-width:0}
.ps-root .ps-phone-title{font-weight:600;font-size:13px}
.ps-root .ps-phone-sub{font-size:12px;color:var(--ps-walnut)}
.ps-root .ps-phone-btn{flex-shrink:0}
.ps-root .ps-qr{text-align:center;padding:18px 14px;border:1px solid var(--ps-line);border-radius:2px;background:var(--ps-panel)}
.ps-root .ps-qr-kicker{font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ps-walnut)}
.ps-root .ps-qr-title{font-family:'Qeraldin','Cormorant Garamond',serif;font-size:20px;margin:4px 0 10px}
.ps-root .ps-qr-code{width:180px;height:180px;margin:0 auto;display:flex;align-items:center;justify-content:center;background:#fff}
.ps-root .ps-qr-code svg{width:100%;height:100%}
.ps-root .ps-qr-load{font-size:12px;color:var(--ps-walnut)}
.ps-root .ps-qr-url{margin-top:10px;font-size:11px;color:var(--ps-walnut);word-break:break-all;display:flex;flex-direction:column;gap:2px}
.ps-root .ps-qr-url-lbl{text-transform:uppercase;letter-spacing:.12em;font-size:10px}
.ps-root .ps-qr-status{margin:10px 0 12px;font-size:12px}
.ps-root .ps-qr-status.ps-err{color:var(--ps-red)}
.ps-root .ps-qr-status.ps-ok{color:var(--ps-green);font-weight:600}
.ps-root .ps-flash{margin:10px 0 0;font-size:12px;color:var(--ps-red)}

/* ── crop & size ───────────────────────────────────────────────────────── */
.ps-root .ps-stage{position:relative;width:100%;height:clamp(190px,28vh,280px);overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none;
  cursor:grab;background:#2A241D;border-radius:2px}
.ps-root .ps-stage:focus-visible{outline:2px solid var(--ps-forest);outline-offset:2px}
.ps-root .ps-stage.ps-grabbing{cursor:grabbing}
.ps-root .ps-stage img{position:absolute;top:0;left:0;max-width:none;max-height:none;transform-origin:0 0;will-change:transform;pointer-events:none;-webkit-user-drag:none}
.ps-root .ps-stage.ps-loading img{opacity:.85}
.ps-root .ps-frame{position:absolute;box-shadow:0 0 0 9999px rgba(28,22,14,.56);border:1.5px solid rgba(255,255,255,.92);pointer-events:none}
.ps-root .ps-gv{position:absolute;top:0;bottom:0;width:1px;background:rgba(255,255,255,.28)}
.ps-root .ps-gh{position:absolute;left:0;right:0;height:1px;background:rgba(255,255,255,.28)}
.ps-root .ps-corner{position:absolute;width:14px;height:14px;border:2px solid #fff}
.ps-root .ps-tl{top:-2px;left:-2px;border-right:0;border-bottom:0}
.ps-root .ps-tr{top:-2px;right:-2px;border-left:0;border-bottom:0}
.ps-root .ps-bl{bottom:-2px;left:-2px;border-right:0;border-top:0}
.ps-root .ps-br{bottom:-2px;right:-2px;border-left:0;border-top:0}
.ps-root.ps-empty .ps-stage,.ps-root.ps-empty .ps-toolbar{display:none}
.ps-root .ps-toolbar{display:flex;align-items:center;gap:8px;margin-top:10px}
.ps-root .ps-zlabel{font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ps-walnut)}
.ps-root .ps-zoom{flex:1;min-width:60px;accent-color:var(--ps-forest)}
.ps-root .ps-zbtn{flex:0 0 36px;width:36px;height:36px;display:flex;align-items:center;justify-content:center;padding:0;font-size:16px;line-height:1;
  border:1px solid var(--ps-line);border-radius:2px;background:var(--ps-panel);color:var(--ps-forest);cursor:pointer}
.ps-root .ps-zbtn:hover{border-color:var(--ps-walnut)}
.ps-root .ps-seg{display:flex;gap:4px;padding:3px;border:1px solid var(--ps-line);border-radius:2px;background:var(--ps-gesso)}
.ps-root .ps-seg button{flex:1;min-height:36px;border:0;border-radius:2px;background:transparent;color:var(--ps-walnut);font-size:12px;font-weight:600;letter-spacing:.04em;cursor:pointer}
.ps-root .ps-seg button.ps-on{background:var(--ps-panel);color:var(--ps-ink);box-shadow:inset 0 0 0 1px var(--ps-forest)}
.ps-root .ps-band{display:flex;gap:10px;align-items:flex-start;margin-top:14px;padding:12px 14px;border:1px solid var(--ps-line);border-left-width:3px;border-radius:2px;background:var(--ps-panel)}
.ps-root .ps-band--green{border-left-color:var(--ps-green)}
.ps-root .ps-band--amber{border-left-color:var(--ps-amber)}
.ps-root .ps-band--red{border-left-color:var(--ps-red)}
.ps-root .ps-dot{flex:0 0 9px;width:9px;height:9px;margin-top:5px;border-radius:50%;background:var(--ps-walnut)}
.ps-root .ps-band--green .ps-dot{background:var(--ps-green)}
.ps-root .ps-band--amber .ps-dot{background:var(--ps-amber)}
.ps-root .ps-band--red .ps-dot{background:var(--ps-red)}
.ps-root .ps-band-body{min-width:0}
.ps-root .ps-band-head{font-weight:600;font-size:13.5px}
.ps-root .ps-band-cap{font-size:12px;color:var(--ps-ink)}
.ps-root .ps-band-ppi{font-size:11px;color:var(--ps-walnut);margin-top:2px}
.ps-root .ps-soft{margin:8px 0 0;padding:8px 12px;font-size:12px;background:#FBF4E6;border-radius:2px}
.ps-root .ps-px{color:#8A7F70}
.ps-root .ps-sizes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.ps-root .ps-size{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:1px;padding:10px 12px;min-height:44px;text-align:left;
  border:1px solid var(--ps-line);border-radius:2px;background:var(--ps-panel);color:var(--ps-ink);cursor:pointer}
.ps-root .ps-size:hover{border-color:var(--ps-walnut)}
.ps-root .ps-size.selected{border-color:var(--ps-forest);box-shadow:inset 3px 0 0 var(--ps-forest)}
.ps-root .ps-size:focus-visible,.ps-root .ps-media:focus-visible,.ps-root .ps-pill:focus-visible,.ps-root .ps-seg button:focus-visible,.ps-root .ps-zbtn:focus-visible{outline:2px solid var(--ps-forest);outline-offset:2px}
.ps-root .ps-size.ps-blocked{opacity:.55}
.ps-root .ps-size-name{font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ps-walnut);font-weight:600}
.ps-root .ps-size-dim{font-size:13.5px;font-weight:600}
.ps-root .ps-size-in{font-size:11px;color:#8A7F70}
.ps-root .ps-fit{position:absolute;top:6px;right:8px;font-size:10px;letter-spacing:.06em;color:var(--ps-forest);font-weight:600}
.ps-root .ps-tag{display:inline-flex;align-items:center;gap:5px;margin-top:4px;font-size:11px;color:var(--ps-walnut)}
.ps-root .ps-d{width:7px;height:7px;border-radius:50%;background:currentColor}
.ps-root .ps-tag--green{color:var(--ps-green)}
.ps-root .ps-tag--amber{color:var(--ps-amber)}
.ps-root .ps-tag--red,.ps-root .ps-tag--blocked{color:var(--ps-red)}
.ps-root .ps-dims{display:flex;align-items:flex-end;gap:8px}
.ps-root .ps-dim{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.ps-root .ps-dim-lbl{font-size:11px;color:var(--ps-walnut)}
.ps-root .ps-dim-in{display:flex;align-items:center;border:1px solid var(--ps-line);border-radius:2px;background:var(--ps-panel)}
.ps-root .ps-dim-in:focus-within{border-color:var(--ps-forest)}
.ps-root .ps-dim-in input{flex:1;min-width:0;width:100%;height:40px;padding:0 10px;border:0!important;background:transparent!important;font:inherit;font-size:14px;color:var(--ps-ink);
  -moz-appearance:textfield;appearance:textfield;outline:none}
.ps-root .ps-dim-in input::-webkit-outer-spin-button,.ps-root .ps-dim-in input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.ps-root .ps-u{padding:0 10px;font-size:12px;color:#8A7F70}
.ps-root .ps-x{padding-bottom:10px;color:#8A7F70}

/* ── paper ─────────────────────────────────────────────────────────────── */
.ps-root .ps-mgroup{margin-bottom:4px}
.ps-root .ps-mgroup .ps-label{margin-top:12px}
.ps-root .ps-mgroup:first-child .ps-label{margin-top:0}
.ps-root .ps-media{display:flex;align-items:center;gap:12px;width:100%;margin-bottom:8px;padding:12px 14px;min-height:56px;text-align:left;
  border:1px solid var(--ps-line);border-radius:2px;background:var(--ps-panel);color:var(--ps-ink);cursor:pointer}
.ps-root .ps-media:hover{border-color:var(--ps-walnut)}
.ps-root .ps-media.selected{border-color:var(--ps-forest);box-shadow:inset 3px 0 0 var(--ps-forest)}
.ps-root .ps-swatch{flex:0 0 40px;width:40px;height:40px;border-radius:2px;border:1px solid var(--ps-soft)}
.ps-root .ps-mbody{flex:1;min-width:0;display:flex;flex-direction:column}
.ps-root .ps-mname{font-weight:600;font-size:14px}
.ps-root .ps-msurf{font-size:12px;color:var(--ps-walnut)}
.ps-root .ps-mnote{color:#8A7F70}
.ps-root .ps-check{flex:0 0 22px;width:22px;height:22px;display:flex;align-items:center;justify-content:center;border-radius:50%;border:1px solid var(--ps-line);
  font-size:11px;font-weight:700;color:transparent}
.ps-root .ps-media.selected .ps-check{background:var(--ps-forest);border-color:var(--ps-forest);color:#FBF8F4}
.ps-root .ps-pills{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.ps-root .ps-pill{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:10px 12px;min-height:44px;text-align:left;
  border:1px solid var(--ps-line);border-radius:2px;background:var(--ps-panel);color:var(--ps-ink);cursor:pointer}
.ps-root .ps-pill.ps-on{border-color:var(--ps-forest);box-shadow:inset 3px 0 0 var(--ps-forest)}
.ps-root .ps-pill-name{font-weight:600;font-size:13px}
.ps-root .ps-pill-sub{font-size:11px;color:var(--ps-walnut)}
.ps-root .ps-price{margin-top:16px;padding:12px 14px;border-top:1px solid var(--ps-line);background:var(--ps-gesso);border-radius:2px}
.ps-root .ps-price-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.ps-root .ps-price-lbl{font-size:12px;color:var(--ps-walnut);min-width:0}
.ps-root .ps-price-val{font-family:'Qeraldin','Cormorant Garamond',serif;font-size:22px;color:var(--ps-ink);white-space:nowrap}
.ps-root .ps-price.ps-busy .ps-price-val{opacity:.5}
.ps-root .ps-price-note{font-size:11px;color:#8A7F70;margin-top:2px}

@media (max-width:768px){
  .ps-root .ps-hint,.ps-root .ps-band-cap,.ps-root .ps-msurf,.ps-root .ps-phone-sub{font-size:12px}
  .ps-root .ps-band-ppi,.ps-root .ps-size-in,.ps-root .ps-tag,.ps-root .ps-price-note,.ps-root .ps-pill-sub,.ps-root .ps-fit{font-size:11px}
  .ps-root .ps-stage{height:clamp(220px,36vh,300px)}
}
@media (max-width:360px){
  .ps-root .ps-phone{flex-wrap:wrap}
  .ps-root .ps-phone-btn{width:100%}
}
