The SLA Way to Get Placed
:root {
--primary: #ef476f;
--primary-dark: #c22354;
--primary-soft: #fbe4ea;
--text: #1c1a20;
--muted: #6d6875;
}
* { box-sizing: border-box; }
body {
margin: 0;
background: #fff;
color: var(--text);
font-family: "Poppins", sans-serif;
}
.hero {
max-width: 900px;
margin: auto;
padding: 65px 24px 20px;
text-align: center;
}
.hero-title {
display: flex;
align-items: center;
justify-content: center;
gap: 16px;
}
.hero-title .line {
width: 58px;
height: 2px;
background: var(--primary);
}
.hero h1 {
margin: 0;
font-size: clamp(30px, 4vw, 48px);
font-weight: 800;
}
.hero h1 span { color: var(--primary); }
.hero p {
max-width: 700px;
margin: 18px auto 0;
color: var(--muted);
font-size: 15px;
line-height: 1.7;
}
.flow-wrap {
position: relative;
max-width: 1100px;
margin: 55px auto 75px;
padding: 0 65px;
}
.flow-svg {
position: absolute;
inset: 0;
z-index: 0;
width: 100%;
height: 100%;
overflow: visible;
pointer-events: none;
}
.flow-svg .straight,
.flow-svg .curl {
fill: none;
stroke: var(--primary);
stroke-linecap: round;
stroke-linejoin: round;
}
.flow-svg .straight { stroke-width: 5; }
.flow-svg .curl { stroke-width: 6; }
.flow-svg polygon { fill: var(--primary); }
.flow-row {
position: relative;
z-index: 1;
display: grid;
grid-template-columns: 1fr 1fr;
gap: 100px;
margin-bottom: 65px;
}
.flow-row.final-row {
display: flex;
justify-content: center;
margin-bottom: 0;
}
.box {
position: relative;
display: flex;
align-items: center;
gap: 18px;
min-height: 175px;
padding: 26px 28px 26px 34px;
border: 2px solid var(--primary);
border-radius: 26px;
background: #fff;
box-shadow: 0 12px 26px rgba(194, 35, 84, 0.12);
}
.box.final {
width: min(430px, 100%);
}
.box-icon {
display: grid;
place-items: center;
flex-shrink: 0;
width: 84px;
height: 84px;
border: 1px solid #f8bfd0;
border-radius: 50%;
background: var(--primary-soft);
font-size: 36px;
}
.box h3 {
margin: 0 0 7px;
font-size: 20px;
line-height: 1.25;
}
.box p {
max-width: 245px;
margin: 0;
color: var(--muted);
font-size: 13px;
line-height: 1.65;
}
.badge {
position: absolute;
top: 50%;
left: -31px;
z-index: 4;
display: grid;
place-items: center;
width: 62px;
height: 62px;
transform: translateY(-50%);
border: 4px solid #fff;
border-radius: 50%;
background: var(--primary-dark);
color: #fff;
font-size: 19px;
font-weight: 800;
box-shadow: 0 7px 14px rgba(194, 35, 84, 0.28);
}
.port {
position: absolute;
top: 50%;
right: -10px;
z-index: 3;
width: 17px;
height: 17px;
transform: translateY(-50%);
border: 4px solid var(--primary);
border-radius: 50%;
background: #fff;
}
@media (max-width: 780px) {
.hero { padding-top: 45px; }
.hero-title .line { width: 28px; }
.flow-wrap {
padding: 0 24px;
margin-top: 60px;
}
.flow-row {
grid-template-columns: 1fr;
gap: 50px;
margin-bottom: 50px;
}
.flow-row.final-row {
display: flex;
margin-bottom: 0;
}
.box,
.box.final {
width: 100%;
min-height: 145px;
padding: 35px 20px 20px;
}
.box-icon {
width: 68px;
height: 68px;
font-size: 29px;
}
.box h3 { font-size: 17px; }
.box p { font-size: 12px; }
.badge {
top: -31px;
left: 50%;
transform: translateX(-50%);
}
.port {
top: auto;
right: auto;
bottom: -10px;
left: 50%;
transform: translateX(-50%);
}
.final-port {
display: none;
}
.flow-svg .straight,
.flow-svg .curl {
stroke-width: 4;
}
}
The SLA Way to Get Placed
Seven connected stages, one continuous path from enrollment to your career
launch — here is exactly how it works, step by step.
01
🎓
Technical Mastery
Industry-aligned curriculum, daily coding tasks, real-time projects
02
💻
Career Readiness
Aptitude, Communication, ATS-friendly resume optimization
03
🎯
Placement Prep
Aptitude, communication tuning and technical interview mastery.
04
💬
Panel Mock Interviews
Real company-pattern mocks with expert panel feedback.
05
👨💼
Interview schedule
Multiple company drives with lifetime placement support.
06
📝
Interview Feedback
Detailed performance analysis and one-on-one guidance.
07
🏆
Launch Your Career
Land your first job with lifetime alumni and career support.
const wrap = document.getElementById("flowWrap");
const svg = document.getElementById("flowSvg");
function point(element, wrapRect) {
const rect = element.getBoundingClientRect();
return {
x: rect.left + rect.width / 2 - wrapRect.left,
y: rect.top + rect.height / 2 - wrapRect.top
};
}
function badgePoint(boxId, wrapRect) {
return point(document.querySelector(`#${boxId} .badge`), wrapRect);
}
function addPath(pathData, className) {
const path = document.createElementNS("http://www.w3.org/2000/svg", "path");
path.setAttribute("d", pathData);
path.setAttribute("class", className);
svg.appendChild(path);
}
function addArrow(x, y, direction = "right") {
const arrow = document.createElementNS("http://www.w3.org/2000/svg", "polygon");
if (direction === "down") {
arrow.setAttribute(
"points",
`${x - 7},${y - 10} ${x + 7},${y - 10} ${x},${y + 5}`
);
} else {
arrow.setAttribute(
"points",
`${x - 10},${y - 7} ${x + 5},${y} ${x - 10},${y + 7}`
);
}
svg.appendChild(arrow);
}
function drawStraight(fromId, targetBoxId, wrapRect) {
const from = point(document.getElementById(fromId), wrapRect);
const to = badgePoint(targetBoxId, wrapRect);
const arrowX = to.x - 13;
addPath(`M ${from.x} ${from.y} L ${arrowX} ${to.y}`, "straight");
addArrow(arrowX, to.y);
}
function drawCurl(fromId, targetBoxId, wrapRect) {
const from = point(document.getElementById(fromId), wrapRect);
const to = badgePoint(targetBoxId, wrapRect);
const rightEdge = wrapRect.width - 13;
const leftEdge = 13;
const bridgeY = (from.y + to.y) / 2;
const path = `
M ${from.x} ${from.y}
C ${from.x + 42} ${from.y}, ${rightEdge} ${from.y}, ${rightEdge} ${from.y + 28}
L ${rightEdge} ${bridgeY - 18}
Q ${rightEdge} ${bridgeY}, ${rightEdge - 18} ${bridgeY}
L ${leftEdge + 18} ${bridgeY}
Q ${leftEdge} ${bridgeY}, ${leftEdge} ${bridgeY + 18}
L ${leftEdge} ${to.y - 18}
Q ${leftEdge} ${to.y}, ${leftEdge + 18} ${to.y}
L ${to.x} ${to.y}
`;
addPath(path, "curl");
}
function drawFinalCurl(fromId, targetPortId, wrapRect) {
const from = point(document.getElementById(fromId), wrapRect);
const to = point(document.getElementById(targetPortId), wrapRect);
const rightEdge = wrapRect.width - 13;
addPath(
`
M ${from.x} ${from.y}
C ${from.x + 42} ${from.y},
${rightEdge} ${from.y},
${rightEdge} ${from.y + 28}
L ${rightEdge} ${to.y - 18}
Q ${rightEdge} ${to.y},
${rightEdge - 18} ${to.y}
L ${to.x} ${to.y}
`,
"curl"
);
}
function drawMobileStraight(fromId, targetBoxId, wrapRect) {
const from = point(document.getElementById(fromId), wrapRect);
const to = badgePoint(targetBoxId, wrapRect);
const arrowY = to.y - 12;
addPath(`M ${from.x} ${from.y} L ${to.x} ${arrowY}`, "straight");
addArrow(to.x, arrowY, "down");
}
function drawTimeline() {
const wrapRect = wrap.getBoundingClientRect();
const isMobile = window.innerWidth <= 780;
svg.setAttribute("width", wrapRect.width);
svg.setAttribute("height", wrapRect.height);
svg.setAttribute("viewBox", `0 0 ${wrapRect.width} ${wrapRect.height}`);
svg.innerHTML = "";
if (isMobile) {
drawMobileStraight("p1", "b2", wrapRect);
drawMobileStraight("p2", "b3", wrapRect);
drawMobileStraight("p3", "b4", wrapRect);
drawMobileStraight("p4", "b5", wrapRect);
drawMobileStraight("p5", "b6", wrapRect);
drawMobileStraight("p6", "b7", wrapRect);
return;
}
drawStraight("p1", "b2", wrapRect);
drawCurl("p2", "b3", wrapRect);
drawStraight("p3", "b4", wrapRect);
drawCurl("p4", "b5", wrapRect);
drawStraight("p5", "b6", wrapRect);
drawFinalCurl("p6", "p7", wrapRect);
}
window.addEventListener("load", drawTimeline);
window.addEventListener("resize", drawTimeline);
if (document.fonts && document.fonts.ready) {
document.fonts.ready.then(drawTimeline);
}