diff --git a/landing/assets/images/footer/robot-lead-lounge-v1.webp b/landing/assets/images/footer/robot-lead-lounge-v1.webp new file mode 100644 index 00000000..67876934 Binary files /dev/null and b/landing/assets/images/footer/robot-lead-lounge-v1.webp differ diff --git a/landing/assets/images/hero/robots/robot-avatar-cyan-cat-v1.webp b/landing/assets/images/hero/robots/robot-avatar-cyan-cat-v1.webp new file mode 100644 index 00000000..27b392ae Binary files /dev/null and b/landing/assets/images/hero/robots/robot-avatar-cyan-cat-v1.webp differ diff --git a/landing/assets/images/hero/robots/robot-avatar-red-flame-v1.webp b/landing/assets/images/hero/robots/robot-avatar-red-flame-v1.webp new file mode 100644 index 00000000..a32935a7 Binary files /dev/null and b/landing/assets/images/hero/robots/robot-avatar-red-flame-v1.webp differ diff --git a/landing/assets/images/hero/robots/robot-avatar-reviewer-teal-v1.webp b/landing/assets/images/hero/robots/robot-avatar-reviewer-teal-v1.webp new file mode 100644 index 00000000..d081566c Binary files /dev/null and b/landing/assets/images/hero/robots/robot-avatar-reviewer-teal-v1.webp differ diff --git a/landing/assets/images/hero/robots/robot-avatar-yellow-star-v1.webp b/landing/assets/images/hero/robots/robot-avatar-yellow-star-v1.webp new file mode 100644 index 00000000..f49a5450 Binary files /dev/null and b/landing/assets/images/hero/robots/robot-avatar-yellow-star-v1.webp differ diff --git a/landing/assets/images/hero/robots/robot-red-purple-handshake-v1.webp b/landing/assets/images/hero/robots/robot-red-purple-handshake-v1.webp new file mode 100644 index 00000000..98a0c794 Binary files /dev/null and b/landing/assets/images/hero/robots/robot-red-purple-handshake-v1.webp differ diff --git a/landing/assets/styles/cyberpunk-hero.scss b/landing/assets/styles/cyberpunk-hero.scss index 299b9c76..41b6bdf0 100644 --- a/landing/assets/styles/cyberpunk-hero.scss +++ b/landing/assets/styles/cyberpunk-hero.scss @@ -14,17 +14,218 @@ --cyber-muted: #9ba8c7; --cyber-border-cyan: rgba(0, 234, 255, 0.42); --cyber-border-magenta: rgba(255, 43, 255, 0.42); + --cyber-panel-bg: + linear-gradient(135deg, rgba(5, 14, 31, 0.9), rgba(3, 10, 22, 0.64)); + --cyber-panel-shadow: + 0 0 0 1px rgba(47, 125, 255, 0.12) inset, + 0 0 24px rgba(0, 234, 255, 0.12); + --cyber-hero-bg: + radial-gradient(circle at 76% 30%, rgba(0, 234, 255, 0.14), transparent 30%), + radial-gradient(circle at 86% 70%, rgba(255, 43, 255, 0.14), transparent 34%), + linear-gradient(180deg, var(--cyber-bg-0), var(--cyber-bg-1) 58%, var(--cyber-bg-0)); + --cyber-monterey-bg: + radial-gradient(circle at 76% 22%, rgba(138, 47, 255, 0.76), transparent 30%), + radial-gradient(circle at 18% 76%, rgba(37, 8, 128, 0.72), transparent 36%), + linear-gradient(180deg, #180061 0%, #3200a2 46%, #130042 100%); + --cyber-monterey-before-bg: + radial-gradient(circle at 18% 34%, rgba(2, 5, 13, 0.62), rgba(2, 5, 13, 0.14) 34%, transparent 62%), + linear-gradient(90deg, rgba(2, 5, 13, 0.48) 0%, rgba(2, 5, 13, 0.17) 42%, rgba(2, 5, 13, 0.04) 64%, rgba(2, 5, 13, 0.3) 100%); + --cyber-monterey-after-bg: + linear-gradient(180deg, rgba(2, 5, 13, 0.92) 0%, rgba(2, 5, 13, 0.62) 15%, rgba(2, 5, 13, 0.08) 44%, rgba(2, 5, 13, 0.68) 100%), + radial-gradient(circle at 64% 42%, transparent 0 26%, rgba(2, 5, 13, 0.24) 70%, rgba(2, 5, 13, 0.54) 100%); + --cyber-monterey-canvas-opacity: 1; + --cyber-monterey-canvas-filter: blur(4px) saturate(1.22) brightness(1.08) contrast(1.08); + --cyber-monterey-canvas-blend: normal; + --cyber-background-bg: + radial-gradient(circle at 72% 28%, rgba(0, 234, 255, 0.1), transparent 30%), + radial-gradient(circle at 88% 62%, rgba(255, 43, 255, 0.1), transparent 32%), + linear-gradient(90deg, transparent 0 64px, rgba(0, 234, 255, 0.045) 65px 66px, transparent 67px 160px), + linear-gradient(180deg, rgba(2, 5, 13, 0.66) 0%, rgba(2, 5, 13, 0.2) 38%, rgba(2, 5, 13, 0.78) 100%); + --cyber-background-opacity: 0.58; + --cyber-background-before-bg: + linear-gradient(90deg, transparent 0 8%, rgba(0, 234, 255, 0.14) 8.1% 8.22%, transparent 8.34% 18%, rgba(255, 43, 255, 0.12) 18.1% 18.22%, transparent 18.34% 31%, rgba(0, 234, 255, 0.11) 31.1% 31.24%, transparent 31.36% 44%, rgba(47, 125, 255, 0.12) 44.1% 44.2%, transparent 44.34% 62%, rgba(255, 43, 255, 0.1) 62.1% 62.22%, transparent 62.34% 78%, rgba(0, 234, 255, 0.12) 78.1% 78.22%, transparent 78.34%), + repeating-linear-gradient(90deg, transparent 0 78px, rgba(0, 234, 255, 0.05) 80px 82px, transparent 84px 116px), + linear-gradient(to top, rgba(3, 12, 27, 0.66) 0%, rgba(3, 12, 27, 0.42) 8%, rgba(3, 12, 27, 0.16) 17%, transparent 28%), + linear-gradient(to top, rgba(5, 20, 44, 0.5) 0%, rgba(5, 20, 44, 0.28) 12%, rgba(5, 20, 44, 0.12) 24%, transparent 36%), + linear-gradient(to top, rgba(4, 17, 38, 0.38) 0%, rgba(4, 17, 38, 0.22) 18%, rgba(4, 17, 38, 0.08) 34%, transparent 48%); + --cyber-background-before-opacity: 0.62; + --cyber-background-before-blend: screen; + --cyber-background-after-bg: + repeating-linear-gradient(90deg, transparent 0 34px, rgba(0, 234, 255, 0.12) 35px 36px, transparent 37px 110px), + repeating-linear-gradient(180deg, transparent 0 28px, rgba(255, 43, 255, 0.1) 29px 30px, transparent 31px 78px), + linear-gradient(90deg, transparent, rgba(0, 234, 255, 0.08), transparent); + --cyber-background-after-opacity: 0.26; + --cyber-background-after-blend: screen; + --cyber-wash-bg: + radial-gradient(circle at 18% 44%, rgba(2, 5, 13, 0.48), rgba(2, 5, 13, 0.22) 34%, transparent 58%), + linear-gradient(90deg, rgba(2, 5, 13, 0.42) 0%, rgba(2, 5, 13, 0.28) 34%, rgba(2, 5, 13, 0.08) 66%, rgba(2, 5, 13, 0.3) 100%), + linear-gradient(180deg, rgba(2, 5, 13, 0.18), rgba(2, 5, 13, 0.08) 58%, rgba(2, 5, 13, 0.92)); + --cyber-gridlines-bg: + linear-gradient(rgba(0, 234, 255, 0.055) 1px, transparent 1px), + linear-gradient(90deg, rgba(0, 234, 255, 0.045) 1px, transparent 1px); + --cyber-gridlines-opacity: 0.16; + --cyber-scanlines-bg: repeating-linear-gradient( + to bottom, + rgba(255, 255, 255, 0.08) 0, + rgba(255, 255, 255, 0.08) 1px, + transparent 1px, + transparent 4px + ); + --cyber-scanlines-opacity: 0.11; + --cyber-copy-aura: radial-gradient(circle at 28% 38%, rgba(2, 5, 13, 0.82), rgba(2, 5, 13, 0.36) 62%, transparent 78%); + --cyber-title-color: rgba(244, 247, 255, 0.96); + --cyber-description-color: rgba(222, 229, 255, 0.84); + --cyber-action-primary-color: var(--cyber-bg-0); + --cyber-action-secondary-bg: rgba(3, 10, 22, 0.56); + --cyber-action-secondary-hover-bg: rgba(0, 234, 255, 0.08); + --cyber-release-color: rgba(244, 247, 255, 0.62); + --cyber-scene-floor-bg: + radial-gradient(ellipse at 58% 84%, rgba(255, 43, 255, 0.24), transparent 18%), + radial-gradient(ellipse at 56% 84%, rgba(0, 234, 255, 0.18), transparent 32%), + repeating-radial-gradient(ellipse at 58% 84%, rgba(0, 234, 255, 0.1) 0 1px, transparent 1px 20px); + --cyber-scene-floor-opacity: 0.48; + --cyber-scene-foreground-bg: + linear-gradient(90deg, transparent 0 4%, rgba(0, 234, 255, 0.08) 4.1%, transparent 4.4%), + linear-gradient(180deg, transparent 0 88%, rgba(255, 43, 255, 0.08)); + --cyber-scene-foreground-opacity: 0.72; + --cyber-video-frame-bg: rgba(2, 6, 16, 0.82); + --cyber-video-content-bg: rgba(2, 6, 16, 0.94); + --cyber-card-text: rgba(244, 247, 255, 0.84); + --cyber-card-muted: rgba(222, 229, 255, 0.72); + --cyber-card-subtle: rgba(222, 229, 255, 0.62); + --cyber-card-inset: rgba(255, 255, 255, 0.06); + --cyber-feature-shell-bg: + radial-gradient(ellipse at 50% 62%, rgba(0, 234, 255, 0.08), transparent 56%), + radial-gradient(ellipse at 78% 52%, rgba(255, 43, 255, 0.08), transparent 48%), + linear-gradient(180deg, transparent 0%, rgba(5, 17, 40, 0.08) 30%, rgba(5, 14, 31, 0.18) 52%, rgba(5, 17, 40, 0.08) 72%, transparent 100%); + --cyber-feature-rail-bg: + linear-gradient(180deg, rgba(3, 10, 22, 0.34) 0%, rgba(5, 14, 31, 0.74) 30%, rgba(5, 14, 31, 0.72) 70%, rgba(3, 10, 22, 0.34) 100%), + linear-gradient(135deg, rgba(5, 14, 31, 0.58), rgba(3, 10, 22, 0.42)); + --cyber-feature-rail-shadow: + 0 0 0 1px rgba(47, 125, 255, 0.1) inset, + 0 -28px 46px rgba(2, 5, 13, 0.14), + 0 30px 58px rgba(2, 5, 13, 0.18), + 0 0 24px rgba(0, 234, 255, 0.1); + --cyber-feature-divider: rgba(0, 234, 255, 0.16); + --cyber-feature-title: rgba(244, 247, 255, 0.94); + --cyber-feature-text: rgba(222, 229, 255, 0.62); --cyber-radius-xs: 4px; --cyber-radius-sm: 6px; --cyber-radius-md: 8px; --cyber-frame-cut: 18px; } +.v-theme--light .cyber-hero { + --cyber-bg-0: #f8fcff; + --cyber-bg-1: #eaf7fb; + --cyber-panel-weak: rgba(255, 255, 255, 0.68); + --cyber-panel: rgba(255, 255, 255, 0.78); + --cyber-panel-strong: rgba(255, 255, 255, 0.92); + --cyber-cyan: #008fb3; + --cyber-blue: #2563eb; + --cyber-magenta: #b832d8; + --cyber-violet: #7c3aed; + --cyber-text: #132238; + --cyber-muted: #596b83; + --cyber-border-cyan: rgba(8, 145, 178, 0.34); + --cyber-border-magenta: rgba(184, 50, 216, 0.28); + --cyber-panel-bg: + linear-gradient(135deg, rgba(255, 255, 255, 0.9), rgba(237, 249, 252, 0.68)); + --cyber-panel-shadow: + 0 0 0 1px rgba(8, 145, 178, 0.1) inset, + 0 18px 48px rgba(8, 145, 178, 0.12), + 0 0 22px rgba(184, 50, 216, 0.07); + --cyber-hero-bg: + radial-gradient(circle at 76% 30%, rgba(0, 178, 214, 0.14), transparent 32%), + radial-gradient(circle at 86% 70%, rgba(184, 50, 216, 0.13), transparent 36%), + linear-gradient(180deg, #fbfdff 0%, #edf8fb 56%, #f8fcff 100%); + --cyber-monterey-bg: + radial-gradient(circle at 78% 24%, rgba(113, 185, 255, 0.28), transparent 31%), + radial-gradient(circle at 22% 72%, rgba(221, 170, 255, 0.24), transparent 38%), + radial-gradient(circle at 8% 32%, rgba(101, 218, 255, 0.18), transparent 34%), + linear-gradient(180deg, #f8fcff 0%, #eaf7fb 48%, #fbf7ff 100%); + --cyber-monterey-before-bg: + radial-gradient(circle at 18% 34%, rgba(255, 255, 255, 0.46), rgba(255, 255, 255, 0.14) 34%, transparent 62%), + linear-gradient(90deg, rgba(255, 255, 255, 0.22) 0%, rgba(255, 255, 255, 0.08) 42%, rgba(255, 255, 255, 0.03) 64%, rgba(237, 247, 252, 0.2) 100%); + --cyber-monterey-after-bg: + linear-gradient(180deg, rgba(248, 252, 255, 0.52) 0%, rgba(248, 252, 255, 0.22) 18%, rgba(248, 252, 255, 0.04) 48%, rgba(248, 252, 255, 0.58) 100%), + radial-gradient(circle at 64% 42%, transparent 0 26%, rgba(255, 255, 255, 0.16) 70%, rgba(235, 247, 252, 0.42) 100%); + --cyber-monterey-canvas-opacity: 1; + --cyber-monterey-canvas-filter: blur(1px) saturate(1.34) brightness(1.12) contrast(1.16); + --cyber-monterey-canvas-blend: multiply; + --cyber-background-bg: + radial-gradient(circle at 72% 28%, rgba(0, 178, 214, 0.12), transparent 31%), + radial-gradient(circle at 88% 62%, rgba(184, 50, 216, 0.1), transparent 33%), + linear-gradient(90deg, transparent 0 64px, rgba(8, 145, 178, 0.06) 65px 66px, transparent 67px 160px), + linear-gradient(180deg, rgba(255, 255, 255, 0.5) 0%, rgba(255, 255, 255, 0.08) 38%, rgba(237, 247, 252, 0.64) 100%); + --cyber-background-opacity: 0.5; + --cyber-background-before-bg: + linear-gradient(90deg, transparent 0 8%, rgba(8, 145, 178, 0.16) 8.1% 8.22%, transparent 8.34% 18%, rgba(184, 50, 216, 0.12) 18.1% 18.22%, transparent 18.34% 31%, rgba(8, 145, 178, 0.13) 31.1% 31.24%, transparent 31.36% 44%, rgba(37, 99, 235, 0.12) 44.1% 44.2%, transparent 44.34% 62%, rgba(184, 50, 216, 0.1) 62.1% 62.22%, transparent 62.34% 78%, rgba(8, 145, 178, 0.12) 78.1% 78.22%, transparent 78.34%), + repeating-linear-gradient(90deg, transparent 0 78px, rgba(8, 145, 178, 0.06) 80px 82px, transparent 84px 116px), + linear-gradient(to top, rgba(8, 145, 178, 0.12) 0%, rgba(8, 145, 178, 0.07) 13%, transparent 31%), + linear-gradient(to top, rgba(184, 50, 216, 0.1) 0%, rgba(184, 50, 216, 0.05) 16%, transparent 38%), + linear-gradient(to top, rgba(37, 99, 235, 0.09) 0%, rgba(37, 99, 235, 0.04) 20%, transparent 48%); + --cyber-background-before-opacity: 0.58; + --cyber-background-before-blend: multiply; + --cyber-background-after-bg: + repeating-linear-gradient(90deg, transparent 0 34px, rgba(8, 145, 178, 0.1) 35px 36px, transparent 37px 110px), + repeating-linear-gradient(180deg, transparent 0 28px, rgba(184, 50, 216, 0.08) 29px 30px, transparent 31px 78px), + linear-gradient(90deg, transparent, rgba(8, 145, 178, 0.07), transparent); + --cyber-background-after-opacity: 0.18; + --cyber-background-after-blend: multiply; + --cyber-wash-bg: + radial-gradient(circle at 18% 44%, rgba(255, 255, 255, 0.28), rgba(255, 255, 255, 0.12) 36%, transparent 60%), + linear-gradient(90deg, rgba(255, 255, 255, 0.18) 0%, rgba(237, 248, 252, 0.1) 36%, rgba(255, 255, 255, 0.03) 68%, rgba(251, 247, 255, 0.16) 100%), + linear-gradient(180deg, rgba(255, 255, 255, 0.08), rgba(248, 252, 255, 0.04) 58%, rgba(248, 252, 255, 0.72)); + --cyber-gridlines-bg: + linear-gradient(rgba(8, 145, 178, 0.055) 1px, transparent 1px), + linear-gradient(90deg, rgba(8, 145, 178, 0.045) 1px, transparent 1px); + --cyber-gridlines-opacity: 0.2; + --cyber-scanlines-bg: repeating-linear-gradient( + to bottom, + rgba(8, 35, 50, 0.035) 0, + rgba(8, 35, 50, 0.035) 1px, + transparent 1px, + transparent 4px + ); + --cyber-scanlines-opacity: 0.08; + --cyber-copy-aura: radial-gradient(circle at 28% 38%, rgba(255, 255, 255, 0.92), rgba(255, 255, 255, 0.38) 58%, transparent 78%); + --cyber-title-color: rgba(19, 34, 56, 0.98); + --cyber-description-color: rgba(50, 65, 88, 0.82); + --cyber-action-primary-color: #061722; + --cyber-action-secondary-bg: rgba(255, 255, 255, 0.62); + --cyber-action-secondary-hover-bg: rgba(8, 145, 178, 0.08); + --cyber-release-color: rgba(50, 65, 88, 0.68); + --cyber-scene-floor-bg: + radial-gradient(ellipse at 58% 84%, rgba(184, 50, 216, 0.16), transparent 18%), + radial-gradient(ellipse at 56% 84%, rgba(8, 145, 178, 0.14), transparent 32%), + repeating-radial-gradient(ellipse at 58% 84%, rgba(8, 145, 178, 0.08) 0 1px, transparent 1px 20px); + --cyber-scene-floor-opacity: 0.38; + --cyber-scene-foreground-bg: + linear-gradient(90deg, transparent 0 4%, rgba(8, 145, 178, 0.07) 4.1%, transparent 4.4%), + linear-gradient(180deg, transparent 0 88%, rgba(184, 50, 216, 0.06)); + --cyber-scene-foreground-opacity: 0.48; + --cyber-video-frame-bg: rgba(255, 255, 255, 0.7); + --cyber-video-content-bg: rgba(8, 20, 34, 0.9); + --cyber-card-text: rgba(19, 34, 56, 0.88); + --cyber-card-muted: rgba(67, 82, 105, 0.76); + --cyber-card-subtle: rgba(67, 82, 105, 0.64); + --cyber-card-inset: rgba(255, 255, 255, 0.62); + --cyber-feature-shell-bg: transparent; + --cyber-feature-rail-bg: transparent; + --cyber-feature-rail-shadow: + 0 0 0 1px rgba(8, 145, 178, 0.12) inset, + 0 -1px 0 rgba(8, 145, 178, 0.18), + 0 1px 0 rgba(8, 145, 178, 0.16); + --cyber-feature-divider: rgba(8, 145, 178, 0.18); + --cyber-feature-title: rgba(19, 34, 56, 0.94); + --cyber-feature-text: rgba(67, 82, 105, 0.72); +} + .cyber-panel { position: relative; border: 1px solid var(--cyber-border-cyan); - background: - linear-gradient(135deg, rgba(5, 14, 31, 0.9), rgba(3, 10, 22, 0.64)); + background: var(--cyber-panel-bg); clip-path: polygon( var(--cyber-frame-cut) 0, 100% 0, @@ -33,9 +234,7 @@ 0 100%, 0 var(--cyber-frame-cut) ); - box-shadow: - 0 0 0 1px rgba(47, 125, 255, 0.12) inset, - 0 0 24px rgba(0, 234, 255, 0.12); + box-shadow: var(--cyber-panel-shadow); } .cyber-hero { @@ -53,13 +252,11 @@ isolation: isolate; overflow: clip; color: var(--cyber-text); - background: - radial-gradient(circle at 76% 30%, rgba(0, 234, 255, 0.14), transparent 30%), - radial-gradient(circle at 86% 70%, rgba(255, 43, 255, 0.14), transparent 34%), - linear-gradient(180deg, var(--cyber-bg-0), var(--cyber-bg-1) 58%, var(--cyber-bg-0)); + background: var(--cyber-hero-bg); } .cyber-hero__background, +.cyber-hero__monterey, .cyber-hero__wash, .cyber-hero__gridlines, .cyber-hero__scanlines { @@ -68,32 +265,75 @@ pointer-events: none; } +.cyber-hero__monterey { + z-index: -5; + overflow: hidden; + background: var(--cyber-monterey-bg); +} + +.cyber-hero__monterey::before, +.cyber-hero__monterey::after { + content: ""; + position: absolute; + inset: 0; + pointer-events: none; +} + +.cyber-hero__monterey::before { + z-index: 2; + background: var(--cyber-monterey-before-bg); +} + +.cyber-hero__monterey::after { + z-index: 3; + background: var(--cyber-monterey-after-bg); +} + +.cyber-hero__monterey-canvas { + position: absolute; + inset: 0; + z-index: 1; + width: 100%; + height: 100%; + opacity: 0; + filter: var(--cyber-monterey-canvas-filter); + mix-blend-mode: var(--cyber-monterey-canvas-blend); + transform: scale(1.035); + transition: opacity 1.65s cubic-bezier(0.22, 0.72, 0.2, 1); +} + +.cyber-hero__monterey--live .cyber-hero__monterey-canvas { + opacity: var(--cyber-monterey-canvas-opacity); +} + +.cyber-hero__monterey a[data-n] { + left: 14px !important; + right: auto !important; + bottom: 12px !important; + z-index: 5 !important; + padding: 0 !important; + color: rgba(244, 247, 255, 0.46) !important; + font: 700 10px/1 var(--font-family-mono, monospace) !important; + letter-spacing: 0.14em !important; + opacity: 0.32 !important; + text-shadow: none !important; +} + .cyber-hero__background { z-index: -4; inset: -40px -40px -80px; - background: - radial-gradient(circle at 70% 26%, rgba(0, 234, 255, 0.16), transparent 30%), - radial-gradient(circle at 86% 62%, rgba(255, 43, 255, 0.16), transparent 32%), - linear-gradient(90deg, transparent 0 64px, rgba(0, 234, 255, 0.055) 65px 66px, transparent 67px 160px), - linear-gradient(180deg, transparent 0 55%, rgba(255, 43, 255, 0.05) 55.2% 55.4%, transparent 55.6%), - linear-gradient(to top, rgba(3, 10, 24, 0.88) 0%, rgba(3, 10, 24, 0.7) 12%, rgba(3, 10, 24, 0.34) 25%, transparent 38%), - linear-gradient(to top, rgba(5, 17, 40, 0.42) 0%, rgba(5, 17, 40, 0.28) 24%, rgba(5, 17, 40, 0.12) 43%, transparent 62%), - linear-gradient(180deg, #02050d 0%, #061124 54%, #02050d 100%); + background: var(--cyber-background-bg); background-size: auto, auto, 220px 100%, - auto, - 260px 100%, - 180px 100%, auto; background-position: 0 0, center, 24px 0, - 0 0, center; - opacity: 0.92; + opacity: var(--cyber-background-opacity); transform: translate3d( 0, calc(var(--hero-scroll) * 0.035px), @@ -106,12 +346,7 @@ content: ""; position: absolute; inset: 12% 0 0; - background: - linear-gradient(90deg, transparent 0 8%, rgba(0, 234, 255, 0.14) 8.1% 8.22%, transparent 8.34% 18%, rgba(255, 43, 255, 0.12) 18.1% 18.22%, transparent 18.34% 31%, rgba(0, 234, 255, 0.11) 31.1% 31.24%, transparent 31.36% 44%, rgba(47, 125, 255, 0.12) 44.1% 44.2%, transparent 44.34% 62%, rgba(255, 43, 255, 0.1) 62.1% 62.22%, transparent 62.34% 78%, rgba(0, 234, 255, 0.12) 78.1% 78.22%, transparent 78.34%), - repeating-linear-gradient(90deg, transparent 0 78px, rgba(0, 234, 255, 0.05) 80px 82px, transparent 84px 116px), - linear-gradient(to top, rgba(3, 12, 27, 0.66) 0%, rgba(3, 12, 27, 0.42) 8%, rgba(3, 12, 27, 0.16) 17%, transparent 28%), - linear-gradient(to top, rgba(5, 20, 44, 0.5) 0%, rgba(5, 20, 44, 0.28) 12%, rgba(5, 20, 44, 0.12) 24%, transparent 36%), - linear-gradient(to top, rgba(4, 17, 38, 0.38) 0%, rgba(4, 17, 38, 0.22) 18%, rgba(4, 17, 38, 0.08) 34%, transparent 48%); + background: var(--cyber-background-before-bg); background-size: auto, auto, @@ -124,8 +359,8 @@ 16px bottom, 72px bottom, 120px bottom; - opacity: 0.62; - mix-blend-mode: screen; + opacity: var(--cyber-background-before-opacity); + mix-blend-mode: var(--cyber-background-before-blend); mask-image: linear-gradient(180deg, transparent 0, black 22%, black 78%, transparent 100%); } @@ -133,12 +368,9 @@ content: ""; position: absolute; inset: 0; - background: - repeating-linear-gradient(90deg, transparent 0 34px, rgba(0, 234, 255, 0.12) 35px 36px, transparent 37px 110px), - repeating-linear-gradient(180deg, transparent 0 28px, rgba(255, 43, 255, 0.1) 29px 30px, transparent 31px 78px), - linear-gradient(90deg, transparent, rgba(0, 234, 255, 0.08), transparent); - opacity: 0.26; - mix-blend-mode: screen; + background: var(--cyber-background-after-bg); + opacity: var(--cyber-background-after-opacity); + mix-blend-mode: var(--cyber-background-after-blend); mask-image: linear-gradient(180deg, transparent 0 10%, black 22%, black 82%, transparent 100%), linear-gradient(90deg, transparent 0 8%, black 24%, black 94%, transparent 100%); @@ -146,32 +378,21 @@ .cyber-hero__wash { z-index: -3; - background: - radial-gradient(circle at 18% 44%, rgba(2, 5, 13, 0.48), rgba(2, 5, 13, 0.22) 34%, transparent 58%), - linear-gradient(90deg, rgba(2, 5, 13, 0.42) 0%, rgba(2, 5, 13, 0.28) 34%, rgba(2, 5, 13, 0.08) 66%, rgba(2, 5, 13, 0.3) 100%), - linear-gradient(180deg, rgba(2, 5, 13, 0.18), rgba(2, 5, 13, 0.08) 58%, rgba(2, 5, 13, 0.92)); + background: var(--cyber-wash-bg); } .cyber-hero__gridlines { z-index: -2; - opacity: 0.16; - background-image: - linear-gradient(rgba(0, 234, 255, 0.055) 1px, transparent 1px), - linear-gradient(90deg, rgba(0, 234, 255, 0.045) 1px, transparent 1px); + opacity: var(--cyber-gridlines-opacity); + background-image: var(--cyber-gridlines-bg); background-size: 72px 72px; mask-image: linear-gradient(180deg, transparent, black 12%, black 72%, transparent); } .cyber-hero__scanlines { z-index: 8; - opacity: 0.11; - background-image: repeating-linear-gradient( - to bottom, - rgba(255, 255, 255, 0.08) 0, - rgba(255, 255, 255, 0.08) 1px, - transparent 1px, - transparent 4px - ); + opacity: var(--cyber-scanlines-opacity); + background-image: var(--cyber-scanlines-bg); mix-blend-mode: overlay; } @@ -179,7 +400,8 @@ position: relative; z-index: 2; width: min(1580px, calc(100vw - 56px)); - max-width: none !important; + max-width: min(1580px, calc(100vw - 56px)) !important; + margin-inline: auto; } .cyber-hero__layout { @@ -198,12 +420,7 @@ } .cyber-hero__copy::before { - content: ""; - position: absolute; - inset: -64px -64px -42px -36px; - z-index: -1; - background: radial-gradient(circle at 28% 38%, rgba(2, 5, 13, 0.82), rgba(2, 5, 13, 0.36) 62%, transparent 78%); - pointer-events: none; + display: none; } .cyber-hero__brand-lockup { @@ -241,7 +458,7 @@ line-height: 1; font-weight: 900; letter-spacing: 0; - color: rgba(244, 247, 255, 0.96); + color: var(--cyber-title-color); white-space: nowrap; } @@ -269,7 +486,7 @@ .cyber-hero__description { max-width: 560px; margin: 0 0 30px; - color: rgba(222, 229, 255, 0.84); + color: var(--cyber-description-color); font-size: clamp(1rem, 1.08vw, 1.22rem); line-height: 1.7; } @@ -302,7 +519,7 @@ } .cyber-hero__action--primary.v-btn { - color: var(--cyber-bg-0) !important; + color: var(--cyber-action-primary-color) !important; background: linear-gradient(135deg, var(--cyber-cyan), var(--cyber-magenta)) !important; box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.16) inset, @@ -314,14 +531,14 @@ .cyber-hero__action--docs.v-btn { color: var(--cyber-text) !important; border-color: rgba(0, 234, 255, 0.46) !important; - background: rgba(3, 10, 22, 0.56) !important; + background: var(--cyber-action-secondary-bg) !important; } .cyber-hero__action--watch.v-btn:hover, .cyber-hero__action--docs.v-btn:hover { color: var(--cyber-cyan) !important; border-color: rgba(0, 234, 255, 0.74) !important; - background: rgba(0, 234, 255, 0.08) !important; + background: var(--cyber-action-secondary-hover-bg) !important; } .cyber-hero__terminal-note { @@ -345,10 +562,14 @@ .cyber-hero__release { flex: 0 0 auto; - color: rgba(244, 247, 255, 0.62); + color: var(--cyber-release-color); white-space: nowrap; } +.cyber-hero__release-date { + color: var(--cyber-card-subtle); +} + .cyber-hero__scene { min-width: 0; width: clamp(940px, 60vw, 1220px); @@ -384,12 +605,9 @@ .cyber-scene__floor { z-index: 0; - background: - radial-gradient(ellipse at 58% 84%, rgba(255, 43, 255, 0.24), transparent 18%), - radial-gradient(ellipse at 56% 84%, rgba(0, 234, 255, 0.18), transparent 32%), - repeating-radial-gradient(ellipse at 58% 84%, rgba(0, 234, 255, 0.1) 0 1px, transparent 1px 20px); + background: var(--cyber-scene-floor-bg); filter: blur(8px); - opacity: 0.48; + opacity: var(--cyber-scene-floor-opacity); mask-image: radial-gradient(ellipse at 58% 84%, black 0 26%, rgba(0, 0, 0, 0.52) 40%, transparent 62%); } @@ -427,11 +645,9 @@ .cyber-scene__foreground { z-index: 6; - background: - linear-gradient(90deg, transparent 0 4%, rgba(0, 234, 255, 0.08) 4.1%, transparent 4.4%), - linear-gradient(180deg, transparent 0 88%, rgba(255, 43, 255, 0.08)); + background: var(--cyber-scene-foreground-bg); mix-blend-mode: screen; - opacity: 0.72; + opacity: var(--cyber-scene-foreground-opacity); mask-image: linear-gradient(180deg, transparent 0 18%, black 28%, black 78%, transparent 100%); } @@ -441,7 +657,7 @@ position: relative; aspect-ratio: 16 / 9; border: 1px solid rgba(0, 234, 255, 0.66); - background: rgba(2, 6, 16, 0.82); + background: var(--cyber-video-frame-bg); clip-path: polygon(20px 0, 100% 0, 100% calc(100% - 20px), calc(100% - 20px) 100%, 0 100%, 0 20px); box-shadow: 0 0 0 1px rgba(47, 125, 255, 0.2) inset, @@ -484,7 +700,7 @@ z-index: 2; overflow: hidden; border-radius: var(--cyber-radius-sm); - background: rgba(2, 6, 16, 0.94); + background: var(--cyber-video-content-bg); clip-path: polygon(14px 0, 100% 0, 100% calc(100% - 14px), calc(100% - 14px) 100%, 0 100%, 0 14px); } @@ -494,7 +710,7 @@ border: 0; border-radius: 0; box-shadow: none; - background: rgba(2, 6, 16, 0.95); + background: var(--cyber-video-content-bg); } .cyber-video-frame__content .hero-video__player { @@ -635,13 +851,13 @@ left: 66%; width: 274px; padding: 12px 13px; - color: rgba(244, 247, 255, 0.84); + color: var(--cyber-card-text); font-family: var(--at-font-mono); font-size: 1.08rem; line-height: 1.28; border-color: color-mix(in srgb, var(--agent-accent), transparent 44%); box-shadow: - 0 0 0 1px rgba(255, 255, 255, 0.06) inset, + 0 0 0 1px var(--cyber-card-inset) inset, 0 0 24px var(--agent-accent-soft); } @@ -691,7 +907,7 @@ .cyber-agent__tasks li { position: relative; padding-left: 15px; - color: rgba(222, 229, 255, 0.72); + color: var(--cyber-card-muted); } .cyber-agent__tasks li::before { @@ -709,7 +925,7 @@ display: flex; gap: 6px; margin-top: 7px; - color: rgba(222, 229, 255, 0.62); + color: var(--cyber-card-subtle); } .cyber-agent__status strong { @@ -744,13 +960,13 @@ .cyber-agent[data-agent="planner"] .cyber-agent__card { display: block; - top: 12%; - right: 108%; + top: 10%; + right: 106%; left: auto; - width: 280px; - padding: 12px 13px; - font-size: 1.14rem; - transform: translate(110px, -10%); + width: 258px; + padding: 11px 12px; + font-size: 1.04rem; + transform: translate(-28px, -8%); } .cyber-agent[data-agent="lead"] .cyber-agent__card { @@ -763,15 +979,29 @@ .cyber-agent[data-agent="developer"] .cyber-agent__card { top: -14%; - left: 102%; + left: 98%; width: 274px; transform: translateY(-12px); } @media (min-width: 1101px) { + .cyber-agent[data-agent="planner"] { + left: calc(var(--agent-x) * 1% + 20px); + top: calc(var(--agent-y) * 1% - 26px); + } + .cyber-agent[data-agent="lead"], .cyber-agent[data-agent="developer"] { - top: calc(var(--agent-y) * 1% + 12px); + top: calc(var(--agent-y) * 1% - 4px); + } + + .cyber-agent[data-agent="lead"] .cyber-agent__float, + .cyber-agent[data-agent="developer"] .cyber-agent__float { + top: 10px; + } + + .cyber-agent[data-agent="planner"] .cyber-agent__float { + top: 70px; } } @@ -797,6 +1027,10 @@ position: absolute; left: calc(var(--bubble-x) * 1%); top: calc(var(--bubble-y) * 1%); + display: inline-flex; + align-items: center; + justify-content: center; + box-sizing: border-box; max-width: 168px; min-height: 30px; padding: 7px 11px; @@ -919,35 +1153,35 @@ @keyframes cyberFeatureReviewerSpeechFloat { 0%, 100% { - transform: translate3d(0, 0, 0) rotate(-4deg); + transform: translateX(calc(50% + var(--reviewer-bubble-center-shift, 0px))) translate3d(0, 0, 0) rotate(-4deg); } 50% { - transform: translate3d(0, -3px, 0) rotate(-3deg); + transform: translateX(calc(50% + var(--reviewer-bubble-center-shift, 0px))) translate3d(0, -3px, 0) rotate(-3deg); } } @keyframes cyberFeatureReviewerSpeechPop { 0% { opacity: 0; - transform: translate3d(12px, 12px, 0) scale(0.54) rotate(-12deg); + transform: translateX(calc(50% + var(--reviewer-bubble-center-shift, 0px))) translate3d(12px, 12px, 0) scale(0.54) rotate(-12deg); } 62% { opacity: 1; - transform: translate3d(-2px, -3px, 0) scale(1.08) rotate(-3deg); + transform: translateX(calc(50% + var(--reviewer-bubble-center-shift, 0px))) translate3d(-2px, -3px, 0) scale(1.08) rotate(-3deg); } 100% { opacity: 1; - transform: translate3d(0, 0, 0) scale(1) rotate(-4deg); + transform: translateX(calc(50% + var(--reviewer-bubble-center-shift, 0px))) translate3d(0, 0, 0) scale(1) rotate(-4deg); } } @keyframes cyberFeatureReviewerSpeechExit { to { opacity: 0; - transform: translate3d(8px, 8px, 0) scale(0.86) rotate(-8deg); + transform: translateX(calc(50% + var(--reviewer-bubble-center-shift, 0px))) translate3d(8px, 8px, 0) scale(0.86) rotate(-8deg); } } @@ -964,10 +1198,7 @@ z-index: -1; inset: -118px -3vw -96px; pointer-events: none; - background: - radial-gradient(ellipse at 50% 62%, rgba(0, 234, 255, 0.08), transparent 56%), - radial-gradient(ellipse at 78% 52%, rgba(255, 43, 255, 0.08), transparent 48%), - linear-gradient(180deg, transparent 0%, rgba(5, 17, 40, 0.08) 30%, rgba(5, 14, 31, 0.18) 52%, rgba(5, 17, 40, 0.08) 72%, transparent 100%); + background: var(--cyber-feature-shell-bg); opacity: 0.86; mask-image: radial-gradient(ellipse at 50% 54%, black 0 48%, rgba(0, 0, 0, 0.5) 62%, transparent 78%); } @@ -980,97 +1211,70 @@ gap: 0; width: 100%; padding: 17px 18px; - background: - linear-gradient(180deg, rgba(3, 10, 22, 0.34) 0%, rgba(5, 14, 31, 0.74) 30%, rgba(5, 14, 31, 0.72) 70%, rgba(3, 10, 22, 0.34) 100%), - linear-gradient(135deg, rgba(5, 14, 31, 0.58), rgba(3, 10, 22, 0.42)); - box-shadow: - 0 0 0 1px rgba(47, 125, 255, 0.1) inset, - 0 -28px 46px rgba(2, 5, 13, 0.14), - 0 30px 58px rgba(2, 5, 13, 0.18), - 0 0 24px rgba(0, 234, 255, 0.1); + background: var(--cyber-feature-rail-bg); + box-shadow: var(--cyber-feature-rail-shadow); +} + +.cyber-feature-rail__collaboration { + position: absolute; + left: 50%; + bottom: calc(100% - 16px); + z-index: 2; + width: clamp(132px, 11vw, 168px); + height: auto; + pointer-events: none; + user-select: none; + filter: + drop-shadow(0 18px 24px rgba(0, 0, 0, 0.5)) + drop-shadow(0 0 20px rgba(120, 58, 255, 0.18)) + drop-shadow(0 0 18px rgba(255, 45, 64, 0.14)); + transform: translate3d(-50%, 0, 0); } .cyber-feature-rail__reviewer { + --reviewer-robot-width: clamp(76px, 5.4vw, 96px); + position: absolute; z-index: 3; - right: clamp(34px, 5vw, 86px); - bottom: calc(100% - 8px); + right: clamp(52px, 5vw, 82px); + bottom: calc(100% - 6px); display: flex; align-items: flex-end; - gap: 10px; + gap: 8px; pointer-events: none; } .cyber-feature-rail__reviewer--active .cyber-feature-rail__reviewer-card { - border-color: rgba(255, 43, 255, 0.86); + border-color: rgba(0, 234, 255, 0.86); box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.08) inset, - 0 0 28px rgba(255, 43, 255, 0.28); + 0 0 28px rgba(0, 234, 255, 0.26); } .cyber-feature-rail__reviewer--active .cyber-feature-rail__robot { filter: drop-shadow(0 16px 24px rgba(0, 0, 0, 0.5)) - drop-shadow(0 0 22px rgba(255, 43, 255, 0.42)); + drop-shadow(0 0 22px rgba(0, 234, 255, 0.36)); } .cyber-feature-rail__reviewer-bubble { - --speech-fill: rgba(255, 246, 159, 0.9); + --reviewer-bubble-center-shift: 3px; - position: absolute; - right: clamp(98px, 6.5vw, 116px); - bottom: calc(100% - 44px); + left: auto; + top: auto; + right: calc(var(--reviewer-robot-width) / 2); + bottom: calc(100% + 10px); z-index: 6; - display: inline-flex; - align-items: center; - min-height: 30px; + width: max-content; max-width: 158px; - padding: 7px 11px; - color: #0b1020; - font-family: var(--at-font-mono); - font-size: 0.64rem; - font-weight: 900; - line-height: 1.1; - letter-spacing: 0; - text-align: center; - white-space: nowrap; - background: - radial-gradient(circle at 28% 24%, rgba(255, 255, 255, 0.9), var(--speech-fill) 64%, rgba(255, 224, 88, 0.92) 100%); - border: 2px solid #050816; - border-radius: 999px; - box-shadow: - 0 0 0 1px rgba(255, 215, 0, 0.34), - 0 5px 0 rgba(0, 0, 0, 0.2), - 0 0 14px rgba(255, 215, 0, 0.18); - text-shadow: 1px 1px 0 rgba(255, 255, 255, 0.62); - transform: rotate(-4deg); - transform-origin: right bottom; + white-space: normal; + overflow-wrap: anywhere; + text-wrap: balance; + transform: translateX(calc(50% + var(--reviewer-bubble-center-shift))) translate3d(0, 0, 0) rotate(-4deg); + transform-origin: center bottom; animation: cyberFeatureReviewerSpeechFloat 2.8s ease-in-out 0.45s infinite; } -.cyber-feature-rail__reviewer-bubble::before, -.cyber-feature-rail__reviewer-bubble::after { - position: absolute; - top: 52%; - content: ""; - clip-path: polygon(0 0, 100% 50%, 0 100%); - transform: translateY(-50%); -} - -.cyber-feature-rail__reviewer-bubble::before { - right: -21px; - width: 23px; - height: 17px; - background: #050816; -} - -.cyber-feature-rail__reviewer-bubble::after { - right: -16px; - width: 18px; - height: 11px; - background: rgba(255, 226, 78, 0.96); -} - .cyber-feature-bubble-enter-active, .cyber-feature-bubble-leave-active { transition: @@ -1095,13 +1299,13 @@ .cyber-feature-rail__robot { position: relative; top: 9px; - width: clamp(74px, 5.6vw, 96px); + width: var(--reviewer-robot-width); height: auto; transform: rotate(3deg); transform-origin: center bottom; filter: drop-shadow(0 14px 22px rgba(0, 0, 0, 0.48)) - drop-shadow(0 0 16px rgba(255, 43, 255, 0.26)); + drop-shadow(0 0 16px rgba(0, 234, 255, 0.22)); pointer-events: none; user-select: none; animation: cyberRobotBob 6.4s ease-in-out infinite; @@ -1109,16 +1313,17 @@ .cyber-feature-rail__reviewer-card { position: relative; - width: clamp(190px, 15.5vw, 248px); - padding: 10px 12px; - color: rgba(244, 247, 255, 0.84); + width: clamp(146px, 10.2vw, 160px); + padding: 7px 8px; + color: var(--cyber-card-text); font-family: var(--at-font-mono); - font-size: clamp(0.56rem, 0.65vw, 0.72rem); - line-height: 1.32; - border-color: rgba(255, 43, 255, 0.5); + font-size: clamp(0.48rem, 0.46vw, 0.54rem); + line-height: 1.28; + border-color: rgba(0, 234, 255, 0.52); box-shadow: - 0 0 0 1px rgba(255, 255, 255, 0.06) inset, - 0 0 24px rgba(255, 43, 255, 0.2); + 0 0 0 1px var(--cyber-card-inset) inset, + 0 0 24px rgba(0, 234, 255, 0.18); + transform: translateY(-34px); } .cyber-feature-rail__reviewer-card::after { @@ -1126,15 +1331,15 @@ position: absolute; left: calc(100% - 1px); top: 56%; - width: 18px; + width: 13px; height: 1px; - background: linear-gradient(90deg, rgba(255, 43, 255, 0.72), transparent); - box-shadow: 0 0 12px rgba(255, 43, 255, 0.34); + background: linear-gradient(90deg, rgba(0, 234, 255, 0.72), transparent); + box-shadow: 0 0 12px rgba(0, 234, 255, 0.3); } .cyber-feature-rail__reviewer-label { - margin-bottom: 7px; - color: var(--cyber-magenta); + margin-bottom: 5px; + color: var(--cyber-cyan); font-weight: 800; text-transform: uppercase; letter-spacing: 0.07em; @@ -1142,7 +1347,7 @@ .cyber-feature-rail__reviewer-tasks { display: grid; - gap: 4px; + gap: 3px; margin: 0; padding: 0; list-style: none; @@ -1150,8 +1355,8 @@ .cyber-feature-rail__reviewer-tasks li { position: relative; - padding-left: 15px; - color: rgba(222, 229, 255, 0.72); + padding-left: 12px; + color: var(--cyber-card-muted); } .cyber-feature-rail__reviewer-tasks li::before { @@ -1159,21 +1364,21 @@ position: absolute; left: 0; top: 0.52em; - width: 6px; - height: 6px; - border: 1px solid var(--cyber-magenta); + width: 5px; + height: 5px; + border: 1px solid var(--cyber-cyan); transform: rotate(45deg); } .cyber-feature-rail__reviewer-status { display: flex; - gap: 6px; - margin-top: 7px; - color: rgba(222, 229, 255, 0.62); + gap: 5px; + margin-top: 5px; + color: var(--cyber-card-subtle); } .cyber-feature-rail__reviewer-status strong { - color: var(--cyber-magenta); + color: var(--cyber-cyan); font-weight: 800; } @@ -1184,7 +1389,7 @@ gap: 12px; min-width: 0; padding: 0 18px; - border-right: 1px solid rgba(0, 234, 255, 0.16); + border-right: 1px solid var(--cyber-feature-divider); } .cyber-feature-rail__item:last-child { @@ -1204,13 +1409,13 @@ .cyber-feature-rail__title { margin-bottom: 3px; - color: rgba(244, 247, 255, 0.94); + color: var(--cyber-feature-title); font-weight: 800; font-size: 0.92rem; } .cyber-feature-rail__text { - color: rgba(222, 229, 255, 0.62); + color: var(--cyber-feature-text); font-size: 0.8rem; line-height: 1.45; } @@ -1329,7 +1534,15 @@ grid-template-columns: repeat(3, minmax(0, 1fr)); } + .cyber-feature-rail__collaboration { + left: 50%; + bottom: calc(100% - 14px); + width: 132px; + } + .cyber-feature-rail__reviewer { + --reviewer-robot-width: 78px; + right: 56px; gap: 10px; } @@ -1340,7 +1553,7 @@ } .cyber-feature-rail__robot { - width: 78px; + width: var(--reviewer-robot-width); } .cyber-feature-rail__item:nth-child(3) { @@ -1363,6 +1576,14 @@ transform: scale(1.02); } + .cyber-hero__monterey { + opacity: 0.58; + } + + .cyber-hero__monterey-canvas { + display: none; + } + .cyber-hero__container { width: min(100% - 32px, 680px); } @@ -1484,6 +1705,10 @@ padding: 16px; } + .cyber-feature-rail__collaboration { + display: none; + } + .cyber-feature-rail__reviewer { display: none; } @@ -1510,6 +1735,7 @@ } .cyber-hero__background, + .cyber-hero__monterey, .cyber-scene, .cyber-scene__video, .cyber-agent { diff --git a/landing/components/common/ThemeToggle.vue b/landing/components/common/ThemeToggle.vue index 742def30..1bc10b99 100644 --- a/landing/components/common/ThemeToggle.vue +++ b/landing/components/common/ThemeToggle.vue @@ -6,10 +6,11 @@ const { isDark, toggleTheme } = useBrowserTheme(); const { trackThemeToggle } = useAnalytics(); const tooltip = computed(() => isDark.value ? t('theme.light') : t('theme.dark')); +const icon = computed(() => isDark.value ? mdiWeatherNight : mdiWeatherSunny); const onToggle = () => { - toggleTheme(); - trackThemeToggle(isDark.value ? 'dark' : 'light'); + const theme = toggleTheme(); + trackThemeToggle(theme); }; @@ -19,7 +20,7 @@ const onToggle = () => {