OPUS Innovative — Engenharia de Software & SAP
*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
:root {
–bg-primary: #06090f;
–bg-secondary: #0c1220;
–bg-card: #111a2e;
–bg-card-hover: #162038;
–accent: #00c8ff;
–accent-glow: rgba(0, 200, 255, 0.15);
–accent-secondary: #6d5aed;
–accent-tertiary: #00e89d;
–text-primary: #e8edf5;
–text-secondary: #8a95a9;
–text-muted: #4a5568;
–border: rgba(255, 255, 255, 0.06);
–border-accent: rgba(0, 200, 255, 0.2);
}
html { scroll-behavior: smooth; }
body {
font-family: ‘DM Sans’, sans-serif;
background: var(–bg-primary);
color: var(–text-primary);
line-height: 1.6;
overflow-x: hidden;
}
/* ─── UTILITY ─── */
.container { max-width: 1200px; margin: 0 auto; padding: 0 2rem; }
.section-label {
font-family: ‘Outfit’, sans-serif;
font-size: 0.75rem;
font-weight: 600;
letter-spacing: 0.2em;
text-transform: uppercase;
color: var(–accent);
display: flex;
align-items: center;
gap: 0.75rem;
margin-bottom: 1rem;
}
.section-label::before {
content: ”;
width: 24px;
height: 1px;
background: var(–accent);
}
.section-title {
font-family: ‘Outfit’, sans-serif;
font-size: clamp(2rem, 4vw, 3rem);
font-weight: 700;
line-height: 1.15;
margin-bottom: 1.25rem;
}
.section-subtitle {
font-size: 1.05rem;
color: var(–text-secondary);
max-width: 600px;
line-height: 1.7;
}
/* ─── ANIMATIONS ─── */
@keyframes fadeInUp {
from { opacity: 0; transform: translateY(40px); }
to { opacity: 1; transform: translateY(0); }
}
@keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
@keyframes slideRight {
from { transform: scaleX(0); }
to { transform: scaleX(1); }
}
@keyframes pulse-glow {
0%, 100% { opacity: 0.4; }
50% { opacity: 1; }
}
@keyframes float {
0%, 100% { transform: translateY(0px); }
50% { transform: translateY(-12px); }
}
@keyframes rotate-slow {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
.reveal {
opacity: 0;
transform: translateY(40px);
transition: all 0.8s cubic-bezier(0.16, 1, 0.3, 1);
}
.reveal.visible {
opacity: 1;
transform: translateY(0);
}
/* ─── NAVBAR ─── */
nav {
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 1000;
padding: 1.25rem 0;
transition: all 0.4s ease;
}
nav.scrolled {
background: rgba(6, 9, 15, 0.85);
backdrop-filter: blur(20px);
border-bottom: 1px solid var(–border);
padding: 0.8rem 0;
}
nav .container {
display: flex;
justify-content: space-between;
align-items: center;
}
.logo {
font-family: ‘Outfit’, sans-serif;
font-size: 1.5rem;
font-weight: 800;
text-decoration: none;
color: var(–text-primary);
letter-spacing: -0.02em;
}
.logo span {
color: var(–accent);
}
.nav-links {
display: flex;
list-style: none;
gap: 2.5rem;
align-items: center;
}
.nav-links a {
font-family: ‘Outfit’, sans-serif;
text-decoration: none;
color: var(–text-secondary);
font-size: 0.85rem;
font-weight: 500;
letter-spacing: 0.03em;
transition: color 0.3s;
position: relative;
}
.nav-links a::after {
content: ”;
position: absolute;
bottom: -4px;
left: 0;
width: 0;
height: 1.5px;
background: var(–accent);
transition: width 0.3s ease;
}
.nav-links a:hover { color: var(–text-primary); }
.nav-links a:hover::after { width: 100%; }
.nav-cta {
background: var(–accent) !important;
color: var(–bg-primary) !important;
padding: 0.6rem 1.5rem;
border-radius: 6px;
font-weight: 600 !important;
transition: all 0.3s ease !important;
}
.nav-cta:hover {
box-shadow: 0 0 25px rgba(0, 200, 255, 0.3);
transform: translateY(-1px);
}
.nav-cta::after { display: none !important; }
.mobile-toggle {
display: none;
flex-direction: column;
gap: 5px;
cursor: pointer;
z-index: 1001;
}
.mobile-toggle span {
width: 24px;
height: 2px;
background: var(–text-primary);
transition: all 0.3s;
}
/* ─── HERO ─── */
.hero {
min-height: 100vh;
display: flex;
align-items: center;
position: relative;
overflow: hidden;
}
.hero-bg {
position: absolute;
inset: 0;
z-index: 0;
}
.hero-bg::before {
content: ”;
position: absolute;
top: -30%;
right: -20%;
width: 800px;
height: 800px;
background: radial-gradient(circle, rgba(0, 200, 255, 0.06) 0%, transparent 70%);
animation: float 8s ease-in-out infinite;
}
.hero-bg::after {
content: ”;
position: absolute;
bottom: -20%;
left: -10%;
width: 600px;
height: 600px;
background: radial-gradient(circle, rgba(109, 90, 237, 0.05) 0%, transparent 70%);
animation: float 10s ease-in-out infinite reverse;
}
.hero-grid {
position: absolute;
inset: 0;
background-image:
linear-gradient(rgba(255,255,255,0.015) 1px, transparent 1px),
linear-gradient(90deg, rgba(255,255,255,0.015) 1px, transparent 1px);
background-size: 80px 80px;
mask-image: radial-gradient(ellipse 60% 60% at 50% 50%, black, transparent);
}
.hero-orb {
position: absolute;
width: 320px;
height: 320px;
right: 8%;
top: 50%;
transform: translateY(-50%);
z-index: 1;
}
.hero-orb-ring {
position: absolute;
inset: 0;
border: 1px solid var(–border-accent);
border-radius: 50%;
animation: rotate-slow 20s linear infinite;
}
.hero-orb-ring:nth-child(2) {
inset: 20px;
animation-duration: 15s;
animation-direction: reverse;
border-color: rgba(109, 90, 237, 0.15);
}
.hero-orb-ring:nth-child(3) {
inset: 50px;
animation-duration: 25s;
border-color: rgba(0, 232, 157, 0.1);
}
.hero-orb-core {
position: absolute;
inset: 80px;
border-radius: 50%;
background: radial-gradient(circle, rgba(0, 200, 255, 0.08), transparent);
display: flex;
align-items: center;
justify-content: center;
}
.hero-orb-dot {
position: absolute;
width: 6px;
height: 6px;
background: var(–accent);
border-radius: 50%;
box-shadow: 0 0 12px var(–accent);
animation: pulse-glow 3s ease-in-out infinite;
}
.hero-orb-dot:nth-child(1) { top: 0; left: 50%; }
.hero-orb-dot:nth-child(2) { top: 50%; right: 0; animation-delay: 1s; }
.hero-orb-dot:nth-child(3) { bottom: 0; left: 50%; animation-delay: 2s; }
.hero-orb-dot:nth-child(4) { top: 50%; left: 0; animation-delay: 0.5s; }
.hero .container {
position: relative;
z-index: 2;
}
.hero-content {
max-width: 680px;
}
.hero-badge {
display: inline-flex;
align-items: center;
gap: 0.5rem;
padding: 0.4rem 1rem;
border: 1px solid var(–border-accent);
border-radius: 100px;
font-family: ‘Outfit’, sans-serif;
font-size: 0.75rem;
font-weight: 500;
color: var(–accent);
margin-bottom: 2rem;
animation: fadeIn 1s ease;
}
.hero-badge-dot {
width: 6px;
height: 6px;
background: var(–accent);
border-radius: 50%;
animation: pulse-glow 2s infinite;
}
.hero h1 {
font-family: ‘Outfit’, sans-serif;
font-size: clamp(2.8rem, 6vw, 4.5rem);
font-weight: 800;
line-height: 1.05;
margin-bottom: 1.5rem;
letter-spacing: -0.03em;
animation: fadeInUp 1s ease;
}
.hero h1 .highlight {
background: linear-gradient(135deg, var(–accent), var(–accent-secondary));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.hero p {
font-size: 1.15rem;
color: var(–text-secondary);
max-width: 520px;
line-height: 1.8;
margin-bottom: 2.5rem;
animation: fadeInUp 1s ease 0.2s both;
}
.hero-actions {
display: flex;
gap: 1rem;
animation: fadeInUp 1s ease 0.4s both;
}
.btn-primary {
display: inline-flex;
align-items: center;
gap: 0.5rem;
padding: 0.9rem 2rem;
background: var(–accent);
color: var(–bg-primary);
font-family: ‘Outfit’, sans-serif;
font-weight: 600;
font-size: 0.9rem;
text-decoration: none;
border-radius: 8px;
transition: all 0.3s ease;
}
.btn-primary:hover {
box-shadow: 0 0 35px rgba(0, 200, 255, 0.3);
transform: translateY(-2px);
}
.btn-secondary {
display: inline-flex;
align-items: center;
gap: 0.5rem;
padding: 0.9rem 2rem;
background: transparent;
color: var(–text-primary);
font-family: ‘Outfit’, sans-serif;
font-weight: 500;
font-size: 0.9rem;
text-decoration: none;
border-radius: 8px;
border: 1px solid var(–border);
transition: all 0.3s ease;
}
.btn-secondary:hover {
border-color: var(–accent);
color: var(–accent);
}
.hero-metrics {
display: flex;
gap: 3rem;
margin-top: 4rem;
padding-top: 2.5rem;
border-top: 1px solid var(–border);
animation: fadeInUp 1s ease 0.6s both;
}
.metric-value {
font-family: ‘Outfit’, sans-serif;
font-size: 2rem;
font-weight: 700;
color: var(–text-primary);
}
.metric-value span { color: var(–accent); }
.metric-label {
font-size: 0.8rem;
color: var(–text-muted);
margin-top: 0.25rem;
}
/* ─── SERVICES ─── */
.services { padding: 8rem 0; }
.services-header { margin-bottom: 4rem; }
.services-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 1.5rem;
}
.service-card {
background: var(–bg-card);
border: 1px solid var(–border);
border-radius: 12px;
padding: 2.5rem 2rem;
transition: all 0.4s cubic-bezier(0.16, 1, 0.3, 1);
position: relative;
overflow: hidden;
}
.service-card::before {
content: ”;
position: absolute;
top: 0;
left: 0;
right: 0;
height: 2px;
background: linear-gradient(90deg, transparent, var(–accent), transparent);
opacity: 0;
transition: opacity 0.4s ease;
}
.service-card:hover {
background: var(–bg-card-hover);
border-color: var(–border-accent);
transform: translateY(-4px);
}
.service-card:hover::before { opacity: 1; }
.service-icon {
width: 48px;
height: 48px;
border-radius: 10px;
background: var(–accent-glow);
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 1.5rem;
font-size: 1.3rem;
}
.service-card:nth-child(2) .service-icon { background: rgba(109, 90, 237, 0.12); }
.service-card:nth-child(3) .service-icon { background: rgba(0, 232, 157, 0.1); }
.service-card:nth-child(4) .service-icon { background: rgba(255, 165, 0, 0.1); }
.service-card:nth-child(5) .service-icon { background: rgba(255, 75, 110, 0.1); }
.service-card:nth-child(6) .service-icon { background: rgba(0, 200, 255, 0.08); }
.service-card h3 {
font-family: ‘Outfit’, sans-serif;
font-size: 1.15rem;
font-weight: 600;
margin-bottom: 0.75rem;
}
.service-card p {
font-size: 0.9rem;
color: var(–text-secondary);
line-height: 1.7;
}
/* ─── TECHNOLOGIES ─── */
.technologies {
padding: 8rem 0;
background: var(–bg-secondary);
position: relative;
}
.technologies::before {
content: ”;
position: absolute;
top: 0;
left: 0;
right: 0;
height: 1px;
background: linear-gradient(90deg, transparent, var(–border-accent), transparent);
}
.tech-header { margin-bottom: 4rem; }
.tech-categories {
display: flex;
flex-direction: column;
gap: 3rem;
}
.tech-category h3 {
font-family: ‘Outfit’, sans-serif;
font-size: 0.8rem;
font-weight: 600;
letter-spacing: 0.15em;
text-transform: uppercase;
color: var(–accent);
margin-bottom: 1.25rem;
}
.tech-pills {
display: flex;
flex-wrap: wrap;
gap: 0.6rem;
}
.tech-pill {
display: inline-flex;
align-items: center;
gap: 0.4rem;
padding: 0.55rem 1.15rem;
background: var(–bg-card);
border: 1px solid var(–border);
border-radius: 8px;
font-family: ‘Outfit’, sans-serif;
font-size: 0.82rem;
font-weight: 500;
color: var(–text-primary);
transition: all 0.3s ease;
}
.tech-pill:hover {
border-color: var(–border-accent);
background: var(–bg-card-hover);
transform: translateY(-2px);
}
.tech-pill .dot {
width: 5px;
height: 5px;
border-radius: 50%;
background: var(–accent);
}
.tech-category:nth-child(2) .tech-pill .dot { background: var(–accent-secondary); }
.tech-category:nth-child(3) .tech-pill .dot { background: var(–accent-tertiary); }
.tech-category:nth-child(4) .tech-pill .dot { background: #ffa500; }
/* ─── ABOUT ─── */
.about { padding: 8rem 0; }
.about-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 5rem;
align-items: center;
}
.about-content .section-subtitle {
margin-bottom: 2rem;
}
.about-values {
display: flex;
flex-direction: column;
gap: 1.5rem;
}
.about-value {
display: flex;
gap: 1rem;
align-items: flex-start;
}
.about-value-marker {
width: 32px;
height: 32px;
border-radius: 6px;
background: var(–accent-glow);
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
margin-top: 2px;
font-size: 0.85rem;
}
.about-value h4 {
font-family: ‘Outfit’, sans-serif;
font-weight: 600;
font-size: 0.95rem;
margin-bottom: 0.3rem;
}
.about-value p {
font-size: 0.85rem;
color: var(–text-secondary);
line-height: 1.6;
}
.about-visual {
position: relative;
height: 420px;
}
.about-card-float {
position: absolute;
background: var(–bg-card);
border: 1px solid var(–border);
border-radius: 12px;
padding: 1.5rem;
}
.about-card-float:nth-child(1) {
top: 0;
left: 10%;
right: 5%;
animation: float 6s ease-in-out infinite;
}
.about-card-float:nth-child(2) {
top: 35%;
left: 0;
right: 15%;
animation: float 7s ease-in-out infinite 1s;
}
.about-card-float:nth-child(3) {
bottom: 0;
left: 15%;
right: 0;
animation: float 8s ease-in-out infinite 2s;
}
.about-card-float .acf-label {
font-family: ‘Outfit’, sans-serif;
font-size: 0.7rem;
text-transform: uppercase;
letter-spacing: 0.1em;
color: var(–text-muted);
margin-bottom: 0.5rem;
}
.about-card-float .acf-value {
font-family: ‘Outfit’, sans-serif;
font-size: 1.5rem;
font-weight: 700;
}
.about-card-float .acf-value span { color: var(–accent); }
.about-card-float .acf-bar {
height: 4px;
background: var(–bg-primary);
border-radius: 4px;
margin-top: 0.75rem;
overflow: hidden;
}
.about-card-float .acf-bar-fill {
height: 100%;
border-radius: 4px;
background: linear-gradient(90deg, var(–accent), var(–accent-secondary));
}
/* ─── BLOG ─── */
.blog {
padding: 8rem 0;
background: var(–bg-secondary);
position: relative;
}
.blog::before {
content: ”;
position: absolute;
top: 0;
left: 0;
right: 0;
height: 1px;
background: linear-gradient(90deg, transparent, var(–border-accent), transparent);
}
.blog-header {
display: flex;
justify-content: space-between;
align-items: flex-end;
margin-bottom: 3rem;
}
.blog-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 1.5rem;
}
.blog-card {
background: var(–bg-card);
border: 1px solid var(–border);
border-radius: 12px;
overflow: hidden;
transition: all 0.4s ease;
text-decoration: none;
color: inherit;
display: block;
}
.blog-card:hover {
border-color: var(–border-accent);
transform: translateY(-4px);
}
.blog-card-img {
height: 180px;
position: relative;
overflow: hidden;
}
.blog-card:nth-child(1) .blog-card-img {
background: linear-gradient(135deg, #0c1220 0%, rgba(0,200,255,0.15) 100%);
}
.blog-card:nth-child(2) .blog-card-img {
background: linear-gradient(135deg, #0c1220 0%, rgba(109,90,237,0.15) 100%);
}
.blog-card:nth-child(3) .blog-card-img {
background: linear-gradient(135deg, #0c1220 0%, rgba(0,232,157,0.15) 100%);
}
.blog-card-img-pattern {
position: absolute;
inset: 0;
background-image:
linear-gradient(rgba(255,255,255,0.03) 1px, transparent 1px),
linear-gradient(90deg, rgba(255,255,255,0.03) 1px, transparent 1px);
background-size: 30px 30px;
}
.blog-card-img-icon {
position: absolute;
bottom: 1rem;
right: 1rem;
font-size: 2.5rem;
opacity: 0.3;
}
.blog-card-body { padding: 1.5rem; }
.blog-card-tag {
font-family: ‘Outfit’, sans-serif;
font-size: 0.7rem;
font-weight: 600;
letter-spacing: 0.1em;
text-transform: uppercase;
color: var(–accent);
margin-bottom: 0.75rem;
}
.blog-card h3 {
font-family: ‘Outfit’, sans-serif;
font-size: 1.05rem;
font-weight: 600;
margin-bottom: 0.5rem;
line-height: 1.4;
}
.blog-card p {
font-size: 0.85rem;
color: var(–text-secondary);
line-height: 1.6;
}
.blog-card-meta {
display: flex;
justify-content: space-between;
padding: 1rem 1.5rem;
border-top: 1px solid var(–border);
font-size: 0.75rem;
color: var(–text-muted);
}
/* ─── CONTACT / CTA ─── */
.contact {
padding: 8rem 0;
position: relative;
}
.contact-wrapper {
background: var(–bg-card);
border: 1px solid var(–border);
border-radius: 16px;
padding: 4rem;
position: relative;
overflow: hidden;
}
.contact-wrapper::before {
content: ”;
position: absolute;
top: -80%;
right: -20%;
width: 500px;
height: 500px;
background: radial-gradient(circle, rgba(0, 200, 255, 0.04), transparent 70%);
}
.contact-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 4rem;
position: relative;
z-index: 1;
}
.contact-info h2 {
font-family: ‘Outfit’, sans-serif;
font-size: clamp(1.8rem, 3vw, 2.5rem);
font-weight: 700;
margin-bottom: 1rem;
line-height: 1.15;
}
.contact-info p {
color: var(–text-secondary);
margin-bottom: 2rem;
line-height: 1.7;
}
.contact-channels {
display: flex;
flex-direction: column;
gap: 1rem;
}
.contact-channel {
display: flex;
align-items: center;
gap: 1rem;
padding: 1rem;
background: rgba(255,255,255,0.02);
border: 1px solid var(–border);
border-radius: 10px;
transition: all 0.3s;
}
.contact-channel:hover {
border-color: var(–border-accent);
background: rgba(0, 200, 255, 0.03);
}
.contact-channel-icon {
width: 40px;
height: 40px;
border-radius: 8px;
background: var(–accent-glow);
display: flex;
align-items: center;
justify-content: center;
font-size: 1rem;
flex-shrink: 0;
}
.contact-channel-text .cct-label {
font-size: 0.72rem;
text-transform: uppercase;
letter-spacing: 0.1em;
color: var(–text-muted);
font-family: ‘Outfit’, sans-serif;
}
.contact-channel-text .cct-value {
font-family: ‘Outfit’, sans-serif;
font-weight: 500;
font-size: 0.9rem;
color: var(–text-primary);
}
.contact-form {
display: flex;
flex-direction: column;
gap: 1.25rem;
}
.form-group label {
display: block;
font-family: ‘Outfit’, sans-serif;
font-size: 0.8rem;
font-weight: 500;
color: var(–text-secondary);
margin-bottom: 0.4rem;
}
.form-group input,
.form-group textarea {
width: 100%;
padding: 0.8rem 1rem;
background: var(–bg-primary);
border: 1px solid var(–border);
border-radius: 8px;
color: var(–text-primary);
font-family: ‘DM Sans’, sans-serif;
font-size: 0.9rem;
transition: border-color 0.3s;
outline: none;
}
.form-group input:focus,
.form-group textarea:focus {
border-color: var(–accent);
}
.form-group textarea { min-height: 110px; resize: vertical; }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.btn-submit {
padding: 0.9rem 2rem;
background: var(–accent);
color: var(–bg-primary);
font-family: ‘Outfit’, sans-serif;
font-weight: 600;
font-size: 0.9rem;
border: none;
border-radius: 8px;
cursor: pointer;
transition: all 0.3s ease;
width: 100%;
}
.btn-submit:hover {
box-shadow: 0 0 30px rgba(0, 200, 255, 0.3);
transform: translateY(-2px);
}
/* ─── FOOTER ─── */
footer {
padding: 3rem 0;
border-top: 1px solid var(–border);
}
.footer-content {
display: flex;
justify-content: space-between;
align-items: center;
}
.footer-copy {
font-size: 0.8rem;
color: var(–text-muted);
}
.footer-links {
display: flex;
gap: 2rem;
}
.footer-links a {
font-size: 0.8rem;
color: var(–text-muted);
text-decoration: none;
transition: color 0.3s;
}
.footer-links a:hover { color: var(–accent); }
/* ─── RESPONSIVE ─── */
@media (max-width: 968px) {
.services-grid { grid-template-columns: repeat(2, 1fr); }
.blog-grid { grid-template-columns: repeat(2, 1fr); }
.blog-grid .blog-card:nth-child(3) { display: none; }
.about-grid { grid-template-columns: 1fr; gap: 3rem; }
.about-visual { display: none; }
.contact-grid { grid-template-columns: 1fr; gap: 3rem; }
.hero-orb { display: none; }
.hero-metrics { gap: 2rem; }
}
@media (max-width: 768px) {
.nav-links {
display: none;
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(6, 9, 15, 0.97);
backdrop-filter: blur(20px);
flex-direction: column;
align-items: center;
justify-content: center;
gap: 2rem;
z-index: 999;
}
.nav-links.show { display: flex; }
.nav-links a { font-size: 1.2rem; }
.mobile-toggle { display: flex; }
.services-grid { grid-template-columns: 1fr; }
.blog-grid { grid-template-columns: 1fr; }
.blog-grid .blog-card:nth-child(3) { display: block; }
.hero-metrics { flex-direction: column; gap: 1.5rem; }
.hero h1 { font-size: 2.4rem; }
.contact-wrapper { padding: 2rem; }
.form-row { grid-template-columns: 1fr; }
.blog-header { flex-direction: column; align-items: flex-start; gap: 1rem; }
.footer-content { flex-direction: column; gap: 1rem; text-align: center; }
}
Engenharia de Software & SAP
Transformamos complexidade em soluções inteligentes
A OPUS Innovative é especialista em desenvolvimento de software, integração de sistemas e consultoria SAP. Levamos sua operação ao próximo nível com tecnologia de ponta e entregas de alto impacto.
⚡
Desenvolvimento de Software
Criação de sistemas sob medida — aplicações web, mobile e APIs robustas — com arquitetura escalável e foco na experiência do usuário.
🔗
Integração de Sistemas
Conectamos seus sistemas com fluxos inteligentes usando SAP CPI, PI/PO, APIs REST/SOAP e middleware, eliminando silos de dados.
🏗️
Consultoria SAP
Consultoria especializada em SAP S/4HANA, EWM, GRC, Solution Manager e Cloud ALM. Da implementação à otimização contínua.
☁️
SAP BTP & Cloud
Extensões e aplicações na SAP Business Technology Platform com CAP, RAP, ABAP Cloud e integrações nativas ao ecossistema SAP.
SAP Fiori & UI5
Desenvolvimento de aplicações Fiori personalizadas e Fiori Elements para transformar a experiência do usuário no ambiente SAP.
Automação & DevOps
Automação de processos, CI/CD, monitoramento com Cloud ALM e pipelines integrados para entregas contínuas com qualidade.
SAP Core
SAP S/4HANA
SAP EWM
SAP GRC
ABAP
ABAP RAP
CDS Views
BADI / BRF+
Adobe Forms
Smart Forms
SAP Cloud & BTP
SAP BTP
SAP CAP
SAP CPI / Integration Suite
SAP Cloud ALM
SAP Datasphere
SAP Analytics Cloud
SAP Build
HANA Cloud
Frontend & UX
SAP Fiori
SAPUI5
Fiori Elements
Fiori Launchpad
HTML5 / CSS3
JavaScript / TypeScript
React
Integração & Middleware
SAP PI/PO
SAP CPI
Groovy Script
REST / OData
SOAP / XML
SFTP / AS2
Apache Camel
Apache NiFi
Quem somos
Engenharia de software com DNA de resultado
A OPUS Innovative nasceu para resolver problemas complexos com tecnologia. Somos uma empresa brasileira especializada em soluções SAP e desenvolvimento de software corporativo, com entrega direta, sem burocracia e com profundidade técnica real.
◆
Entrega orientada a resultado
Não vendemos horas — entregamos soluções. Cada projeto é tratado como um compromisso com o impacto no negócio do cliente.
◆
Profundidade técnica
Nosso time domina de ponta a ponta: do ABAP clássico ao RAP, do PI/PO ao CPI, do Fiori ao BTP. Sem superficialidade.
◆
Parceria de longo prazo
Construímos relações duradouras com nossos clientes, evoluindo junto com suas operações e desafios tecnológicos.
Satisfação dos clientes
98%
Projetos entregues no prazo
95%
// Navbar scroll effect
const nav = document.querySelector(‘nav’);
window.addEventListener(‘scroll’, () => {
nav.classList.toggle(‘scrolled’, window.scrollY > 60);
});
// Scroll reveal animation
const revealElements = document.querySelectorAll(‘.reveal’);
const revealObserver = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add(‘visible’);
revealObserver.unobserve(entry.target);
}
});
}, { threshold: 0.15 });
revealElements.forEach(el => revealObserver.observe(el));
// Mobile menu toggle
const mobileToggle = document.querySelector(‘.mobile-toggle’);
const navLinks = document.querySelector(‘.nav-links’);
if (mobileToggle) {
mobileToggle.addEventListener(‘click’, () => {
navLinks.classList.toggle(‘show’);
});
}
// Smooth scroll for anchor links
document.querySelectorAll(‘a[href^=”#”]’).forEach(anchor => {
anchor.addEventListener(‘click’, function(e) {
const target = document.querySelector(this.getAttribute(‘href’));
if (target) {
e.preventDefault();
target.scrollIntoView({ behavior: ‘smooth’, block: ‘start’ });
navLinks.classList.remove(‘show’);
}
});
});
Política de Privacidade
// ─── Navbar scroll effect
const nav = document.querySelector(‘nav’);
window.addEventListener(‘scroll’, () => {
nav.classList.toggle(‘scrolled’, window.scrollY > 50);
});
// ─── Reveal on scroll
const revealElements = document.querySelectorAll(‘.reveal’);
const revealObserver = new IntersectionObserver((entries) => {
entries.forEach((entry, i) => {
if (entry.isIntersecting) {
setTimeout(() => {
entry.target.classList.add(‘visible’);
}, i * 80);
revealObserver.unobserve(entry.target);
}
});
}, { threshold: 0.1, rootMargin: ‘0px 0px -50px 0px’ });
revealElements.forEach(el => revealObserver.observe(el));
// ─── Smooth scroll for anchor links
document.querySelectorAll(‘a[href^=”#”]’).forEach(anchor => {
anchor.addEventListener(‘click’, function (e) {
e.preventDefault();
const target = document.querySelector(this.getAttribute(‘href’));
if (target) {
target.scrollIntoView({ behavior: ‘smooth’, block: ‘start’ });
// Close mobile menu if open
document.querySelector(‘.nav-links’).classList.remove(‘show’);
}
});
});