Freelance Upscaling Process – Mulberry Soft Velvet
<div class="fp-freelance-portfolio-image-upscaling-ui">
<div class="fp-freelance-portfolio-image-upscaling-ui-stage">
<div class="fp-freelance-portfolio-image-upscaling-ui-velvet-bg"></div>
<div class="fp-freelance-portfolio-image-upscaling-ui-card">
<div class="fp-freelance-portfolio-image-upscaling-ui-header">
<div class="fp-freelance-portfolio-image-upscaling-ui-title-group">
<span class="fp-freelance-portfolio-image-upscaling-ui-title">Hero_Banner_v2.psd</span>
<span class="fp-freelance-portfolio-image-upscaling-ui-subtitle">1080p ➔ 8K UHD</span>
</div>
<div class="fp-freelance-portfolio-image-upscaling-ui-badge" id="fp-freelance-portfolio-image-upscaling-ui-badge">AI UPSCALER</div>
</div>
<div class="fp-freelance-portfolio-image-upscaling-ui-canvas" id="fp-freelance-portfolio-image-upscaling-ui-canvas">
<div class="fp-freelance-portfolio-image-upscaling-ui-graphic fp-freelance-portfolio-image-upscaling-ui-lowres"></div>
<div class="fp-freelance-portfolio-image-upscaling-ui-graphic fp-freelance-portfolio-image-upscaling-ui-highres"></div>
<div class="fp-freelance-portfolio-image-upscaling-ui-torch"></div>
</div>
<div class="fp-freelance-portfolio-image-upscaling-ui-controls">
<div class="fp-freelance-portfolio-image-upscaling-ui-status-row">
<span class="fp-freelance-portfolio-image-upscaling-ui-process-text" id="fp-freelance-portfolio-image-upscaling-ui-status">Enhancing Textures...</span>
<span class="fp-freelance-portfolio-image-upscaling-ui-percentage" id="fp-freelance-portfolio-image-upscaling-ui-pct">42%</span>
</div>
<div class="fp-freelance-portfolio-image-upscaling-ui-progress-track">
<div class="fp-freelance-portfolio-image-upscaling-ui-progress-fill" id="fp-freelance-portfolio-image-upscaling-ui-fill"></div>
</div>
</div>
</div>
</div>
</div>.fp-freelance-portfolio-image-upscaling-ui {
--fp-container-width: 100%;
--fp-max-width: 500px;
--fp-aspect-ratio: 1 / 1;
--fp-primary-color: #fcfbf9;
--fp-secondary-color: #eaddd8;
--fp-muted-color: #1a1518;
--fp-soft-color: #f5f0ec;
--fp-background-color: transparent;
--fp-info-color: #c49ea0;
--fp-warning-color: #a46d78;
--fp-danger-color: #6d3a4b;
--fp-accent-color: #9c3654;
width: var(--fp-container-width);
max-width: var(--fp-max-width);
margin: 0 auto;
background-color: var(--fp-background-color);
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, sans-serif;
position: relative;
}
.fp-freelance-portfolio-image-upscaling-ui-stage {
width: 100%;
aspect-ratio: var(--fp-aspect-ratio);
background: var(--fp-primary-color);
border-radius: 24px;
box-shadow:
inset 0 0 0 1px var(--fp-secondary-color),
0 20px 40px -10px rgba(26, 21, 24, 0.06);
position: relative;
overflow: hidden;
display: flex;
align-items: center;
justify-content: center;
padding: 32px;
box-sizing: border-box;
}
.fp-freelance-portfolio-image-upscaling-ui-velvet-bg {
position: absolute;
inset: 0;
background:
radial-gradient(ellipse at 20% 80%, rgba(196, 158, 160, 0.1) 0%, transparent 60%),
radial-gradient(ellipse at 80% 20%, rgba(164, 109, 120, 0.08) 0%, transparent 60%),
repeating-linear-gradient(45deg, rgba(0,0,0,0.01) 0px, rgba(0,0,0,0.01) 2px, transparent 2px, transparent 4px);
z-index: 1;
pointer-events: none;
}
.fp-freelance-portfolio-image-upscaling-ui-card {
position: relative;
z-index: 5;
width: 100%;
height: 100%;
background: var(--fp-soft-color);
border: 1px solid var(--fp-secondary-color);
border-radius: 16px;
display: flex;
flex-direction: column;
overflow: hidden;
box-shadow: 0 12px 32px rgba(109, 58, 75, 0.08);
animation: fp-freelance-portfolio-image-upscaling-ui-breathe 6s ease-in-out infinite;
}
.fp-freelance-portfolio-image-upscaling-ui-header {
padding: 16px 20px;
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: 1px solid var(--fp-secondary-color);
background: rgba(255, 255, 255, 0.5);
}
.fp-freelance-portfolio-image-upscaling-ui-title-group {
display: flex;
flex-direction: column;
}
.fp-freelance-portfolio-image-upscaling-ui-title {
font-size: 0.8rem;
font-weight: 700;
color: var(--fp-muted-color);
letter-spacing: 0.5px;
}
.fp-freelance-portfolio-image-upscaling-ui-subtitle {
font-size: 0.65rem;
color: var(--fp-warning-color);
font-weight: 600;
}
.fp-freelance-portfolio-image-upscaling-ui-badge {
background: var(--fp-info-color);
color: var(--fp-primary-color);
padding: 4px 10px;
border-radius: 12px;
font-size: 0.6rem;
font-weight: 800;
letter-spacing: 1px;
text-transform: uppercase;
transition: all 0.3s ease;
}
.fp-freelance-portfolio-image-upscaling-ui-canvas {
flex-grow: 1;
position: relative;
background: #111;
overflow: hidden;
--spot-x: 50%;
--spot-y: 50%;
--spot-size: 35%;
}
.fp-freelance-portfolio-image-upscaling-ui-graphic {
position: absolute;
inset: 0;
background:
radial-gradient(circle at 30% 30%, var(--fp-accent-color) 0%, transparent 50%),
radial-gradient(circle at 70% 60%, var(--fp-warning-color) 0%, transparent 60%),
linear-gradient(135deg, #1a1518 0%, #2a2025 100%);
display: flex;
align-items: center;
justify-content: center;
}
.fp-freelance-portfolio-image-upscaling-ui-graphic::before {
content: '';
position: absolute;
width: 60%;
height: 60%;
border: 4px solid rgba(255,255,255,0.1);
border-radius: 30% 70% 70% 30% / 30% 30% 70% 70%;
transform: rotate(45deg);
}
.fp-freelance-portfolio-image-upscaling-ui-graphic::after {
content: '';
position: absolute;
width: 40%;
height: 40%;
background: repeating-linear-gradient(45deg, transparent, transparent 10px, rgba(255,255,255,0.05) 10px, rgba(255,255,255,0.05) 20px);
border-radius: 50%;
}
.fp-freelance-portfolio-image-upscaling-ui-lowres {
filter: blur(8px) contrast(1.5);
opacity: 0.8;
}
.fp-freelance-portfolio-image-upscaling-ui-highres {
-webkit-mask-image: radial-gradient(circle at var(--spot-x) var(--spot-y), black 0%, black calc(var(--spot-size) - 10%), transparent var(--spot-size));
mask-image: radial-gradient(circle at var(--spot-x) var(--spot-y), black 0%, black calc(var(--spot-size) - 10%), transparent var(--spot-size));
z-index: 2;
}
.fp-freelance-portfolio-image-upscaling-ui-torch {
position: absolute;
top: 0; left: 0; right: 0; bottom: 0;
z-index: 3;
background: radial-gradient(circle at var(--spot-x) var(--spot-y), transparent calc(var(--spot-size) - 2%), rgba(255,255,255,0.4) var(--spot-size), transparent calc(var(--spot-size) + 2%));
pointer-events: none;
opacity: 0.7;
transition: background 0.3s ease;
}
.fp-freelance-portfolio-image-upscaling-ui-controls {
padding: 20px;
background: var(--fp-primary-color);
display: flex;
flex-direction: column;
gap: 12px;
border-top: 1px solid var(--fp-secondary-color);
}
.fp-freelance-portfolio-image-upscaling-ui-status-row {
display: flex;
justify-content: space-between;
align-items: center;
}
.fp-freelance-portfolio-image-upscaling-ui-process-text {
font-size: 0.75rem;
font-weight: 700;
color: var(--fp-muted-color);
}
.fp-freelance-portfolio-image-upscaling-ui-percentage {
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
font-size: 0.9rem;
font-weight: 800;
color: var(--fp-accent-color);
font-variant-numeric: tabular-nums;
transition: color 0.3s ease;
}
.fp-freelance-portfolio-image-upscaling-ui-progress-track {
width: 100%;
height: 6px;
background: var(--fp-secondary-color);
border-radius: 4px;
overflow: hidden;
position: relative;
}
.fp-freelance-portfolio-image-upscaling-ui-progress-fill {
height: 100%;
width: 0%;
background: linear-gradient(90deg, var(--fp-warning-color), var(--fp-accent-color));
border-radius: 4px;
transition: width 0.1s linear;
}
.fp-freelance-portfolio-image-upscaling-ui.fp-is-bursting .fp-freelance-portfolio-image-upscaling-ui-card {
border-color: var(--fp-accent-color);
box-shadow: 0 15px 40px rgba(156, 54, 84, 0.15);
}
.fp-freelance-portfolio-image-upscaling-ui.fp-is-bursting .fp-freelance-portfolio-image-upscaling-ui-canvas {
--spot-size: 60%;
}
.fp-freelance-portfolio-image-upscaling-ui.fp-is-bursting .fp-freelance-portfolio-image-upscaling-ui-torch {
background: radial-gradient(circle at var(--spot-x) var(--spot-y), transparent calc(var(--spot-size) - 4%), rgba(156, 54, 84, 0.8) var(--spot-size), transparent calc(var(--spot-size) + 4%));
}
.fp-freelance-portfolio-image-upscaling-ui.fp-is-bursting .fp-freelance-portfolio-image-upscaling-ui-badge {
background: var(--fp-accent-color);
box-shadow: 0 4px 12px rgba(156, 54, 84, 0.3);
}
.fp-freelance-portfolio-image-upscaling-ui.fp-is-bursting .fp-freelance-portfolio-image-upscaling-ui-process-text {
color: var(--fp-accent-color);
animation: fp-freelance-portfolio-image-upscaling-ui-pulse-text 1s infinite alternate;
}
@keyframes fp-freelance-portfolio-image-upscaling-ui-breathe {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-4px); }
}
@keyframes fp-freelance-portfolio-image-upscaling-ui-pulse-text {
0% { opacity: 1; }
100% { opacity: 0.6; }
}
@media (max-width: 480px) {
.fp-freelance-portfolio-image-upscaling-ui-stage {
padding: 16px;
}
.fp-freelance-portfolio-image-upscaling-ui-canvas {
--spot-size: 45%;
}
}document.querySelectorAll('.fp-freelance-portfolio-image-upscaling-ui').forEach(root => {
const canvasEl = root.querySelector('#fp-freelance-portfolio-image-upscaling-ui-canvas');
const pctEl = root.querySelector('#fp-freelance-portfolio-image-upscaling-ui-pct');
const fillEl = root.querySelector('#fp-freelance-portfolio-image-upscaling-ui-fill');
const statusEl = root.querySelector('#fp-freelance-portfolio-image-upscaling-ui-status');
const badgeEl = root.querySelector('#fp-freelance-portfolio-image-upscaling-ui-badge');
let progress = 0;
let timeElapsed = 0;
let lastTime = performance.now();
let animationFrameId;
let a = 0.001;
let b = 0.0013;
let phase = 'normal';
let burstTimer = 0;
const statusTexts = [
"Analyzing Noise...",
"Reconstructing Edges...",
"Enhancing Textures...",
"Upsampling Resolution...",
"Applying AI Filters..."
];
function fp_freelance_portfolio_image_upscaling_ui_loop(time) {
if (document.visibilityState === "hidden") {
lastTime = time;
animationFrameId = requestAnimationFrame(fp_freelance_portfolio_image_upscaling_ui_loop);
return;
}
let dt = time - lastTime;
lastTime = time;
timeElapsed += dt;
if (canvasEl) {
let x = 50 + Math.sin(timeElapsed * a) * 35;
let y = 50 + Math.cos(timeElapsed * b) * 35;
canvasEl.style.setProperty('--spot-x', `${x}%`);
canvasEl.style.setProperty('--spot-y', `${y}%`);
}
if (phase === 'normal') {
progress += 0.05 * (dt/16);
burstTimer += dt;
if (burstTimer > 3500) {
phase = 'burst';
burstTimer = 0;
root.classList.add('fp-is-bursting');
if (statusEl) {
statusEl.textContent = statusTexts[Math.floor(Math.random() * statusTexts.length)];
}
if (badgeEl) badgeEl.textContent = "PROCESSING";
}
}
else if (phase === 'burst') {
progress += 0.3 * (dt/16);
burstTimer += dt;
if (burstTimer > 1200) {
phase = 'normal';
burstTimer = 0;
root.classList.remove('fp-is-bursting');
if (badgeEl) badgeEl.textContent = "AI UPSCALER";
}
}
if (progress >= 100) {
progress = 0;
}
if (pctEl) pctEl.textContent = `${Math.floor(progress)}%`;
if (fillEl) fillEl.style.width = `${progress}%`;
animationFrameId = requestAnimationFrame(fp_freelance_portfolio_image_upscaling_ui_loop);
}
animationFrameId = requestAnimationFrame(fp_freelance_portfolio_image_upscaling_ui_loop);
const observer = new MutationObserver(() => {
if (!document.body.contains(root)) {
cancelAnimationFrame(animationFrameId);
observer.disconnect();
}
});
observer.observe(document.body, { childList: true, subtree: true });
});Description
Meet the Freelance Upscaling Process component from our Mulberry Soft Velvet series. This is a premium, free to use UI card component built specifically for modern gig economy platforms. It gives development teams a ready to deploy solution for displaying complex user journeys and talent growth metrics without adding bloated markup to the codebase.
Building step by step onboarding or upscaling flows often leads to sluggish load times when relying on heavy front end frameworks. This asset solves that exact issue for the freelance sector. By utilizing a sterile DOM structure and dropping external libraries entirely, developers get a highly responsive interface. This ensures the application maintains strict performance budgets and passes rigorous enterprise audits.
Technical Architecture & Performance
-
Pure Code Stack: Built entirely with vanilla JavaScript, HTML5, and CSS3. There are absolutely no external dependencies to clash with your current architecture.
-
Zero Framework Bloat: We intentionally bypassed utility class frameworks like Tailwind or Bootstrap and heavy animation scripts like GSAP to keep the payload as light as possible.
-
Performance First: The sterile DOM and lean CSS guarantee rapid render times. This component consistently hits 90+ scores on Core Web Vitals.
-
Scoped Styling: All CSS is cleanly scoped to prevent style leakage. This guarantees a predictable and conflict free integration into legacy or modern enterprise setups.
Design & Aesthetic Impact
The visual layout focuses on a crisp and modern aesthetic tailored for professional talent marketplaces. The Mulberry Muted color tones establish clear visual hierarchies. This creates a refined and approachable interface without overwhelming the user during critical profile building steps. The core interaction features a custom spotlight hover and torch animation. This motion design provides immediate visual feedback, illuminating specific card content as users move their cursor over the upscaling steps. The result is a highly polished and intuitive user experience that feels native to top tier gig applications.
Enterprise Use Cases
-
Talent Onboarding Portals: Integrate these cards into gig marketplace profiles. Freelancers can hover over specific skill certification steps to reveal detailed instructions via the interactive torch effect.
-
Agency Talent Dashboards: Equip internal recruitment software with a lightweight process tracker. HR managers get a highly responsive UI that maps out candidate progression without slowing down the initial page load.
-
Skill Verification Workflows: Use the component inside aggregate educational hubs. Developers can build a secure and fast loading course progression layout that guides independent contractors through premium training modules.
Highlights & Benefits
Drop the code straight into your project without configuration.
Built strictly with pure CSS & Vanilla JS for maximum speed.
Constructed with strict adherence to WCAG accessibility standards for perfect contrast and screen-reader support.
Utilizes a highly optimized, clean DOM architecture ensuring lightning-fast render and maximum PageSpeed scores.

