/** Shopify CDN: Minification failed

Line 255:0 Unexpected "<"

**/
/* Collection / gift centre redesign 15/10/2026, from pulsio-collection-page_18.html. Scoped under .hrc */
.hrc{
  --bone:#EFEEEA; --bone-2:#E6E5E0; --chalk:#FBFBF9; --card:#F7F5F5; --pure:#FFFFFF;
  --ink:#16181A; --ink-2:#5B6065; --ink-3:#8E9299; --haze:#D6D6D1; --rule:#DFDFDF;
  --deep:#101214; --deep-2:#1B1E21;
  --signal:#0FA0EA; --brand:#0FA0EA; --signal-soft:#D7EEFB;
  --pad:clamp(1rem,3.2vw,2rem); --gut:clamp(16px,2.05vw,28px); --hpad:var(--gut); --maxw:none;
  --ease:cubic-bezier(.625,.05,0,1); --ease-wipe:cubic-bezier(.76,.01,.12,1);
  --f-display:"Montserrat",-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;
  --bg:var(--bone); --fg:var(--ink);
}
.hrc *,.hrc *::before,.hrc *::after{box-sizing:border-box}
.hrc [hidden]{display:none!important}
.hrc{margin:0;background:var(--bone);color:var(--ink);font-family:var(--f-display);font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased;overflow-x:clip}
.hrc h1,.hrc h2,.hrc h3,.hrc h4{margin:0;font-weight:400;text-wrap:balance}
.hrc button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
.hrc a{color:inherit;text-decoration:none}
.hrc img{max-width:100%;display:block}
.hrc .wrap{width:100%;padding-inline:var(--gut)}
.hrc .eyebrow{font-family:var(--f-display);font-size:.8rem;font-weight:500;line-height:1.2;letter-spacing:.075em;text-transform:uppercase;color:var(--ink-3)}
.hrc .d-l{font-size:clamp(1.75rem,4vw,3.3rem);line-height:1.15;letter-spacing:-.005em;font-weight:400}
.hrc .d-s{font-size:clamp(1.05rem,1.5vw,1.3rem);line-height:1.25;font-weight:500}
/* page head — full-bleed hero with the collection copy overlaid (homepage hero pattern) */
.hrc .phead{position:relative;margin-inline:calc(var(--gut) * -1);height:clamp(220px,20vw,290px);background:var(--deep);color:#fff;overflow:hidden;isolation:isolate;display:flex;align-items:flex-end}
.hrc .phead__hero{position:absolute;top:0;bottom:0;right:0;left:34%;z-index:-2}
.hrc .phead__hero::before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(to right,var(--deep),rgba(16,18,20,0) 40%)}
.hrc .phead__hero img{width:100%;height:100%;object-fit:cover;object-position:60% 40%;transition:opacity .5s var(--ease)}
.hrc .phead::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(to right,var(--deep) 36%,rgba(16,18,20,.92) 42%,rgba(16,18,20,.55) 52%,rgba(16,18,20,0) 66%),linear-gradient(to top,rgba(0,0,0,.55) 0%,rgba(0,0,0,0) 45%)}
@media(max-width:900px){.hrc .phead__hero{left:0}
.hrc .phead::after{background:linear-gradient(to top,rgba(0,0,0,.78) 0%,rgba(0,0,0,.35) 50%,rgba(0,0,0,.1) 100%)}
}
.hrc .phead__text{display:flex;flex-direction:column;gap:.5rem;padding:clamp(1rem,1.8vw,1.6rem) var(--gut);max-width:min(100%,700px)}
.hrc .phead__tag{font-size:.7rem;font-weight:500;letter-spacing:.075em;text-transform:uppercase;color:#fff;background:rgba(16,18,20,.5);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);padding:.45em .8em;border-radius:.4rem;align-self:flex-start}
.hrc .phead h1{color:#fff;max-width:16ch;font-size:clamp(1.6rem,2.9vw,2.6rem);line-height:1.1}
.hrc .phead p{margin:0;max-width:60ch;color:rgba(255,255,255,.86);font-size:14px;line-height:1.45}
.hrc .railhead{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-block:1rem .6rem}
.hrc .railhead .eyebrow{color:var(--ink-2)}
.hrc .rail-nav{display:flex;gap:.45rem}
.hrc .rail-nav button{width:36px;height:36px;border-radius:50%;background:var(--bone-2);display:grid;place-items:center;color:var(--ink);transition:background .3s var(--ease),opacity .3s}
.hrc .rail-nav button:hover{background:var(--haze)}
.hrc .rail-nav button[disabled]{opacity:.35;cursor:default}
.hrc .rail-nav svg{width:18px;height:18px}
.hrc .d-xl{font-size:clamp(2.1rem,5.6vw,4.8rem);line-height:1.08;letter-spacing:-.01em;font-weight:400}
@media(max-width:640px){.hrc .phead{height:auto;min-height:250px}
.hrc .phead p{font-size:13.5px}
}
/* category rail — wide cards: thumb + label + line, scrolls horizontally with arrows */
.hrc .tiles{display:flex;gap:10px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scroll-padding-inline:var(--gut);scroll-behavior:smooth;margin-inline:calc(var(--gut)*-1);padding-inline:var(--gut);padding-block:.2rem 1rem;scrollbar-width:none}
.hrc .tiles::-webkit-scrollbar{display:none}
.hrc .tile{flex:0 0 clamp(250px,calc(25vw - 16px),420px);scroll-snap-align:start;display:flex;flex-direction:row;align-items:center;gap:16px;padding:16px;border-radius:4px;background:var(--chalk);border:1px solid var(--haze);text-align:left;min-width:0;transition:border-color .3s var(--ease),background .3s var(--ease)}
.hrc .tile:hover{border-color:var(--ink-3)}
.hrc .tile:focus-visible{outline:2px solid var(--signal);outline-offset:2px}
.hrc .tile.on{border-color:var(--ink);background:var(--card)}
.hrc .tile .ph{width:96px;flex:0 0 96px;aspect-ratio:1;overflow:hidden;background:var(--card);display:grid;place-items:center;border-radius:2px}
.hrc .tile .ph img{width:100%;height:100%;object-fit:cover;mix-blend-mode:multiply;transition:transform .8s var(--ease)}
.hrc .tile:hover .ph img{transform:scale(1.05)}
.hrc .tile .txt{display:flex;flex-direction:column;gap:3px;min-width:0}
.hrc .tile .lbl{font-size:18px;font-weight:500;line-height:1.2;color:#000}
.hrc .tile .sub{font-size:14px;color:#505050;line-height:1.35}
.hrc .tile .cnt{font-size:12px;color:var(--ink-3);font-variant-numeric:tabular-nums;margin-top:2px}
.hrc .tile.gift .ph{background:var(--deep)}
.hrc .tile.gift .ph svg{width:44%;height:44%;color:#fff}
.hrc .tile.gift.on{border-color:var(--signal)}
.hrc .tile.gift.on .ph svg{color:var(--signal)}
.hrc .tile.all .ph{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--rule)}
.hrc .tile.all .ph img{background:var(--card)}
@media(max-width:640px){.hrc .tile{flex-basis:230px;padding:12px;gap:12px}
.hrc .tile .ph{width:72px;flex-basis:72px}
.hrc .tile .lbl{font-size:16px}
.hrc .tile .sub{font-size:13px}
}
/* gifts by price — compact pill row */
.hrc .pricerow{display:none;align-items:center;gap:.6rem .8rem;flex-wrap:wrap;padding-block:.2rem 1rem}
.hrc .pricerow.show{display:flex}
.hrc .pricerow .eyebrow{color:var(--ink-2);margin-right:.2rem}
.hrc .bands{display:flex;flex-wrap:wrap;gap:8px}
.hrc .band{display:inline-flex;align-items:baseline;gap:.45rem;padding:.55em 1.05em;border-radius:999px;border:1px solid var(--haze);background:var(--chalk);color:var(--ink);font-size:14px;font-weight:500;white-space:nowrap;transition:background .25s var(--ease),border-color .25s var(--ease),color .25s var(--ease)}
.hrc .band:hover{border-color:var(--ink-3)}
.hrc .band:focus-visible{outline:2px solid var(--signal);outline-offset:2px}
.hrc .band.on{background:var(--ink);border-color:var(--ink);color:#fff}
.hrc .band .big{font-variant-numeric:tabular-nums}
.hrc .band .sub{display:none}
.hrc .band .n{font-size:12px;color:var(--ink-3);font-weight:400;font-variant-numeric:tabular-nums}
.hrc .band.on .n{color:#A9ADB2}
/* top tabs: gift guide / therapy / body part */
.hrc .seg{display:inline-flex;padding:3px;border-radius:999px;background:var(--bone-2);gap:2px;max-width:100%;overflow-x:auto;scrollbar-width:none}
.hrc .seg::-webkit-scrollbar{display:none}
.hrc .seg button{font-size:14px;font-weight:500;padding:.55em 1.05em;border-radius:999px;color:var(--ink-2);white-space:nowrap;transition:background .3s var(--ease),color .3s var(--ease)}
.hrc .seg button.on{background:var(--ink);color:var(--bone)}
.hrc .seg button:focus-visible{outline:2px solid var(--signal);outline-offset:2px}
.hrc .railhead{flex-wrap:wrap}
.hrc .tile.tp .ph{width:96px;flex-basis:96px}
.hrc .tile.tp .lbl::before{content:attr(data-kind);display:block;font-size:10.5px;font-weight:500;letter-spacing:.075em;text-transform:uppercase;color:var(--ink-3);margin-bottom:3px}
.hrc .tile.tp.on{border-color:var(--ink)}
.hrc .tile.tp .ph.ico{display:grid;place-items:center;background:#F4F3EF;border-radius:6px;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}
.hrc .tile.tp .ph.ico::before{content:none}
.hrc .tile.tp .ph.ico svg{position:relative;width:74%;height:74%;aspect-ratio:1;overflow:visible;display:block}
.hrc .tile.tp:hover .ph.ico svg{transform:translateY(-1px) scale(1.03);transition:transform .5s var(--ease)}
.hrc .tile.tp.on .ph.ico{background:var(--signal-soft);box-shadow:inset 0 0 0 1px rgba(15,160,234,.4)}
.hrc .tile.tp.on .ph.ico::before{background:radial-gradient(55% 40% at 50% 62%,rgba(15,160,234,.38),transparent 72%)}
.hrc .tile.tp.on{border-color:var(--signal)}
.hrc .tile.gc.price .ph img{mix-blend-mode:normal}
/* recipient row inside the gift panel */
.hrc .giftrow .who{flex:1 1 100%;display:flex;flex-direction:column;gap:.7rem;padding-top:1.2rem;border-top:1px solid rgba(255,255,255,.1)}
.hrc .giftrow .who .eyebrow{color:#A9ADB2}
.hrc .whos{display:flex;gap:8px;flex-wrap:wrap}
.hrc .whochip{display:inline-flex;align-items:center;gap:.5rem;font-size:14px;font-weight:500;padding:.6em 1.05em;border-radius:999px;border:1px solid rgba(255,255,255,.18);color:var(--bone);background:transparent;transition:background .25s var(--ease),border-color .25s var(--ease),color .25s var(--ease)}
.hrc .whochip:hover{border-color:rgba(255,255,255,.5)}
.hrc .whochip:focus-visible{outline:2px solid var(--signal);outline-offset:2px}
.hrc .whochip.on{background:var(--signal);border-color:var(--signal);color:#06212c}
.hrc .whochip .c{font-weight:400;opacity:.65;font-variant-numeric:tabular-nums}
/* toolbar */
.hrc .toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-block:.6rem 1.2rem;flex-wrap:wrap}
.hrc .toolbar .status{font-size:14px;color:var(--ink-2)}
.hrc .toolbar .status b{color:var(--ink);font-weight:500}
.hrc .chips{display:flex;gap:.4rem;flex-wrap:wrap}
.hrc .chip{display:inline-flex;align-items:center;gap:.4rem;font-size:13px;font-weight:500;padding:.38em .8em;border-radius:.4rem;background:var(--ink);color:#fff}
.hrc .chip svg{width:10px;height:10px}
.hrc .sortsel{display:flex;align-items:center;gap:.6rem;font-size:14px;color:var(--ink-2)}
.hrc select{font:inherit;font-size:14px;font-weight:500;color:var(--ink);background:var(--chalk);border:1px solid var(--haze);border-radius:4px;padding:.5em .8em}
/* product cards — the homepage .card component */
.hrc .grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;padding-bottom:clamp(5rem,8vw,7rem)}
@media(max-width:1200px){.hrc .grid{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:900px){.hrc .grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
}
.hrc .empty{grid-column:1/-1;padding:3rem;text-align:center;color:var(--ink-2);background:var(--card);border-radius:4px}
/* gift overview: lifestyle tile + 4 products per collection (Therabody gift-center pattern) */
.hrc .gsecs{display:flex;flex-direction:column;gap:clamp(3rem,6vw,5.5rem);padding-bottom:clamp(5rem,8vw,7rem)}
.hrc .gsec{display:flex;flex-direction:column;gap:14px;padding-top:clamp(1.5rem,3vw,2.5rem);border-top:1px solid var(--haze)}
.hrc .gsec__head{display:flex;align-items:center;justify-content:space-between;gap:1rem}
.hrc .gsec__title{font-size:15px;font-weight:600;letter-spacing:-.01em;margin:0}
.hrc .gsec__title span{font-weight:400;color:var(--ink-3)}
.hrc .gsec__tools{display:flex;align-items:center;gap:14px}
.hrc .gsec__all{font-size:13px;font-weight:500;color:var(--ink);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--haze)}
.hrc .gsec__all:hover{text-decoration-color:var(--ink)}
.hrc .gsec__row{--n:5;display:grid;grid-auto-flow:column;grid-auto-columns:calc((100% - (var(--n) - 1) * 16px) / var(--n));gap:16px;align-items:stretch;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scroll-padding-left:0;scrollbar-width:none;padding-bottom:2px}
.hrc .gsec__row::-webkit-scrollbar{display:none}
.hrc .gsec__row>*{scroll-snap-align:start;min-width:0}
.hrc .gsec:first-child{border-top:0;padding-top:0}
.hrc .gsec__tile{position:relative;display:flex;align-items:flex-end;min-height:0;grid-row:auto;border-radius:4px;overflow:hidden;background:var(--deep) center/cover no-repeat;color:#fff;text-align:left;isolation:isolate}
.hrc .gsec__tile::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,.72) 0%,rgba(0,0,0,.25) 45%,rgba(0,0,0,0) 70%);z-index:-1}
.hrc .gsec__tile img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2;transition:transform 1s var(--ease)}
.hrc .gsec__tile:hover img{transform:scale(1.04)}
.hrc .gsec__tile:focus-visible{outline:2px solid var(--signal);outline-offset:2px}
.hrc .gsec__copy{display:flex;flex-direction:column;gap:6px;padding:clamp(14px,1.5vw,20px)}
.hrc .gsec__copy h2{font-size:clamp(1.3rem,1.7vw,1.6rem);line-height:1.08;letter-spacing:-.01em;max-width:12ch}
.hrc .gsec__copy p{margin:0;font-size:13px;line-height:1.4;color:rgba(255,255,255,.85);max-width:30ch}
.hrc .gsec__cta{display:inline-flex;align-items:center;gap:8px;margin-top:4px;font-size:13px;font-weight:500}
.hrc .gsec__cta svg{width:16px;height:16px}
@media(max-width:1200px){.hrc .gsec__row{--n:4}
}
@media(max-width:900px){.hrc .gsec__row{--n:2.4;gap:12px;grid-auto-columns:calc((100% - 12px * 2) / var(--n))}
.hrc .gsec__tile{min-height:300px}
}
@media(max-width:520px){.hrc .gsec__tile{min-height:0}
}
/* selected collection: lifestyle banner inline in the grid */
.hrc .gbanner{grid-column:span 2;min-height:100%}
@media(max-width:900px){.hrc .gbanner{grid-column:1/-1;min-height:320px}
}
/* collection labels on product cards — small tags in the homepage .card__tag shape, muted until active */
/* floating filter pill + panel (Hyperice pattern) */
.hrc .fab{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);z-index:50;display:inline-flex;align-items:center;gap:10px;height:56px;padding:0 24px;border-radius:999px;background:rgba(251,251,249,.78);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:0 8px 28px rgba(0,0,0,.14);font-size:16px;font-weight:500;color:var(--ink);white-space:nowrap;transition:transform .3s var(--ease)}
.hrc .fab:hover{transform:translateX(-50%) scale(1.03)}
.hrc .fab svg{width:18px;height:18px}
.hrc .fab .n{color:var(--ink-3);font-weight:400}
.hrc .fab .dot{width:8px;height:8px;border-radius:50%;background:var(--signal);display:none}
.hrc .fab.has .dot{display:block}
.hrc .scrim{position:fixed;inset:0;background:rgba(16,18,20,.35);z-index:70;opacity:0;pointer-events:none;transition:opacity .3s var(--ease)}
.hrc .scrim.show{opacity:1;pointer-events:auto}
.hrc .sheet{position:fixed;top:0;right:0;bottom:0;width:min(440px,100%);background:var(--chalk);color:var(--ink);z-index:80;display:flex;flex-direction:column;transform:translateX(100%);transition:transform .45s var(--ease);padding-top:env(safe-area-inset-top,0px)}
.hrc .sheet.show{transform:none}
.hrc .sheet__head{display:flex;align-items:center;justify-content:space-between;padding:18px var(--pad);border-bottom:1px solid var(--haze);font-size:18px;font-weight:500}
.hrc .sheet__close{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--bone-2)}
.hrc .sheet__close svg{width:16px;height:16px}
.hrc .sheet__body{flex:1;overflow-y:auto;padding:8px var(--pad) 24px;display:flex;flex-direction:column;gap:26px}
.hrc .fgroup{display:flex;flex-direction:column;gap:12px;padding-top:18px}
.hrc .fgroup .eyebrow{color:var(--ink-2)}
.hrc .opts{display:flex;flex-wrap:wrap;gap:8px}
.hrc .opt{font-size:14px;font-weight:500;padding:.55em 1em;border-radius:999px;border:1px solid var(--haze);background:transparent;color:var(--ink);transition:background .25s var(--ease),border-color .25s var(--ease),color .25s var(--ease)}
.hrc .opt:hover{border-color:var(--ink-3)}
.hrc .opt.on{background:var(--ink);border-color:var(--ink);color:#fff}
.hrc .opt .c{color:var(--ink-3);font-weight:400;margin-left:.35em}
.hrc .opt.on .c{color:#A9ADB2}
.hrc .sheet__foot{display:flex;gap:10px;padding:16px var(--pad) calc(16px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--haze)}
.hrc .sheet__foot button{flex:1;height:48px;border-radius:999px;font-size:15px;font-weight:500}
.hrc .sheet__foot .clear{border:1px solid var(--ink)}
.hrc .sheet__foot .apply{background:var(--ink);color:var(--bone)}
@media(max-width:640px){.hrc .sheet{top:auto;width:100%;max-height:86vh;border-radius:12px 12px 0 0;transform:translateY(100%)}
}
/* ---- mobile ---- */
.hrc .toolbar__end{display:flex;align-items:center;gap:14px}
.hrc .viewtog{display:none;padding:3px;border-radius:999px;background:var(--bone-2);gap:2px}
.hrc .viewtog button{width:34px;height:30px;border-radius:999px;display:grid;place-items:center;color:var(--ink-2);transition:background .3s var(--ease),color .3s var(--ease)}
.hrc .viewtog button.on{background:var(--ink);color:var(--bone)}
.hrc .viewtog svg{width:18px;height:18px}
@media(max-width:720px){.hrc .viewtog{display:inline-flex}
.hrc .rail-nav{display:none}
.hrc .railhead{padding-block:.8rem .4rem}
.hrc .seg{max-width:100%}
.hrc .pricerow{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-inline:calc(var(--gut)*-1);padding-inline:var(--gut)}
.hrc .pricerow::-webkit-scrollbar{display:none}
.hrc .pricerow .eyebrow{display:none}
.hrc .bands{flex-wrap:nowrap}
.hrc .band{white-space:nowrap}
.hrc .toolbar{padding-block:.4rem .9rem}
.hrc .toolbar .status{font-size:13px}
.hrc .sortsel{font-size:13px}
.hrc .sortsel select{max-width:120px}
.hrc .grid{grid-template-columns:repeat(var(--mcols,2),minmax(0,1fr));gap:10px}
.hrc .grid[data-cols="1"]{grid-template-columns:1fr;gap:14px}
.hrc .grid[data-cols="2"] .card__body{padding:10px 11px 12px;gap:10px}
.hrc .grid[data-cols="2"] .card__name{font-size:14px}
.hrc .grid[data-cols="2"] .card__desc{font-size:12px;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.hrc .grid[data-cols="2"] .card__label{font-size:11px;padding:.4em .6em}
.hrc .grid[data-cols="2"] .card__price{font-size:14px}
.hrc .grid[data-cols="2"] .card__add{width:32px;height:32px}
.hrc .grid[data-cols="2"] .card__tag{font-size:.72rem;top:.6rem;left:.6rem;padding:.38em .65em}
.hrc .grid[data-cols="2"] .card__tag.is-right{right:.6rem;left:auto}
.hrc .grid[data-cols="2"] .card__img{padding:8% 10% 6%}
.hrc .gbanner{grid-column:1/-1;min-height:280px}
.hrc .gsec{gap:10px;padding-top:1.4rem}
.hrc .gsec__title{font-size:14px}
.hrc .gsec__row{--n:2.15;gap:10px;grid-auto-columns:calc((100% - 10px) / var(--n));margin-inline:calc(var(--gut)*-1);padding-inline:var(--gut);scroll-padding-inline:var(--gut)}
.hrc .gsec__row[data-cols="1"]{--n:1.12;grid-auto-columns:calc((100% - 10px * 2) / var(--n))}
.hrc .gsec__row[data-cols="2"] .card__body{padding:10px 11px 12px;gap:10px}
.hrc .gsec__row[data-cols="2"] .card__name{font-size:14px}
.hrc .gsec__row[data-cols="2"] .card__desc{font-size:12px;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.hrc .gsec__row[data-cols="2"] .card__label{font-size:11px;padding:.4em .6em}
.hrc .gsec__row[data-cols="2"] .card__price{font-size:14px}
.hrc .gsec__row[data-cols="2"] .card__add{width:32px;height:32px}
.hrc .gsec__row[data-cols="2"] .card__tag{font-size:.72rem;top:.6rem;left:.6rem;padding:.38em .65em}
.hrc .gsec__row[data-cols="2"] .card__tag.is-right{right:.6rem;left:auto}
.hrc .gsec__tile{min-height:0}
.hrc .gsec__copy h2{font-size:1.15rem}
.hrc .gsec__copy p{font-size:12px;max-width:none}
.hrc .gsec__row[data-cols="2"] .gsec__copy p{display:none}
.hrc .fab{height:48px;padding:0 20px;font-size:15px}

}
@media(max-width:520px){.hrc .gsec__row{--n:2.15}
.hrc .gsec__all{display:inline}
}
@media(prefers-reduced-motion:reduce){.hrc *{transition:none!important}
}



</head>
<body>
<svg width="0" height="0" style="position:absolute" aria-hidden="true">
  <symbol id="pulsio-wordmark" viewBox="0 0 131 18.8086"><g>
<path d="M-0.0606837 0.00155061H8.60947C11.3808 0.218453 13.7879 2.15199 14.5457 4.80904C15.747 9.02625 12.6069 13.1381 8.26248 13.2837H1.98549V18.9248H-0.0606837V11.3254H8.49433C14.3714 10.6685 14.2049 2.3503 8.30138 1.91959H-0.0606837V0.00155061Z" fill="currentColor"/>
<path d="M75.3862 14.8702C75.8686 15.1538 76.3074 15.4977 76.7928 15.7766C78.9137 16.9943 81.8219 17.4793 84.1808 16.6969C86.4075 15.9578 87.4796 13.3349 85.3323 11.7871C82.4023 9.67696 75.7332 10.5647 75.1263 5.84708C74.7451 2.87551 76.7322 0.886205 79.4956 0.264933C82.046 -0.308309 84.8157 0.0464814 87.1155 1.27663C87.2384 1.34325 87.7488 1.61438 87.7535 1.72593C87.755 1.75691 87.7379 1.7848 87.7301 1.81424C87.615 2.28213 87.2602 2.85227 87.0953 3.32171C85.7275 2.47424 84.1419 1.95987 82.5299 1.82353C80.5226 1.65311 77.7467 2.15199 77.2036 4.44031C76.7228 6.4699 78.4407 7.50174 80.1056 8.01921C83.4915 9.07118 89.3313 9.46161 88.4895 14.4969C87.6632 19.4376 80.4993 19.4608 76.9018 17.8774C76.0786 17.5149 75.3022 17.0176 74.6689 16.3824L75.3815 14.8718L75.3862 14.8702Z" fill="currentColor"/>
<path d="M27.7314 0V11.657C28.3476 18.7714 38.8508 18.6397 39.288 11.5051V0H41.1864V11.8088C40.2823 21.416 26.1303 21.0086 25.7911 11.3549V0H27.7314Z" fill="currentColor"/>
<path d="M55.8394 0V17.0036H66.4577V18.8086H53.7933V0H55.8394Z" fill="currentColor"/>
<path d="M101.647 0H99.601V18.8086H101.647V0Z" fill="currentColor"/>
<g>
<path d="M130.381 12.7849C129.88 14.3621 128.938 15.6216 127.577 16.5605C121.027 21.0767 108.922 11.8135 113.302 4.41397C113.663 3.80509 114.1 3.23495 114.589 2.72368C114.492 2.96382 114.346 3.18072 114.24 3.41622C111.179 10.213 119.806 17.8588 126.453 15.8587C128.121 15.3567 129.41 14.1839 130.381 12.7849Z" fill="currentColor"/>
<path d="M119.764 0L118.711 0.484933C114.027 3.3341 116.389 8.76907 120.056 11.3022C122.714 13.1397 126.727 13.9747 129.354 11.6306C130.843 10.3029 130.815 8.36005 130.533 6.52258L130.571 6.39088C130.664 6.9161 130.809 7.43357 130.871 7.96498C131.137 10.2471 130.676 12.1884 128.65 13.465C125.943 15.1708 122.235 14.5108 119.653 12.8747C116.498 10.8746 113.532 6.35215 115.558 2.64466C116.42 1.07057 118.038 0.291269 119.764 0Z" fill="currentColor"/>
<path d="M122.649 0.35169C124.885 0.192112 127.177 1.52916 128.495 3.25664C131.255 6.87736 128.879 10.9412 124.329 10.007C121.413 9.40893 118.244 6.12285 119.03 2.9948C119.447 1.3355 121.02 0.467888 122.649 0.35169ZM122.8 0.766904C120.775 0.917187 119.479 2.36269 119.769 4.40157C120.193 7.40258 124.071 9.98062 127.023 9.12541C128.148 8.80005 129.049 7.85807 129.158 6.67131C129.453 3.45805 125.884 0.539156 122.8 0.766904Z" fill="currentColor"/>
<path d="M125.89 17.7783L125.611 17.9363C122.255 19.4624 118.328 18.9573 115.483 16.6426C113.02 14.6378 111.646 11.4184 112.038 8.24695L112.163 9.12386C113.138 14.8052 118.525 19.1308 124.406 18.1377C124.91 18.0525 125.397 17.91 125.888 17.7783H125.89Z" fill="currentColor"/>
</g>
</g></symbol>
  <symbol id="i-plus" viewBox="0 0 24 24"><path d="M12 5v14M5 12h14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></symbol>
  <symbol id="i-search" viewBox="0 0 24 24"><circle cx="11" cy="11" r="7" fill="none" stroke="currentColor" stroke-width="1.6"/><path d="m16.5 16.5 4 4" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/></symbol>
/* theme leaks */
.hrc .price{text-transform:none;text-align:left;margin:0;letter-spacing:0;float:none;display:inline}
.hrc h1,.hrc h2,.hrc h3{color:inherit;font-family:var(--f-display)}
.hrc .card__name{color:#000}
.hrc .phead h1{color:#fff}
.hrc .gsec__copy h2{color:#fff}
.hrc ul{list-style:none}

/* 15/10 (Justyn "same branding elements as the home page"): rounded rectangles, never pills (site UI rules) */
.hrc .seg{border-radius:5px;padding:4px;background:#f4f4f4;border:1px solid #ebebeb}
.hrc .seg button{border-radius:4px}
.hrc .band,.hrc .opt,.hrc .whochip{border-radius:4px}
.hrc .viewtog{border-radius:5px}.hrc .viewtog button{border-radius:4px}
.hrc .fab{border-radius:6px}
.hrc .sheet__foot button{border-radius:4px}
.hrc .chip{border-radius:4px}
.hrc .rail-nav button{border-radius:4px;background:#0d0d0d;color:#fff}
.hrc .rail-nav button:hover{background:#2b2b2b}
.hrc .rail-nav button[disabled]{opacity:1;background:#d6d6d1}
/* homepage cards inside the grid */
.hrc .hrc__cards{background:none;padding:0}
.hrc .grid>.card,.hrc .gsec__row>.card{min-width:0}
/* card tags (20/10): body part + therapy, both always whole; a long pair (Arms & legs, Compression) takes a second line on narrow cards instead of being cut */
.hrc .card .card__cats{flex-wrap:wrap;overflow:visible;-webkit-mask-image:none;mask-image:none}
.hrc .card__compat{font-size:12px;color:var(--ink-3);display:flex;align-items:center;gap:.4rem;margin-top:4px}
.hrc .card__compat::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--ink-3)}
.hrc .card__price .is-from{font-weight:400;color:#505050;margin-right:.35em}
/* bundles (16/10): full price crossed out beside the bundle price, and a black Save tag */
.hrc .card__was{margin-left:.45em;font-weight:400;font-size:.86em;color:#8a8a8a;text-decoration:line-through}
.hrc .card__tag.is-save{background:#0D0D0D;color:#fff}
/* gift collection tiles show a product render */
.hrc .tile .ph.prod{background:var(--card)}
.hrc .tile .ph.prod img{object-fit:contain;padding:8%;mix-blend-mode:normal}
/* 15/10 (Justyn "make the image full over these tiles with the text overlay", "remove sub text"):
   photo tiles fill the whole tile with a dark fade and the name and count on top; body-part tiles keep their drawings */
.hrc .tile .sub{display:none}
.hrc .tile.is-photo{position:relative;display:block;padding:0;border:0;overflow:hidden;aspect-ratio:16/10;background:var(--deep);isolation:isolate}
.hrc .tile.is-photo .ph{position:absolute;inset:0;width:100%;height:100%;border-radius:0;background:none}
.hrc .tile.is-photo .ph img{width:100%;height:100%;object-fit:cover;mix-blend-mode:normal}
.hrc .tile.is-photo::after{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(0deg,rgba(13,13,13,.78) 0%,rgba(13,13,13,.3) 45%,rgba(13,13,13,0) 70%)}
.hrc .tile.is-photo .txt{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:16px 18px}
.hrc .tile.is-photo .lbl{color:#fff;font-size:18px}
.hrc .tile.is-photo .lbl::before{color:rgba(255,255,255,.7)}
.hrc .tile.is-photo .cnt{color:rgba(255,255,255,.75)}
.hrc .tile.is-photo.on{box-shadow:inset 0 0 0 2px var(--signal)}
.hrc .tile.is-photo.on::before{content:"";position:absolute;inset:0;z-index:3;box-shadow:inset 0 0 0 2px var(--signal);border-radius:4px;pointer-events:none}
.hrc .tile.is-photo.is-render .ph{background:radial-gradient(120% 90% at 50% 30%,#2a2d30 0%,#121314 60%,#0d0d0d 100%)}
.hrc .tile.is-photo.is-render .ph img{object-fit:contain;padding:8% 18% 30%}
@media(max-width:640px){.hrc .tile.is-photo{flex-basis:200px;aspect-ratio:4/5}.hrc .tile.is-photo .lbl{font-size:15px}.hrc .tile.is-photo .txt{padding:12px}}
/* 15/10 (Justyn "2 lines of sub text"): gift collection banners keep their intro to two lines */
.hrc .gsec__copy p{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* 15/10 (Justyn "above this style"): Gift guide / therapy / body part tabs use the homepage's underlined uppercase tabs,
   with no box behind them, so the strip sits on the page's own background */
.hrc .seg{display:flex;gap:clamp(1rem,2vw,1.6rem);padding:0;background:none;border:0;border-radius:0;border-bottom:1px solid rgba(13,13,13,.12);flex:1 1 auto;max-width:none}
.hrc .seg button{position:relative;padding:.4rem 0 .9rem;border-radius:0;background:none;font-size:.88rem;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}
.hrc .seg button::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--ink);transform:scaleX(0);transform-origin:0 50%;transition:transform .45s var(--ease)}
.hrc .seg button:hover{color:var(--ink)}
.hrc .seg button.on{background:none;color:var(--ink)}
.hrc .seg button.on::after{transform:scaleX(1)}
.hrc .railhead{align-items:flex-end;gap:1.5rem}
.hrc .railhead .rail-nav{padding-bottom:.6rem}
@media(max-width:720px){.hrc .seg button{font-size:.8rem;padding:.3rem 0 .75rem}}
/* 15/10 (Justyn "not the same height as the homepage"): the homepage's solid header sits over the top of the photo header,
   so the header area grows by the bar's height and the copy stays clear of it */
.hrc .phead{height:calc(clamp(220px,20vw,290px) + 80px);padding-top:80px}
@media(max-width:640px){.hrc .phead{height:auto;min-height:calc(250px + 64px);padding-top:64px}}
/* 15/10 (Justyn "make these smaller"): smaller photo tiles in the rail, about six in view on desktop */
.hrc .tile.is-photo{flex-basis:clamp(190px,calc(16.6vw - 12px),280px);aspect-ratio:4/3}
.hrc .tile.is-photo .txt{padding:12px 14px}
.hrc .tile.is-photo .lbl{font-size:15px}
.hrc .tile.is-photo .cnt{font-size:11px}
@media(max-width:640px){.hrc .tile.is-photo{flex-basis:160px;aspect-ratio:1}.hrc .tile.is-photo .lbl{font-size:14px}}
/* 15/10 (Justyn "remove this"): no "View collection" link on the banners (the whole banner is still clickable) */
.hrc .gsec__cta{display:none}
/* 15/10 (Justyn "bit more dark overlay to make it easier to read") */
.hrc .tile.is-photo::after{background:linear-gradient(0deg,rgba(13,13,13,.88) 0%,rgba(13,13,13,.5) 40%,rgba(13,13,13,.08) 75%)}
.hrc .tile.is-photo .lbl,.hrc .tile.is-photo .cnt{text-shadow:0 1px 8px rgba(0,0,0,.35)}
/* the "Gifts by price" tile no longer carries the theme's .price class (it was turning the label uppercase) */
.hrc .tile.gc.is-price .ph img{mix-blend-mode:normal}
/* 15/10: the picked group's banner sits first in the grid, one card wide and the cards' height */
.hrc .grid>.gsec__tile.gbanner{grid-column:auto;min-height:0;cursor:default}
.hrc .grid>.gsec__tile.gbanner:hover img{transform:none}
@media(max-width:720px){.hrc .grid[data-cols="2"]>.gsec__tile.gbanner .gsec__copy p{display:none}}

/* 15/10 (Justyn "change image or position without head chopped off"): the photo starts below the solid header, not behind it */
.hrc .phead__hero{top:80px}
@media(max-width:640px){.hrc .phead__hero{top:64px}}

/* 15/10 (Justyn "style this"): sort as quiet uppercase text with a chevron, like the homepage tabs, no box */
.hrc .sortsel{gap:.35rem;font-size:.8rem;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}
.hrc .sortsel select{-webkit-appearance:none;appearance:none;border:0;border-radius:0;background:transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='m6 9 6 6 6-6' fill='none' stroke='%2316181A' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right center/14px;
  padding:.3rem 1.3rem .3rem 0;font-size:.8rem;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--ink);cursor:pointer;border-bottom:1px solid transparent;transition:border-color .3s ease}
.hrc .sortsel select:hover,.hrc .sortsel select:focus-visible{border-bottom-color:var(--ink);outline:none}

/* 15/10 (Justyn, phones: "too much vertical space and lots of buttons"): shorter header, smaller tiles,
   price bands move into the Filters panel only, tighter gaps */
@media(max-width:720px){
  .hrc .phead{min-height:calc(190px + 64px)}
  .hrc .phead__text{padding-bottom:.9rem}
  .hrc .phead h1{font-size:1.5rem}
  .hrc .phead p{font-size:12.5px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .hrc .railhead{padding-block:.6rem .2rem}
  .hrc .seg{gap:1rem}
  .hrc .seg button{font-size:.72rem;letter-spacing:.06em;padding:.3rem 0 .6rem}
  .hrc .tiles{padding-block:.6rem .4rem;gap:8px}
  .hrc .tile.is-photo{flex-basis:132px;aspect-ratio:1}
  .hrc .tile.is-photo .txt{padding:9px 10px}
  .hrc .tile.is-photo .lbl{font-size:12.5px;line-height:1.2}
  .hrc .tile.is-photo .cnt{font-size:10.5px}
  .hrc .pricerow,.hrc .pricerow.show{display:none}
  .hrc .toolbar{padding-block:.2rem .6rem}
  .hrc .gsecs{gap:2rem}
  .hrc .gsec{padding-top:1rem}
}
/* 15/10 (Justyn "hide"): no item count after each row's title */
.hrc .gsec__title span{display:none}
/* 15/10 (Justyn "hide"): no one/two-per-row switch on phones (two per row stays) */
.hrc .viewtog{display:none!important}
/* 15/10: price bands come back on phones where they apply (gift guide price view, all products) as a compact sideways row */
@media(max-width:720px){.hrc .pricerow.show{display:flex}.hrc .band{font-size:12.5px;padding:.45em .8em}}
/* 15/10 (Justyn "hide this tag"): no "For Athletes ×" style filter chips (the highlighted tile already shows what is picked) */
.hrc .chips{display:none}
/* 15/10 (Justyn "hide hero", phones): no photo header on phones; the page starts with the tabs, clear of the solid header */
@media(max-width:720px){
  .hrc .phead{display:none}
  .hrc>.wrap{padding-top:calc(64px + .4rem)}
}
/* 15/10 (Justyn "hide this image for each", phones): no photo banner at the start of each row or picked group; rows start with products */
@media(max-width:720px){.hrc .gsec__tile{display:none}}
/* 15/10 (Justyn "not all caps"): sort in normal case */
.hrc .sortsel,.hrc .sortsel select{text-transform:none;letter-spacing:0;font-size:14px}
/* 15/10: Shop by price tiles and banners show a product render on a dark ground */
.hrc .gsec__tile.is-render{background:radial-gradient(120% 90% at 50% 30%,#2a2d30 0%,#121314 60%,#0d0d0d 100%)}
.hrc .gsec__tile.is-render img{object-fit:contain;padding:10% 12% 38%}
.hrc .gsec__tile.is-render:hover img{transform:none}
/* 15/10 (Justyn "slider indicator"): a thin bar under the tile strip on phones shows there is more to swipe */
.hrc .hrc-bar{display:none;position:relative;height:3px;border-radius:2px;background:rgba(13,13,13,.12);margin:.2rem 0 .8rem;overflow:hidden}
.hrc .hrc-bar span{position:absolute;top:0;bottom:0;left:0;width:30%;border-radius:2px;background:var(--signal);transition:left .15s linear}
@media(max-width:720px){.hrc .hrc-bar{display:block}}
/* photo tiles: the picture fills the tile exactly so its focus point (object-position) works (15/10) */
.hrc .tile.is-photo .ph{display:block}
.hrc .tile.is-photo .ph img{position:absolute;inset:0;width:100%;height:100%}
/* product cards the same size as the homepage rails (15/10): 4 across on desktop, 10px gaps */
@media(min-width:721px){.hrc .grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}}
@media(min-width:721px) and (max-width:999px){.hrc .grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
/* price tiles are plain buttons (15/10): no picture, the price band and count only, like the chips */
.hrc .tile.is-photo.is-btn{aspect-ratio:auto;flex:0 0 auto;display:flex;align-items:center;min-height:0;padding:12px 18px;background:#ECEAE5;border:1px solid transparent;border-radius:4px}
.hrc .tile.is-photo.is-btn::after,.hrc .tile.is-photo.is-btn::before{display:none}
.hrc .tile.is-photo.is-btn .txt{position:static;padding:0;display:flex;align-items:baseline;gap:8px}
.hrc .tile.is-photo.is-btn .lbl{color:var(--ink);font-size:15px}
.hrc .tile.is-photo.is-btn .cnt{color:var(--ink-2);font-size:12px}
.hrc .tile.is-photo.is-btn.on{background:#111212}
.hrc .tile.is-photo.is-btn.on .lbl{color:#fff}
.hrc .tile.is-photo.is-btn.on .cnt{color:#A9ADB2}
@media (hover:hover){.hrc .tile.is-photo.is-btn:not(.on):hover{border-color:var(--signal);background:rgba(15,160,234,.1)}}
/* banner text reads clearly (15/10): darker fade towards the bottom */
.hrc .gsec__tile:not(.is-render)::after{background:linear-gradient(to top,rgba(10,10,10,.9) 0%,rgba(10,10,10,.62) 32%,rgba(10,10,10,.18) 60%,rgba(10,10,10,0) 78%)}
/* page header without photos (15/10): a plain dark band on every tab */
.hrc .phead__hero{display:none}
.hrc .phead::after{display:none}
/* selected tile (15/10): a thick blue underline along the bottom edge, no ring */
.hrc .tile.is-photo.on{box-shadow:none}
.hrc .tile.is-photo.on::before{box-shadow:none;top:auto;height:5px;background:var(--signal);border-radius:0}
/* page header on the page background (15/10): light band, dark text, no photo */
.hrc .phead{background:var(--bone);color:var(--ink);height:auto;min-height:0;padding-top:calc(80px + clamp(1.5rem,3vw,2.5rem))}
@media(max-width:640px){.hrc .phead{padding-top:calc(64px + 1.2rem)}}
.hrc .phead h1{color:var(--ink)}
.hrc .phead p{color:var(--ink-2)}
.hrc .phead__tag{color:var(--ink-2);background:none;backdrop-filter:none;-webkit-backdrop-filter:none;padding:0;letter-spacing:.1em}
.hrc .phead__text{padding-bottom:clamp(1rem,2vw,1.6rem)}
.hrc .sortsel[hidden]{display:none}
.hrc #priceWrap select{max-width:none}
/* header restyled like the homepage section headings (15/10): eyebrow and title on the left, intro on the right, less height */
.hrc .phead{padding-top:calc(80px + clamp(1.25rem,2.6vw,2.25rem));padding-bottom:0}
.hrc .phead__text{flex-direction:row;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:.75rem 3rem;max-width:none;width:100%;padding-bottom:clamp(.9rem,1.8vw,1.4rem)}
.hrc .phead__text .phead__tag{flex:0 0 100%;font-size:12px;font-weight:500;letter-spacing:.12em;color:var(--ink-2);margin-bottom:-.2rem}
.hrc .phead h1{font-size:clamp(1.85rem,3.2vw,2.9rem);line-height:1.12;letter-spacing:-.01em;font-weight:400;max-width:none;margin:0}
.hrc .phead p{flex:0 1 46ch;font-size:14px;line-height:1.55;color:var(--ink-2);margin:0}
@media(max-width:720px){.hrc .phead{padding-top:calc(64px + 1rem)}.hrc .phead h1{font-size:clamp(1.7rem,7.6vw,2.2rem)}.hrc .phead p{flex-basis:100%;font-size:13.5px}}
/* row titles stay hidden while the banner (which carries the same title) is in view; they fade in once the row is swiped along (15/10) */
.hrc .gsec__head.is-quiet .gsec__title{opacity:0;visibility:hidden}
.hrc .gsec__head .gsec__title{transition:opacity .25s ease,visibility .25s}
/* Shop by price buttons back to the earlier price-button look (15/10): white, thin border, count beside the price */
.hrc .tile.is-photo.is-btn{align-self:flex-start;padding:.55em 1.05em;border:1px solid var(--haze);background:var(--chalk);border-radius:4px;font-weight:500}
.hrc .tile.is-photo.is-btn .txt{gap:.45rem}
.hrc .tile.is-photo.is-btn .lbl{font-size:14px;font-weight:500;color:var(--ink);text-shadow:none}
.hrc .tile.is-photo.is-btn .cnt{font-size:12px;font-weight:400;color:var(--ink-3);text-shadow:none}
.hrc .tile.is-photo.is-btn.on{background:var(--ink);border-color:var(--ink)}
.hrc .tile.is-photo.is-btn.on::before{display:none}
.hrc .tile.is-photo.is-btn.on .lbl{color:#fff}
.hrc .tile.is-photo.is-btn.on .cnt{color:#A9ADB2}
@media (hover:hover){.hrc .tile.is-photo.is-btn:not(.on):hover{border-color:var(--ink-3);background:var(--chalk)}}
.hrc .tile.is-photo.is-btn .txt{flex-direction:row;align-items:baseline}
/* tile hover (15/10): the same blue underline as the picked tile slides in from the left */
.hrc .tile.is-photo:not(.is-btn)::before{content:"";position:absolute;left:0;right:0;bottom:0;top:auto;height:5px;z-index:3;background:var(--signal);box-shadow:none;border-radius:0;pointer-events:none;transform:scaleX(0);transform-origin:left center;transition:transform .35s cubic-bezier(.625,.05,0,1)}
.hrc .tile.is-photo.on:not(.is-btn)::before{transform:scaleX(1)}
@media (hover:hover){.hrc .tile.is-photo:not(.is-btn):hover::before{transform:scaleX(1)}}
/* half a tile always peeks at the end of the row (15/10) */
.hrc .tiles.is-sized .tile.is-photo:not(.is-btn){flex:0 0 var(--tw)!important}
/* Price and Sort as two matching boxes (15/10): label and value together, chevron tucked in, no stretched gap */
.hrc .toolbar__end{gap:8px}
.hrc .sortsel{position:relative;gap:6px;height:38px;padding:0 34px 0 12px;border:1px solid var(--haze);border-radius:4px;background:var(--chalk);font-size:13px;font-weight:400;color:var(--ink-3);cursor:pointer;transition:border-color .2s}
.hrc .sortsel select{position:static;width:auto;max-width:none;field-sizing:content;min-width:0;height:100%;padding:0;border:0;font-size:13px;font-weight:500;color:var(--ink);background:none;cursor:pointer}
.hrc .sortsel::after{content:"";position:absolute;right:12px;top:50%;width:12px;height:12px;margin-top:-6px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='m6 9 6 6 6-6' fill='none' stroke='%2316181A' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/12px no-repeat;pointer-events:none}
.hrc .sortsel select:focus-visible{outline:none}
.hrc .sortsel:focus-within{border-color:var(--ink-3)}
@media (hover:hover){.hrc .sortsel:hover{border-color:var(--ink-3)}}
@media(max-width:720px){.hrc .sortsel{height:34px;padding:0 28px 0 10px;font-size:12px}.hrc .sortsel select{font-size:12px}.hrc .sortsel::after{right:9px}}
/* header option F (15/10): a rounded photo card inside the page margins, words bottom left on the dark side,
   the photo on the right so her face stays clear of the text */
.hrc .phead{background:var(--bone);color:#fff;height:auto;min-height:0;padding:calc(80px + clamp(.9rem,1.6vw,1.4rem)) var(--gut) 0;margin-inline:calc(var(--gut) * -1);display:block}
.hrc .phead::after{display:none}
.hrc .phead__hero{display:block;position:absolute;top:calc(80px + clamp(.9rem,1.6vw,1.4rem));bottom:0;left:var(--gut);right:var(--gut);border-radius:6px;overflow:hidden;background:#111212;z-index:-1}
.hrc .phead__hero img{position:absolute;top:0;bottom:0;right:0;left:auto;width:70%;height:100%;object-fit:cover}
.hrc .phead__hero::before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(90deg,#111212 0%,#111212 30%,rgba(17,18,18,.8) 36%,rgba(17,18,18,0) 55%)}
.hrc .phead__text{position:relative;display:flex;flex-direction:column;flex-wrap:nowrap;align-items:flex-start;justify-content:flex-end;gap:.6rem;min-height:clamp(240px,22vw,320px);padding:clamp(1.4rem,2.6vw,2.2rem) clamp(1.4rem,2.6vw,2.2rem);max-width:min(100%,620px)}
.hrc .phead__text .phead__tag{flex:none;color:rgba(255,255,255,.72);margin:0}
.hrc .phead h1{color:#fff}
.hrc .phead p{flex:none;color:rgba(255,255,255,.82);max-width:46ch}
@media(max-width:720px){
  .hrc .phead{padding-top:.6rem}
  .hrc .phead__hero{top:.6rem}
  .hrc .phead__hero img{width:100%}
  .hrc .phead__hero::before{background:linear-gradient(0deg,rgba(17,18,18,.92) 0%,rgba(17,18,18,.6) 38%,rgba(17,18,18,0) 62%)}
  .hrc .phead__text{min-height:300px;padding:1.1rem}
}
@media(max-width:720px){.hrc #priceWrap{display:none!important}}
/* header card without a photo (15/10): the same rounded dark card, words only, a little shorter */
.hrc .phead__hero img,.hrc .phead__hero::before{display:none}
.hrc .phead__text{min-height:clamp(190px,16vw,240px)}
@media(max-width:720px){.hrc .phead__text{min-height:200px}}
/* header without any background (15/10): on the page colour, intro under the title on the left */
.hrc .phead__hero{display:none}
.hrc .phead{color:var(--ink);padding-bottom:clamp(.6rem,1.2vw,1rem)}
.hrc .phead__text{min-height:0;padding:clamp(1.2rem,2.4vw,2rem) 0 0;gap:.55rem;max-width:min(100%,640px)}
.hrc .phead__text .phead__tag{color:var(--ink-2)}
.hrc .phead h1{color:var(--ink)}
.hrc .phead p{color:var(--ink-2)}
@media(max-width:720px){.hrc .phead__text{min-height:0;padding:.6rem 0 0}}
.hrc .hrc-bar span{background:var(--ink)}
.hrc .hrc-more{grid-column:1/-1;height:1px}

/* 17/10 (Justyn): the collection page in the new look.
   - Switching tab, filter or collection: products fade up one after another instead of flashing in.
   - Phones: the small line above the title goes, so everything sits higher; the Products / Bundles / Gift guide
     / Shop by therapy tabs are bigger and easier to tap.
   - Filters sheet: the page colour, rounded chips and buttons, a quieter Clear filters next to a strong
     "Show N items" (the chat button now stays hidden while the sheet is open). */
@keyframes hrcIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.hrc #grid>*,.hrc #gsecs>*{animation:hrcIn .6s cubic-bezier(.22,1,.36,1) backwards;animation-delay:calc(var(--hrc-i,0) * 50ms)}
.hrc #gsecs>*:nth-child(2){--hrc-i:1}.hrc #gsecs>*:nth-child(3){--hrc-i:2}.hrc #gsecs>*:nth-child(n+4){--hrc-i:3}
@media (prefers-reduced-motion:reduce){.hrc #grid>*,.hrc #gsecs>*{animation:none}}
@media (max-width:720px){
  .hrc .phead__tag{display:none}
  .hrc .seg{gap:1.5rem}
  .hrc .seg button{font-size:.9rem;letter-spacing:.06em;padding:.55rem 0 .85rem}
}
.hrc .sheet{background:#EFEEEA}
.hrc .sheet__head{border-bottom-color:rgba(22,24,26,.12)}
.hrc .sheet__close{width:40px;height:40px;background:#fff;border:1px solid rgba(22,24,26,.12)}
.hrc .sheet .eyebrow{font-size:11px;letter-spacing:.14em;color:#5B6065}
.hrc .sheet .opt{border:0;border-radius:999px;background:#E6E5E0;padding:.65em 1.15em;color:#16181A}
.hrc .sheet .opt:hover{background:#DCDBD5}
.hrc .sheet .opt.on{background:#16181A;color:#fff}
.hrc .sheet .opt .c{color:#74787D}.hrc .sheet .opt.on .c{color:#A9ADB2}
.hrc .sheet__foot{gap:12px;background:#EFEEEA;border-top-color:rgba(22,24,26,.12);padding:14px var(--pad) calc(14px + env(safe-area-inset-bottom,0px))}
.hrc .sheet__foot button{display:inline-flex;align-items:center;justify-content:center;gap:.3em;height:52px;border-radius:999px;font-size:15px;font-weight:500;text-align:center}
.hrc .sheet__foot .clear{flex:0 0 auto;padding:0 22px;border:1px solid rgba(22,24,26,.22);background:transparent;color:#16181A}
.hrc .sheet__foot .apply{flex:1 1 auto;background:#16181A;color:#fff}
.hrc .fab{border-radius:999px;border:1px solid rgba(22,24,26,.12)}
/* The floating Filters button stays under the header's menus (Justyn 17/10/2026, "the collection page filter is
   showing over the menu when the menu loads"): it sat one layer above the phone menu, so it fades out while the
   phone menu, the search or a desktop menu panel is open. */
.hrc .fab{transition:transform .3s var(--ease),opacity .2s ease-out,visibility 0s linear 0s}
body:has(pulsio-header:is([data-mobile-state],[data-panel-open],[data-search-open])) .hrc .fab{opacity:0;visibility:hidden;pointer-events:none;transition:opacity .15s ease-out,visibility 0s linear .15s}
/* Product card labels clear the photo (Justyn 17/10/2026: "the Bestseller tabs are overlapping the product"): on a
   card that carries a label the render starts below it, and on phones the label is a size smaller. */
.hrc .card:has(.card__tag) .card__img{padding-top:44px}
@media (max-width:640px){
  .hrc :is(.grid,.gsec__row) .card .card__tag{top:8px;left:8px;height:20px;padding:0 7px;font-size:10px}
  .hrc :is(.grid,.gsec__row) .card .card__tag.is-right{left:auto;right:8px}
  .hrc .card:has(.card__tag) .card__img{padding-top:32px}
}
/* The "Shop by" tabs row fades out at whichever edge has more tabs past it (Justyn 17/10/2026: "more obvious that
   it's scrollable ... fades on the right side"). hrc.js sets data-fade-l / data-fade-r as the row scrolls. */
.hrc .seg{--fl:0px;--fr:0px;-webkit-mask-image:linear-gradient(to right,transparent 0,#000 var(--fl),#000 calc(100% - var(--fr)),transparent 100%);mask-image:linear-gradient(to right,transparent 0,#000 var(--fl),#000 calc(100% - var(--fr)),transparent 100%)}
.hrc .seg[data-fade-l]{--fl:36px}
.hrc .seg[data-fade-r]{--fr:56px}
/* Product renders show whole (Justyn 20/10/2026: Air, Compression and Compression PRO cut off at the top and
   bottom on computers). The picture's frame now matches the card's picture box exactly, so a fitted picture can
   no longer grow past it; hrc.js then scales each render (card__img--fit) so every product fills the same safe
   area, clear of the Bestseller label. */
.hrc .card__art{grid-template-columns:100%;grid-template-rows:100%}
.hrc .card__art>.mask-inner{width:100%;height:100%;min-width:0;min-height:0;overflow:hidden}
.hrc .card__art>.mask-inner>.card__img{min-height:0;max-height:100%}
.hrc a.card .card__art .card__img.card__img--fit{padding:0;transform:translate(var(--fx,0),var(--fy,0)) scale(var(--fs,1))}
@media (hover:hover){
  .hrc a.card:hover .card__art .card__img.card__img--fit{transform:translate(var(--fx,0),var(--fy,0)) scale(calc(var(--fs,1) * 1.04))}
}
