/* The approved hero (heroes/22exo-peptide-research-61589-v3), owner-locked: bones, motion and type
   unchanged; brand, vials and copy swapped. h1/.m/.d scoped to .hero so the store pages can use them. */


:root{
  --gut:clamp(20px,5.2vw,88px);
  --navh:84px;
  --copyw:clamp(430px,38vw,700px);
  --strip:clamp(70px,5.8vw,112px);
  --tab:30px;
  --ease:cubic-bezier(.33,1,.68,1);          /* every hover: mosby's one curve */
  --open:cubic-bezier(.65,.05,.36,1);        /* the file swap */
  --paper:#fbfaf6;
  --ink:#07101c;
  --k:#1d43c4;                               /* the open compound's band colour, set by script */
  --mono:"Plex Mono",ui-monospace,Menlo,monospace;
  --disp:"Neue Corp","Arial Narrow",sans-serif;
  --serif:"Signifier",Georgia,serif;
}
*{box-sizing:border-box}

.hero{color:var(--paper);background:#041443;position:relative;height:100svh;min-height:660px;max-height:1240px;overflow:hidden;isolation:isolate}

/* ---- the colour field: one layer per compound, cross-faded ---- */
.field{position:absolute;inset:0;z-index:-2;opacity:0;transition:opacity 1s var(--open)}
.field.is-on{opacity:1}
.grain{position:absolute;inset:0;z-index:4;pointer-events:none;opacity:.06;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>")}

/* ---- nav ---- */
.nav{position:absolute;z-index:20;top:0;left:0;right:0;height:var(--navh);display:flex;align-items:center;padding:0 var(--gut);gap:44px}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;flex:none}
.brand .wm{height:20px;width:auto;display:block;overflow:visible}
.brand .wm-letters{fill:currentColor}.brand .wm-file{fill:color-mix(in srgb,var(--k) 70%,#fff);transition:fill 1s var(--open)}
.links{display:flex;gap:30px;margin:0;padding:0;list-style:none}
.links a{font:400 12px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;text-decoration:none;position:relative;padding:6px 0;opacity:.9}
.links a::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:currentColor;transform:scaleX(0);transform-origin:right;transition:transform .65s var(--ease)}
@media (hover:hover){.links a:hover::after{transform:scaleX(1);transform-origin:left}}
.nav-r{margin-left:auto;display:flex;align-items:center;gap:6px}
.ico{position:relative;width:42px;height:42px;display:grid;place-items:center;border-radius:50%;background:rgba(4,10,30,.28);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:0;cursor:pointer;text-decoration:none;transition:background .65s var(--ease)}
@media (hover:hover){.ico:hover{background:rgba(4,10,30,.5)}}
.ico svg{width:18px;height:18px}
.badge{position:absolute;top:-2px;right:-2px;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--paper);color:var(--ink);font:400 10px/18px var(--mono);text-align:center}
.badge.is-bump{animation:bump .5s cubic-bezier(.16,1,.3,1)}
@keyframes bump{30%{scale:1.6}100%{scale:1}}
.burger{display:none}

/* ---- copy column ---- */
.copy{position:absolute;z-index:5;left:var(--gut);top:var(--navh);bottom:0;width:calc(var(--copyw) - var(--gut) - 40px);display:flex;flex-direction:column;justify-content:center;padding-bottom:64px}
.eyebrow{display:flex;align-items:center;gap:12px;margin:0 0 26px;font:400 12px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase}
.eyebrow i{width:22px;height:10px;border-radius:2px;background:var(--k);box-shadow:0 0 0 1px rgba(255,255,255,.55) inset;transition:background 1s var(--open)}
.hero h1{margin:0;font:700 clamp(84px,9.6vw,184px)/.84 var(--disp);text-transform:uppercase;letter-spacing:-.005em}
.hero h1 .ln{display:block;overflow:hidden;padding:.08em 0 .2em;margin:-.08em 0 -.2em}
.hero h1 .ln>span{display:block;transform:translateY(108%);transition:transform 1.1s cubic-bezier(.16,1,.3,1)}
.hero h1 .ln:nth-child(2)>span,.hero h1 .ln:nth-child(5)>span{transition-delay:.09s}
.hero h1 .ln:nth-child(3)>span{transition-delay:.18s}
.hero .m{display:none !important}
.is-in h1 .ln>span{transform:none}
.lede{margin:30px 0 0;max-width:30em;font:300 clamp(17px,1.32vw,21px)/1.45 var(--serif);color:rgba(251,250,246,.86)}
.cta{margin-top:34px;display:flex;align-items:center;gap:26px}
.fwb.shop{--fwb-bg:var(--paper);--fwb-ink:var(--ink);--fwb-fill:var(--ink);--fwb-ink-hover:var(--paper);--fwb-line:0;--fwb-pad:18px 24px;--fwb-radius:999px;--fwb-font:400 13px/1.15 var(--mono);--fwb-gap:14px;--fwb-ic:16px;letter-spacing:.06em}
.count{font:400 12px/1.5 var(--mono);letter-spacing:.06em;text-transform:uppercase;opacity:.8}
.rail{position:absolute;left:0;right:0;bottom:30px;display:flex;flex-direction:column;gap:9px;font:400 11px/1.4 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:rgba(251,250,246,.72)}
.rail span{display:flex;gap:9px;align-items:baseline}
.rail b{font-weight:400;color:var(--paper)}

.rise{opacity:0;transform:translateY(18px);transition:opacity .9s var(--ease),transform .9s var(--ease)}
.is-in .rise{opacity:1;transform:none}
.is-in .rise.d1{transition-delay:.35s}.is-in .rise.d2{transition-delay:.45s}.is-in .rise.d3{transition-delay:.55s}.is-in .rise.d4{transition-delay:.7s}

/* ---- the cabinet of files ---- */
.cab{position:absolute;z-index:2;top:0;right:0;bottom:0;left:var(--copyw);display:flex}
.file{position:relative;flex:0 0 var(--strip);min-width:0;cursor:pointer;transition:flex-grow .95s var(--open) .14s,flex-basis .65s var(--ease);outline:none}
@media (hover:hover){.file:not(.is-open):hover{transition-delay:0s}}
.file.is-open{flex-grow:1;cursor:default}
/* entrance: the drawer fills from the right */
.file>.wrap{position:absolute;inset:0;transform:translateY(34%);opacity:0;transition:transform 1.2s cubic-bezier(.16,1,.3,1),opacity .8s var(--ease)}
.is-in .file>.wrap{transform:none;opacity:1}
.is-in .file:nth-child(1)>.wrap{transition-delay:.05s}.is-in .file:nth-child(2)>.wrap{transition-delay:.12s}.is-in .file:nth-child(3)>.wrap{transition-delay:.19s}.is-in .file:nth-child(4)>.wrap{transition-delay:.26s}.is-in .file:nth-child(5)>.wrap{transition-delay:.33s}

/* the photo (open state) */
.shot{position:absolute;inset:0;overflow:hidden;opacity:0;transition:opacity .14s linear}
.shot::before{content:"";position:absolute;inset:0;background:var(--grad)}
.shot img{position:absolute;top:0;left:50%;height:100%;width:auto;transform:translateX(-50%) scale(1.035);transform-origin:50% 80%;
  -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 22%,#000 82%,transparent 100%);mask-image:linear-gradient(90deg,transparent 0,#000 22%,#000 82%,transparent 100%);
  transition:transform 1.4s cubic-bezier(.16,1,.3,1)}
.file.is-open .shot{opacity:1;transition:opacity .7s var(--ease) .8s}
.file.is-open .shot img{transform:translateX(-50%)}

/* the file face (closed state): a hanging file seen on edge, its tab on top */
.face{position:absolute;left:0;right:0;top:calc(var(--navh) + var(--tab));bottom:0;background:linear-gradient(180deg,color-mix(in srgb,var(--band) 82%,#000) 0%,var(--band) 46%,color-mix(in srgb,var(--band) 92%,#fff) 100%);
  box-shadow:-1px 0 0 rgba(0,0,0,.22),inset 1px 0 0 rgba(255,255,255,.14);color:var(--fink,#fff);
  transition:opacity .2s linear,transform .65s var(--ease);container-type:size}
.tab{position:absolute;left:0;top:calc(var(--tab) * -1 + 1px);height:var(--tab);width:min(100%,86px);display:flex;align-items:center;padding:2px 0 0 12px;font:400 11px/1 var(--mono);letter-spacing:.06em;color:var(--fink,#fff)}
.tab svg{position:absolute;inset:0;width:100%;height:100%;z-index:-1;fill:color-mix(in srgb,var(--band) 82%,#000)}
.vname{position:absolute;left:50%;bottom:28px;writing-mode:vertical-rl;transform:translateX(-50%) rotate(180deg);white-space:nowrap;display:flex;align-items:center;gap:16px}
.vname b{--fs:clamp(40px,3.4vw,62px);font:700 min(var(--fs),calc((100cqh - 150px) / var(--em,10)))/1 var(--disp);text-transform:uppercase;letter-spacing:.005em}
.vname small{font:400 11px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;opacity:.82}
.file.is-open .face{opacity:0;pointer-events:none;transition:opacity .3s linear}
@media (hover:hover){
  .file:not(.is-open):hover{flex-basis:calc(var(--strip) + 26px)}
  .file:not(.is-open):hover .face{transform:translateY(-8px)}
}
.file:focus-visible .face{box-shadow:inset 0 0 0 2px var(--paper)}

/* caption + buy row inside the open file */
.cap{position:absolute;left:clamp(22px,2.6vw,44px);right:clamp(22px,2.6vw,44px);bottom:clamp(22px,3.4vh,40px);display:flex;align-items:flex-end;justify-content:space-between;gap:20px;opacity:0;transform:translateY(12px);transition:opacity .12s linear,transform .12s linear;pointer-events:none;white-space:nowrap}
.file.is-open .cap{opacity:1;transform:none;transition:opacity .7s var(--ease) 1s,transform .9s var(--ease) 1s;pointer-events:auto}
.cap-l{min-width:0}
.cap .idx{font:400 11px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;opacity:.8;display:block;margin-bottom:10px}
.cap .nm{text-decoration:none;display:block;font:700 clamp(30px,2.5vw,46px)/.9 var(--disp);text-transform:uppercase}
.cap .pr{display:block;margin-top:8px;font:400 13px/1 var(--mono)}
.fwb.add{--fwb-bg:rgba(251,250,246,.14);--fwb-ink:var(--paper);--fwb-fill:var(--paper);--fwb-ink-hover:var(--ink);--fwb-line:1px solid rgba(251,250,246,.6);--fwb-pad:15px 20px;--fwb-radius:999px;--fwb-font:400 12px/1.15 var(--mono);--fwb-gap:12px;--fwb-ic:15px;letter-spacing:.06em;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);flex:none}

.dock{display:none}

/* ---- tablet: copy shrinks, strips narrow ---- */
@media (max-width:1180px){
  :root{--copyw:clamp(380px,42vw,520px);--strip:62px}
  .links{display:none}
  .vname b{--fs:38px}
}

/* ---- phones: copy on top, the same cabinet below, a buy dock in thumb reach ---- */
@media (max-width:760px){
  :root{--gut:20px;--navh:64px;--strip:44px;--tab:22px}
  .hero{height:100svh;min-height:560px;max-height:none;display:flex;flex-direction:column;padding-bottom:calc(84px + env(safe-area-inset-bottom))}
  .hero .d{display:none !important}.hero .m{display:block !important}.hero .eyebrow .m{display:inline !important}
  .nav{gap:0}
  .brand .wm{height:17px}
  .burger{display:grid}
  .ico{width:38px;height:38px}
  .copy{position:relative;left:auto;top:auto;bottom:auto;width:auto;padding:calc(var(--navh) + 18px) var(--gut) 0;display:block;flex:none}
  .eyebrow{margin-bottom:16px;font-size:11px}
  .hero h1{font-size:clamp(50px,15.4vw,76px)}
  .lede{margin-top:16px;font-size:16.5px;line-height:1.42}
  .cta{margin-top:20px}
  .fwb.shop{--fwb-pad:15px 20px}
  .rail{display:none}
  .cab{position:relative;left:auto;top:auto;bottom:auto;right:auto;margin-top:22px;flex:1 1 auto;min-height:230px}
  .face{top:var(--tab)}
  .tab{width:100%;padding-left:7px;font-size:10px}
  .vname{bottom:18px;gap:10px}
  .vname b{--fs:25px;font-size:min(var(--fs),calc((100cqh - 30px) / var(--em,10)))}
  .vname small{display:none}
  .cap{display:none}
  .dock{display:flex;position:fixed;z-index:30;left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom));align-items:center;gap:12px;padding:10px 10px 10px 18px;border-radius:999px;background:rgba(7,16,28,.78);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 10px 30px rgba(0,0,0,.25)}
  .dock .sw{width:14px;height:14px;border-radius:3px;background:var(--k);flex:none;transition:background .6s var(--ease)}
  .dock .t{min-width:0;flex:1;font:400 12px/1.25 var(--mono);letter-spacing:.04em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .dock .t b{font-weight:400;display:block;text-transform:uppercase}
  .dock .t span{opacity:.75}
  .dock .fwb.add{--fwb-pad:13px 16px;--fwb-bg:var(--paper);--fwb-ink:var(--ink);--fwb-fill:var(--k);--fwb-ink-hover:var(--paper);--fwb-line:0}
}
@media (max-width:760px) and (max-height:700px){ .lede{display:none} }
@media (prefers-reduced-motion:reduce){
  *{transition-duration:.01s !important;transition-delay:0s !important;animation:none !important}
}

/* ---- store additions (not part of the approved hero's look) ---- */
.cap .nm:hover{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:6px}
.ico{color:inherit}
.dock{transition:opacity .4s var(--ease),transform .5s var(--ease)}
.dock.is-gone{opacity:0;transform:translateY(24px);pointer-events:none}
.ico:focus-visible,.fwb:focus-visible,.links a:focus-visible,.brand:focus-visible{outline:2px solid var(--paper);outline-offset:3px}