Freelance Upscaling Process – Mulberry Soft Velvet
Description
Meet the Freelance Upscaling Process component from our Mulberry Soft Velvet series. This is a premium, free to use UI card component built specifically for modern gig economy platforms. It gives development teams a ready to deploy solution for displaying complex user journeys and talent growth metrics without adding bloated markup to the codebase.
Building step by step onboarding or upscaling flows often leads to sluggish load times when relying on heavy front end frameworks. This asset solves that exact issue for the freelance sector. By utilizing a sterile DOM structure and dropping external libraries entirely, developers get a highly responsive interface. This ensures the application maintains strict performance budgets and passes rigorous enterprise audits.
Technical Architecture & Performance
-
Pure Code Stack: Built entirely with vanilla JavaScript, HTML5, and CSS3. There are absolutely no external dependencies to clash with your current architecture.
-
Zero Framework Bloat: We intentionally bypassed utility class frameworks like Tailwind or Bootstrap and heavy animation scripts like GSAP to keep the payload as light as possible.
-
Performance First: The sterile DOM and lean CSS guarantee rapid render times. This component consistently hits 90+ scores on Core Web Vitals.
-
Scoped Styling: All CSS is cleanly scoped to prevent style leakage. This guarantees a predictable and conflict free integration into legacy or modern enterprise setups.
Design & Aesthetic Impact
The visual layout focuses on a crisp and modern aesthetic tailored for professional talent marketplaces. The Mulberry Muted color tones establish clear visual hierarchies. This creates a refined and approachable interface without overwhelming the user during critical profile building steps. The core interaction features a custom spotlight hover and torch animation. This motion design provides immediate visual feedback, illuminating specific card content as users move their cursor over the upscaling steps. The result is a highly polished and intuitive user experience that feels native to top tier gig applications.
Enterprise Use Cases
-
Talent Onboarding Portals: Integrate these cards into gig marketplace profiles. Freelancers can hover over specific skill certification steps to reveal detailed instructions via the interactive torch effect.
-
Agency Talent Dashboards: Equip internal recruitment software with a lightweight process tracker. HR managers get a highly responsive UI that maps out candidate progression without slowing down the initial page load.
-
Skill Verification Workflows: Use the component inside aggregate educational hubs. Developers can build a secure and fast loading course progression layout that guides independent contractors through premium training modules.


