Design Specification — STI Job Plus - STI JobPlus
| Field | Value |
| Site / Project | https://jobplus.sti.edu/ |
| Analyzed on | 2026-08-27 |
| Analysis mode | Automated code extraction (no AI) |
Overview
This design system was extracted programmatically from the source page. It is built on a light canvas (#FFFFFF), ink text (#000000), a vivid accent (#0D6EFD). All type is set in 'Lexend Deca'. Detected font weights: 400, 500, 600, 700, 800, 900. Detected style signatures: gradient-rich / aurora; technical / mono accents.
Logo asset(s): https://stijobplus.com/wp-content/uploads/2025/03/logo-jobplus-yellow.png · https://jobplus.sti.edu/wp-content/themes/eduvalt/assets/img/logo/logo.png
Color System
Detected palette (by frequency)
| Hex | RGB | HSL | Count |
#000000 | 0, 0, 0 | 0° 0% 0% | 14 |
#FFFFFF | 255, 255, 255 | 0° 0% 100% | 11 |
#212529 | 33, 37, 41 | 210° 11% 15% | 9 |
#FF6900 | 255, 105, 0 | 25° 100% 50% | 3 |
#0D6EFD | 13, 110, 253 | 216° 98% 52% | 3 |
#F6F8FC | 246, 248, 252 | 220° 50% 98% | 3 |
#CF2E2E | 207, 46, 46 | 0° 64% 50% | 2 |
#FCB900 | 252, 185, 0 | 44° 100% 49% | 2 |
#0693E3 | 6, 147, 227 | 202° 95% 46% | 2 |
#9B51E0 | 155, 81, 224 | 271° 70% 60% | 2 |
#0072BB | 0, 114, 187 | 203° 100% 37% | 2 |
#082A5E | 8, 42, 94 | 216° 84% 20% | 2 |
#ABB8C3 | 171, 184, 195 | 208° 17% 72% | 1 |
#F78DA7 | 247, 141, 167 | 345° 87% 76% | 1 |
#7BDCB5 | 123, 220, 181 | 156° 58% 67% | 1 |
#00D084 | 0, 208, 132 | 158° 100% 41% | 1 |
#8ED1FC | 142, 209, 252 | 203° 95% 77% | 1 |
#FAB123 | 250, 177, 35 | 40° 96% 56% | 1 |
#E7EFFC | 231, 239, 252 | 217° 78% 95% | 1 |
#A0AEC0 | 160, 174, 192 | 214° 20% 69% | 1 |
Assigned roles
Roles are taken from the page's own semantic CSS custom properties when present, otherwise inferred from usage frequency + luminance/saturation.
| Token | Hex | RGB | HSL |
--color-primary | #FF6900 | 255, 105, 0 | 25° 100% 50% |
--color-accent | #0D6EFD | 13, 110, 253 | 216° 98% 52% |
--color-background | #FFFFFF | 255, 255, 255 | 0° 0% 100% |
--color-surface | #F6F8FC | 246, 248, 252 | 220° 50% 98% |
--color-text-primary | #000000 | 0, 0, 0 | 0° 0% 0% |
--color-secondary | #000000 | 0, 0, 0 | 0° 0% 0% |
--color-text-secondary | #ABB8C3 | 171, 184, 195 | 208° 17% 72% |
--color-border | #A0AEC0 | 160, 174, 192 | 214° 20% 69% |
--color-on-primary | #FFFFFF | 255, 255, 255 | 0° 0% 100% |
--color-on-secondary | #FFFFFF | 255, 255, 255 | 0° 0% 100% |
--color-on-accent | #FFFFFF | 255, 255, 255 | 0° 0% 100% |
Surface ramp (derived from detected light neutrals)
| Token | Hex |
--color-surface-container-lowest | #FFFFFF |
--color-surface-container-low | #FBFBFC |
--color-surface-container | #F3F3F3 |
--color-surface-container-high | #F0F0F0 |
--color-surface-container-highest | #E9ECEF |
Gradients
linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%)
linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%)
linear-gradient(135deg,rgb(252,185,0) 0%,rgb(255,105,0) 100%)
linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%)
linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%)
linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%)
linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%)
linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%)
linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%)
linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%)
> 2 additional gradient definitions were framework utility templates (unresolvable var(--tw-gradient-stops)) and were omitted.
Typography
Primary typeface: Lexend Deca — stack: 'Lexend Deca'
Font stacks (most used first)
'Lexend Deca'
'Hind'
inherit
var(--bs-font-sans-serif)
"Font Awesome 5 Brands"
"Font Awesome 5 Free"
"Poppins" !important
var(--bs-body-font-family)
var(--bs-font-monospace)
Web font sources
- fonts.googleapis.com/css?family=Hind:wght@400,500,600,700|Lexend+Deca:wght@400,500,600,700,800&ver=1.0.0
Derived type scale
| Token | Size |
| headline-lg | 40px |
| headline-md | 28px |
| title-lg | 20px |
| body-lg | 18px |
| body-md | 16px |
| label-md | 14px |
| label-sm | 12px |
Font sizes (by frequency)
| Size | Count |
| .875em | 4 |
| 12px | 3 |
| 1rem | 3 |
| 14px | 2 |
| 1.5rem | 2 |
| .75em | 2 |
| 1em | 2 |
| .875rem | 2 |
| 18px | 1 |
| 24px | 1 |
| 2.5rem | 1 |
| 2rem | 1 |
| 1.75rem | 1 |
| 1.25rem | 1 |
Weights in use: 400, 500, 600, 700, 800, 900
Line heights (by frequency)
| Value | Count |
| 1.5 | 3 |
| 1 | 2 |
| 1.2 | 1 |
| 0 | 1 |
Spacing
Derived spacing scale
| Token | Value |
| xs | 3.2px |
| sm | 8px |
| md | 16px |
| lg | 50px |
Raw values (by frequency)
| Value | Count |
| 20px | 5 |
| 1rem | 3 |
| 10px | 2 |
| .5rem | 2 |
| 0px | 1 |
| 50px | 1 |
| 4px | 1 |
| 5px | 1 |
| 8px | 1 |
| 6px | 1 |
| .5em | 1 |
| .2em | 1 |
| .2rem | 1 |
| .375rem | 1 |
| .25rem | 1 |
| .35em | 1 |
Borders & Radius
Derived radius tokens
| Token | Value |
| sm | 3.2px |
| md | 8px |
| pill | 100% |
Raw values (resolved, by frequency)
| Radius | Count |
.25rem | 4 |
4px | 3 |
8px | 2 |
100% | 2 |
10px 10px 0 0 | 1 |
12px | 1 |
.2rem | 1 |
0 | 1 |
.3rem | 1 |
Shadows
Derived elevation
| Token | Value |
| sm | none |
| md | 0 0 0 .25rem rgba(13,110,253,.25) |
| lg | 0px 15px 15px rgb(33 114 251 / 24%) |
All detected shadows
none
0px 15px 15px rgb(33 110 150 / 20%)
0px 15px 15px rgb(33 114 251 / 24%)
0 4px 12px rgba(0, 0, 0, 0.05)
inset 0 0 0 9999px transparent
0 0 0 .25rem rgba(13,110,253,.25)
Layout
Container max-width: 768px
Grid columns (largest detected grid): 3
Breakpoints
- 576px
- 600px
- 767.98px
- 768px
- 992px
- 1200px
- 1400px
- 1800px
Animation & Motion
Transitions
background 0.3s ease
background-color 0.3s ease
color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out
none
opacity .15s linear
transform .3s ease-in-out
Easing curves
linear
ease-out
ease-in
ease-in-out
cubic-bezier(0.550, 0.055, 0.675, 0.190)
cubic-bezier(0.175, 0.885, 0.320, 1)
Keyframes
@keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }
@keyframes blink { from { opacity: 0; } 50% { opacity: 1; } to { opacity: 0; } }
@keyframes progress-bar-stripes { 0%{background-position-x:1rem} }
@keyframes spinner-border { to{transform:rotate(360deg)} }
@keyframes spinner-grow { 0%{transform:scale(0)}50%{opacity:1;transform:none} }
@keyframes placeholder-glow { 50%{opacity:.2} }
@keyframes placeholder-wave { 100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%} }
@keyframes bounce { 0%, 20%, 50%, 80%, 100% { -webkit-transform: translateY(0); -ms-transform: translateY(0); transform: translateY(0); } 40% { -webkit-transform: translateY(-30px); -ms-transform: translateY(-30px); transform: translateY(-30px); } 60% { -webkit-transform: translateY(-15px); -ms-transform: translateY(-15px); transform: translateY(-15px); } }
@keyframes flash { 0%, 50%, 100% { opacity: 1; } 25%, 75% { opacity: 0; } }
@keyframes shake { 0%, 100% { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); } 10%, 30%, 50%, 70%, 90% { -webkit-transform: translateX(-10px); -ms-transform: translateX(-10px); transform: translateX(-10px); } 20%, 40%, 60%, 80% { -webkit-transform: translateX(10px); -ms-transform: translateX(10px); transform: translateX(10px); } }
@keyframes swing { 20% { -webkit-transform: rotate(15deg); -ms-transform: rotate(15deg); transform: rotate(15deg); } 40% { -webkit-transform: rotate(-10deg); -ms-transform: rotate(-10deg); transform: rotate(-10deg); } 60% { -webkit-transform: rotate(5deg); -ms-transform: rotate(5deg); transform: rotate(5deg); } 80% { -webkit-transform: rotate(-5deg); -ms-transform: rotate(-5deg); transform: rotate(-5deg); } 100% { -webkit-transform: rotate(0deg); -ms-transform: rotate(0deg); transform: rotate(0deg); } }
@keyframes tada { 0% { -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1); } 10%, 20% { -webkit-transform: scale(0.9) rotate(-3deg); -ms-transform: scale(0.9) rotate(-3deg); transform: scale(0.9) rotate(-3deg); } 30%, 50%, 70%, 90% { -webkit-transform: scale(1.1) rotate(3deg); -ms-transform: scale(1.1) rotate(3deg); transform: scale(1.1) rotate(3deg); } 40%, 60%, 80% { -webkit-transform: scale(1.1) rotate(-3deg); -ms-transform: scale(1.1) rotate(-3deg); transform: scale(1.1) rotate(-3deg); }
@keyframes bounceIn { 0% { opacity: 0; -webkit-transform: scale(.3); -ms-transform: scale(.3); transform: scale(.3); } 50% { opacity: 1; -webkit-transform: scale(1.05); -ms-transform: scale(1.05); transform: scale(1.05); } 70% { -webkit-transform: scale(.9); -ms-transform: scale(.9); transform: scale(.9); } 100% { -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1); } }
@keyframes bounceInDown { 0% { opacity: 0; -webkit-transform: translateY(-2000px); -ms-transform: translateY(-2000px); transform: translateY(-2000px); } 60% { opacity: 1; -webkit-transform: translateY(30px); -ms-transform: translateY(30px); transform: translateY(30px); } 80% { -webkit-transform: translateY(-10px); -ms-transform: translateY(-10px); transform: translateY(-10px); } 100% { -webkit-transform: translateY(0); -ms-transform: translateY(0); transform: translateY(0); } }
@keyframes bounceInLeft { 0% { opacity: 0; -webkit-transform: translateX(-2000px); -ms-transform: translateX(-2000px); transform: translateX(-2000px); } 60% { opacity: 1; -webkit-transform: translateX(30px); -ms-transform: translateX(30px); transform: translateX(30px); } 80% { -webkit-transform: translateX(-10px); -ms-transform: translateX(-10px); transform: translateX(-10px); } 100% { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); } }
@keyframes bounceInRight { 0% { opacity: 0; -webkit-transform: translateX(2000px); -ms-transform: translateX(2000px); transform: translateX(2000px); } 60% { opacity: 1; -webkit-transform: translateX(-30px); -ms-transform: translateX(-30px); transform: translateX(-30px); } 80% { -webkit-transform: translateX(10px); -ms-transform: translateX(10px); transform: translateX(10px); } 100% { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); } }
@keyframes bounceInUp { 0% { opacity: 0; -webkit-transform: translateY(2000px); -ms-transform: translateY(2000px); transform: translateY(2000px); } 60% { opacity: 1; -webkit-transform: translateY(-30px); -ms-transform: translateY(-30px); transform: translateY(-30px); } 80% { -webkit-transform: translateY(10px); -ms-transform: translateY(10px); transform: translateY(10px); } 100% { -webkit-transform: translateY(0); -ms-transform: translateY(0); transform: translateY(0); } }
@keyframes bounceOut { 0% { -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1); } 25% { -webkit-transform: scale(.95); -ms-transform: scale(.95); transform: scale(.95); } 50% { opacity: 1; -webkit-transform: scale(1.1); -ms-transform: scale(1.1); transform: scale(1.1); } 100% { opacity: 0; -webkit-transform: scale(.3); -ms-transform: scale(.3); transform: scale(.3); } }
CTA labels found on page
- Register
- VIEW MORE
- View Details
Source Design Tokens (CSS custom properties)
:root {
--wp--preset--aspect-ratio--square: 1;
--wp--preset--aspect-ratio--4-3: 4/3;
--wp--preset--aspect-ratio--3-4: 3/4;
--wp--preset--aspect-ratio--3-2: 3/2;
--wp--preset--aspect-ratio--2-3: 2/3;
--wp--preset--aspect-ratio--16-9: 16/9;
--wp--preset--aspect-ratio--9-16: 9/16;
--wp--preset--color--black: #000000;
--wp--preset--color--cyan-bluish-gray: #abb8c3;
--wp--preset--color--white: #ffffff;
--wp--preset--color--pale-pink: #f78da7;
--wp--preset--color--vivid-red: #cf2e2e;
--wp--preset--color--luminous-vivid-orange: #ff6900;
--wp--preset--color--luminous-vivid-amber: #fcb900;
--wp--preset--color--light-green-cyan: #7bdcb5;
--wp--preset--color--vivid-green-cyan: #00d084;
--wp--preset--color--pale-cyan-blue: #8ed1fc;
--wp--preset--color--vivid-cyan-blue: #0693e3;
--wp--preset--color--vivid-purple: #9b51e0;
--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);
--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);
--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,0) 0%,rgb(255,105,0) 100%);
--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);
--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);
--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);
--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);
--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);
--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);
--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);
--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);
--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);
--wp--preset--font-size--small: 13px;
--wp--preset--font-size--medium: 20px;
--wp--preset--font-size--large: 36px;
--wp--preset--font-size--x-large: 42px;
--wp--preset--spacing--20: 0.44rem;
--wp--preset--spacing--30: 0.67rem;
--wp--preset--spacing--40: 1rem;
--wp--preset--spacing--50: 1.5rem;
--wp--preset--spacing--60: 2.25rem;
--wp--preset--spacing--70: 3.38rem;
--wp--preset--spacing--80: 5.06rem;
--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);
--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);
--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);
--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);
--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);
--tg-theme-primary: #0072bb;
--unit-primary-color: #0072bb;
--tg-theme-secondary: #082A5E;
--unit-secondary-color: #082A5E;
--tg-common-color-yellow: #FAB123;
--tg-common-color-gray: #E7EFFC;
--bs-gutter-x: 1.5rem;
--bs-gutter-y: 0;
--bs-table-bg: transparent;
--bs-table-accent-bg: transparent;
--bs-table-striped-color: #212529;
--bs-table-striped-bg: rgba(0, 0, 0, 0.05);
--bs-table-active-color: #212529;
}
Do's and Don'ts
Do
- Do reserve the accent
#0D6EFD for interactive highlights and key moments — it is used sparingly on the source page.
- Do keep the canvas at
#FFFFFF; surfaces should stay within the detected neutral ramp.
- Do stick to the detected font weight(s): 400, 500, 600, 700, 800, 900.
Don't
- Don't introduce colors outside the detected palette — every hue above was found in the source.
Design Tokens (copy-paste)
:root {
--color-primary: #FF6900;
--color-accent: #0D6EFD;
--color-background: #FFFFFF;
--color-surface: #F6F8FC;
--color-text-primary: #000000;
--color-secondary: #000000;
--color-text-secondary: #ABB8C3;
--color-border: #A0AEC0;
--color-on-primary: #FFFFFF;
--color-on-secondary: #FFFFFF;
--color-on-accent: #FFFFFF;
--color-surface-container-lowest: #FFFFFF;
--color-surface-container-low: #FBFBFC;
--color-surface-container: #F3F3F3;
--color-surface-container-high: #F0F0F0;
--color-surface-container-highest: #E9ECEF;
--font-sans: 'Lexend Deca';
--font-size-headline-lg: 40px;
--font-size-headline-md: 28px;
--font-size-title-lg: 20px;
--font-size-body-lg: 18px;
--font-size-body-md: 16px;
--font-size-label-md: 14px;
--font-size-label-sm: 12px;
--radius-sm: 3.2px;
--radius-md: 8px;
--radius-pill: 100%;
--shadow-sm: none;
--shadow-md: 0 0 0 .25rem rgba(13,110,253,.25);
--shadow-lg: 0px 15px 15px rgb(33 114 251 / 24%);
--space-xs: 3.2px;
--space-sm: 8px;
--space-md: 16px;
--space-lg: 50px;
--container-max: 768px;
}