@keyframes blink{0%,100%{opacity:1}50%{opacity:0.15}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes slideUp{from{opacity:0;transform:translateY(36px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInLeft{from{opacity:0;transform:translateX(-24px)}to{opacity:1;transform:translateX(0)}}@keyframes pulseGlow{0%,100%{box-shadow:0 0 0 0 rgba(232,70,42,0.25)}50%{box-shadow:0 0 0 10px rgba(232,70,42,0)}}@keyframes countUp{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes glowPulse{0%,100%{opacity:0.7;transform:scale(1)}50%{opacity:1;transform:scale(1.08)}}@keyframes tronSweep{0%{top:-2px;opacity:0}5%{opacity:1}95%{opacity:0.3}100%{top:100%;opacity:0}}@keyframes loaderSlide{from{left:-100%}to{left:100%}}.marquee-section{overflow:hidden;padding:0.85rem 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.marquee-track{display:flex;width:max-content;will-change:transform;animation:marqueeRoll 35s linear infinite}.marquee-section:hover .marquee-track{animation-play-state:paused}@keyframes marqueeRoll{0%{transform:translateX(0)}100%{transform:translateX(-50%)}}.marquee-item{display:inline-flex;align-items:center;gap:1.5rem;padding:0 1.5rem;white-space:nowrap;flex-shrink:0;font-family:var(--font-mono);font-size:0.7rem;letter-spacing:0.14em;text-transform:uppercase;color:var(--text-dim);transition:color 0.3s}.marquee-item:hover{color:var(--text-muted)}.marquee-sep{color:var(--accent);font-size:0.55rem;flex-shrink:0}to{transform:translateX(-100%)}}#scroll-progress{position:fixed;top:0;left:0;height:2px;background:var(--accent);z-index:9999;width:0%;transition:width 0.08s linear;box-shadow:0 0 8px rgba(232,70,42,0.5)}#page-loader{position:fixed;inset:0;background:var(--bg);z-index:10000;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:1.5rem;transition:opacity 0.6s cubic-bezier(0.4,0,0.2,1),visibility 0.6s}#page-loader.hidden{opacity:0;visibility:hidden;pointer-events:none}.loader-logo{font-family:var(--font-display);font-size:2.8rem;font-weight:800;color:var(--white);letter-spacing:-0.04em}.loader-logo span{color:var(--accent)}.loader-line{width:140px;height:2px;background:var(--border);border-radius:2px;overflow:hidden;position:relative}.loader-line::after{content:'';position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,var(--accent),transparent);animation:loaderSlide 1s cubic-bezier(0.4,0,0.2,1) 0.2s forwards}#hero-canvas{position:absolute;inset:0;z-index:1;opacity:0.22;pointer-events:none}.hero-grid{position:absolute;inset:0;z-index:2;background-image:linear-gradient(rgba(232,70,42,0.03) 1px,transparent 1px),linear-gradient(90deg,rgba(232,70,42,0.03) 1px,transparent 1px);background-size:48px 48px;pointer-events:none}.hero-glow{position:absolute;width:600px;height:600px;background:radial-gradient(ellipse,rgba(232,70,42,0.1) 0%,transparent 68%);top:20%;right:0;border-radius:50%;filter:blur(50px);z-index:2;pointer-events:none;animation:glowPulse 6s ease-in-out infinite}.tron-line{position:absolute;left:0;width:100%;height:1px;background:linear-gradient(90deg,transparent 0%,rgba(232,70,42,0.5) 40%,rgba(232,70,42,0.85) 50%,rgba(232,70,42,0.5) 60%,transparent 100%);z-index:3;pointer-events:none;opacity:0;animation:tronSweep 10s ease-in-out infinite}.tron-line:nth-child(2){animation-delay:5s;animation-duration:12s}.hero-eyebrow{animation:slideInLeft 0.7s cubic-bezier(0.16,1,0.3,1) 0.1s both}.hero-title .char{display:inline-block;opacity:0;transform:translateY(56px) rotate(3deg);transition:opacity 0.5s cubic-bezier(0.16,1,0.3,1),transform 0.5s cubic-bezier(0.16,1,0.3,1)}.hero-title .char.space{width:0.28em}.hero-title .char.visible{opacity:1;transform:translateY(0) rotate(0deg)}.hero-title .line:nth-child(2) .char{color:var(--accent)}.hero-role-wrap{animation:fadeIn 0.6s ease 1.3s both}.hero-desc{opacity:0;transform:translateY(18px);transition:opacity 0.7s cubic-bezier(0.16,1,0.3,1),transform 0.7s cubic-bezier(0.16,1,0.3,1)}.hero-desc.visible{opacity:1;transform:translateY(0)}.hero-cta{opacity:0;transform:translateY(18px);transition:opacity 0.7s cubic-bezier(0.16,1,0.3,1),transform 0.7s cubic-bezier(0.16,1,0.3,1)}.hero-cta.visible{opacity:1;transform:translateY(0)}.hero-scroll{animation:fadeIn 1s ease 1.8s both}.reveal{opacity:0;transform:translateY(22px);transition:opacity 0.8s cubic-bezier(0.16,1,0.3,1),transform 0.8s cubic-bezier(0.16,1,0.3,1)}.reveal.visible{opacity:1;transform:translateY(0)}.reveal-delay-1{transition-delay:0.08s}.reveal-delay-2{transition-delay:0.16s}.reveal-delay-3{transition-delay:0.24s}.reveal-delay-4{transition-delay:0.32s}.stagger-parent .reveal:nth-child(1){transition-delay:0.04s}.stagger-parent .reveal:nth-child(2){transition-delay:0.10s}.stagger-parent .reveal:nth-child(3){transition-delay:0.17s}.stagger-parent .reveal:nth-child(4){transition-delay:0.24s}.stagger-parent .reveal:nth-child(5){transition-delay:0.31s}.stagger-parent .reveal:nth-child(6){transition-delay:0.38s}.stagger-parent .reveal:nth-child(7){transition-delay:0.45s}.stagger-parent .reveal:nth-child(8){transition-delay:0.52s}.stat-item{animation:countUp 0.7s cubic-bezier(0.16,1,0.3,1) both}.stat-item:nth-child(1){animation-delay:0.1s}.stat-item:nth-child(2){animation-delay:0.2s}.stat-item:nth-child(3){animation-delay:0.3s}.stat-item:nth-child(4){animation-delay:0.4s}.nav-badge{animation:pulseGlow 3.5s ease-in-out infinite}.badge-dot{width:6px;height:6px;background:var(--green);border-radius:50%;animation:blink 2.8s ease-in-out infinite}.stack-item:hover .stack-icon{animation:float 2.2s ease-in-out infinite}.stack-level-fill{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-warm));border-radius:1px;width:0%}.service-card{transition:background 0.4s cubic-bezier(0.16,1,0.3,1)}.service-card::before{transition:width 0.5s cubic-bezier(0.16,1,0.3,1)}.btn{transition:transform 0.25s cubic-bezier(0.16,1,0.3,1),box-shadow 0.25s cubic-bezier(0.16,1,0.3,1),background 0.2s,border-color 0.2s,color 0.2s}.project-card{transition:border-color 0.35s cubic-bezier(0.16,1,0.3,1),transform 0.35s cubic-bezier(0.16,1,0.3,1)}.project-card:hover{transform:translateY(-6px)}.project-thumb img{transition:transform 0.6s cubic-bezier(0.16,1,0.3,1)}.project-card:hover .project-thumb img{transform:scale(1.06)}.project-overlay{transition:opacity 0.35s cubic-bezier(0.16,1,0.3,1)}.form-input,.form-select,.form-textarea{transition:border-color 0.25s cubic-bezier(0.16,1,0.3,1),box-shadow 0.25s cubic-bezier(0.16,1,0.3,1)}.nav-link{transition:color 0.25s cubic-bezier(0.16,1,0.3,1)}.nav-link::after{transition:width 0.35s cubic-bezier(0.16,1,0.3,1)}.kente-bg{position:relative}.kente-bg::before{content:'';position:absolute;inset:0;background-image:repeating-linear-gradient(45deg,transparent,transparent 18px,rgba(0,135,81,0.018) 18px,rgba(0,135,81,0.018) 20px),repeating-linear-gradient(-45deg,transparent,transparent 18px,rgba(252,209,22,0.012) 18px,rgba(252,209,22,0.012) 20px);pointer-events:none;z-index:0}.kente-bg>*{position:relative;z-index:1}@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:0.01ms!important;animation-iteration-count:1!important;transition-duration:0.01ms!important}#hero-canvas,.tron-line{display:none}}