/* ── Complide Enterprise · scroll-world landing ─────────────────────────── */ :root { --bg: #05080d; --bg-soft: #0b1016; --ink: #f2f0e6; --ink-dim: #a8a493; --green: #1e9e5f; --green-deep: #0b5c36; --amber: #ffc24b; --red: #ff5d5d; --line: rgba(147, 163, 189, 0.18); --card-bg: rgba(6, 11, 22, 0.72); --radius: 18px; --font: "Georgia", "Iowan Old Style", serif; } * { margin: 0; padding: 0; box-sizing: border-box; } html { scroll-behavior: auto; } body { background: var(--bg); color: var(--ink); font-family: var(--font); -webkit-font-smoothing: antialiased; overflow-x: hidden; } img { user-select: none; } /* ── Nav ─────────────────────────────────────────────────────────────────── */ .nav { position: fixed; inset: 0 0 auto 0; z-index: 60; display: flex; align-items: center; gap: 32px; padding: 18px 32px; background: linear-gradient(180deg, rgba(4, 7, 15, 0.85), rgba(4, 7, 15, 0)); } .nav__brand { display: flex; align-items: center; gap: 10px; color: var(--ink); text-decoration: none; font-weight: 700; font-size: 17px; letter-spacing: 0.01em; } .nav__glyph { width: 22px; height: 22px; color: var(--green); } .nav__tag { font-size: 11px; font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; color: var(--green); border: 1px solid rgba(30, 158, 95, 0.45); border-radius: 99px; padding: 3px 9px; } .nav__links { display: flex; gap: 26px; margin-left: auto; } .nav__links a { color: var(--ink-dim); text-decoration: none; font-size: 14px; transition: color 0.2s; } .nav__links a:hover { color: var(--ink); } /* ── Buttons ─────────────────────────────────────────────────────────────── */ .btn { display: inline-flex; align-items: center; justify-content: center; border-radius: 99px; padding: 11px 22px; font-size: 14px; font-weight: 600; text-decoration: none; transition: transform 0.15s ease, box-shadow 0.15s ease, background 0.15s ease; } .btn--primary { background: var(--green); color: #03130b; box-shadow: 0 0 24px rgba(30, 158, 95, 0.35); } .btn--primary:hover { transform: translateY(-1px); box-shadow: 0 0 36px rgba(30, 158, 95, 0.5); } .btn--ghost { color: var(--ink); border: 1px solid var(--line); background: rgba(10, 17, 32, 0.5); } .btn--ghost:hover { border-color: rgba(147, 163, 189, 0.45); } .btn--lg { padding: 15px 30px; font-size: 16px; } /* ── Progress rail ───────────────────────────────────────────────────────── */ .rail { position: fixed; left: 28px; top: 50%; transform: translateY(-50%); z-index: 55; display: flex; align-items: center; gap: 14px; opacity: 0; transition: opacity 0.4s; pointer-events: none; } .rail.is-visible { opacity: 1; } .rail__track { width: 2px; height: 220px; background: rgba(147, 163, 189, 0.2); border-radius: 2px; overflow: hidden; } .rail__fill { width: 100%; height: 0%; background: linear-gradient(180deg, var(--green), var(--green-deep)); } .rail__dots { list-style: none; display: flex; flex-direction: column; justify-content: space-between; height: 220px; } .rail__dots li { display: flex; align-items: center; gap: 8px; font-size: 10px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--ink-dim); } .rail__dots i { width: 6px; height: 6px; border-radius: 50%; background: rgba(147, 163, 189, 0.4); transition: background 0.3s, box-shadow 0.3s; } .rail__dots li.is-active i { background: var(--green); box-shadow: 0 0 10px rgba(30, 158, 95, 0.85); } .rail__dots li.is-active { color: var(--ink); } .rail__dots span { opacity: 0; transform: translateX(-4px); transition: opacity 0.3s, transform 0.3s; } .rail__dots li.is-active span { opacity: 1; transform: translateX(0); } /* ── World stage ─────────────────────────────────────────────────────────── */ .world { position: fixed; inset: 0; z-index: 1; overflow: hidden; } .world__stage { position: absolute; inset: 0; } .world__anchors span { position: absolute; } .world-spacer { /* height set by JS: scenes × per-scene scroll length */ height: 1100vh; pointer-events: none; } .flight { position: absolute; inset: 0; z-index: 12; display: none; } .flight video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; } .world--video .flight { display: block; } .world--video .scene { display: none; } .scene { position: absolute; inset: 0; opacity: 0; will-change: transform, opacity, filter; } .scene img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transform-origin: var(--fx, 50%) var(--fy, 50%); will-change: transform; } .scene__vignette { position: absolute; inset: 0; background: radial-gradient(ellipse at 50% 45%, transparent 45%, rgba(4, 7, 15, 0.55) 100%), linear-gradient(180deg, rgba(4, 7, 15, 0.35) 0%, transparent 22%, transparent 72%, rgba(4, 7, 15, 0.5) 100%); pointer-events: none; } /* ── Copy cards ──────────────────────────────────────────────────────────── */ .cards { position: absolute; inset: 0; z-index: 20; pointer-events: none; } .card { position: absolute; max-width: 480px; padding: 34px 38px; border-radius: var(--radius); background: var(--card-bg); border: 1px solid var(--line); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); opacity: 0; will-change: transform, opacity; pointer-events: none; } .card.is-live { pointer-events: auto; } .card[data-card="0"] { left: 7vw; top: 50%; } .card[data-card="1"] { right: 6vw; top: 50%; } .card[data-card="2"] { left: 6vw; top: 50%; } .card[data-card="3"] { right: 6vw; top: 50%; } .card[data-card="4"] { left: 6vw; top: 50%; } .card__kicker { font-size: 12px; font-weight: 700; letter-spacing: 0.18em; text-transform: uppercase; color: var(--green); margin-bottom: 14px; } .card h1 { font-size: clamp(38px, 4.6vw, 60px); line-height: 1.04; letter-spacing: -0.02em; margin-bottom: 18px; } .card h2 { font-size: clamp(30px, 3.4vw, 44px); line-height: 1.08; letter-spacing: -0.02em; margin-bottom: 16px; } .card__body { color: var(--ink-dim); font-size: 16px; line-height: 1.6; margin-bottom: 22px; } .card__actions { display: flex; gap: 12px; flex-wrap: wrap; } .card--hero { background: rgba(6, 11, 22, 0.6); } /* ── Chips ───────────────────────────────────────────────────────────────── */ .chips { display: flex; gap: 8px; flex-wrap: wrap; } .chip { font-size: 12px; font-weight: 600; letter-spacing: 0.04em; padding: 6px 12px; border-radius: 99px; border: 1px solid var(--line); color: var(--ink-dim); background: rgba(10, 17, 32, 0.55); } .chip--green { color: var(--green); border-color: rgba(30, 158, 95, 0.5); } .chip--yellow { color: var(--amber); border-color: rgba(255, 194, 75, 0.45); } .chip--red { color: var(--red); border-color: rgba(255, 93, 93, 0.45); } /* ── Scroll hint ─────────────────────────────────────────────────────────── */ .scroll-hint { display: flex; align-items: center; gap: 10px; margin-top: 26px; color: var(--ink-dim); font-size: 12px; letter-spacing: 0.1em; text-transform: uppercase; } .scroll-hint__mouse { width: 20px; height: 32px; border: 1.5px solid var(--ink-dim); border-radius: 12px; display: flex; justify-content: center; padding-top: 6px; } .scroll-hint__mouse span { width: 3px; height: 7px; border-radius: 2px; background: var(--green); animation: wheel 1.6s ease-in-out infinite; } @keyframes wheel { 0% { transform: translateY(0); opacity: 1; } 70% { transform: translateY(9px); opacity: 0; } 100% { transform: translateY(0); opacity: 0; } } /* ── Ground content ──────────────────────────────────────────────────────── */ .ground { position: relative; z-index: 10; background: linear-gradient(180deg, transparent, var(--bg) 6%, var(--bg)); padding: 120px 8vw 0; } .ground__title { font-size: clamp(30px, 3.6vw, 48px); line-height: 1.1; letter-spacing: -0.02em; text-align: center; margin-bottom: 56px; } .stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; max-width: 1080px; margin: 0 auto 130px; } .stat { border: 1px solid var(--line); border-radius: var(--radius); background: var(--bg-soft); padding: 28px 24px; display: flex; flex-direction: column; gap: 6px; } .stat strong { font-size: 34px; letter-spacing: -0.02em; color: var(--green); } .stat span { color: var(--ink-dim); font-size: 14px; } .features { max-width: 1080px; margin: 0 auto 140px; } .features__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; } .feature { border: 1px solid var(--line); border-radius: var(--radius); background: var(--bg-soft); padding: 28px 26px; transition: border-color 0.2s, transform 0.2s; } .feature:hover { border-color: rgba(30, 158, 95, 0.45); transform: translateY(-2px); } .feature h3 { font-size: 17px; margin-bottom: 10px; } .feature p { color: var(--ink-dim); font-size: 14px; line-height: 1.6; } .cta { text-align: center; padding: 90px 0 110px; border-top: 1px solid var(--line); } .cta h2 { font-size: clamp(32px, 4vw, 54px); letter-spacing: -0.02em; margin-bottom: 16px; } .cta p { color: var(--ink-dim); font-size: 17px; margin-bottom: 34px; } .cta__actions { display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; } .footer { display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; padding: 26px 0 34px; border-top: 1px solid var(--line); color: var(--ink-dim); font-size: 13px; } /* ── Responsive ──────────────────────────────────────────────────────────── */ @media (max-width: 900px) { .nav__links { display: none; } .rail { display: none; } .card { max-width: min(88vw, 440px); padding: 26px 26px; } .card[data-card] { left: 6vw; right: auto; } .stats { grid-template-columns: repeat(2, 1fr); } .features__grid { grid-template-columns: 1fr; } } /* ── Reduced motion: static stacked fallback ─────────────────────────────── */ @media (prefers-reduced-motion: reduce) { .scroll-hint__mouse span { animation: none; } } /* ── Crux type system: serif voice, mono details ─────────────────────────── */ .card__kicker, .chip, .rail__dots li, .nav__tag, .scroll-hint, .stat span { font-family: "SF Mono", "JetBrains Mono", ui-monospace, monospace; } .nav__links a, .btn { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; } .card h1, .card h2, .ground__title, .cta h2 { font-weight: 500; letter-spacing: 0; }