@config "../tailwind.config.js"; @import "tailwindcss"; html, body, #root { height: 100%; height: 100dvh; margin: 0; padding: 0; overflow: hidden; overscroll-behavior: none; } html { background-color: #fafaf9; color-scheme: light; } html.dark { background-color: #0a0e1a; color-scheme: dark; } /* Smooth theme transitions (scoped to avoid map performance issues) */ body, div, aside, section, header, nav, button, input, select, label, span, p, h1, h2, h3 { transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease; } /* Hexagon background animations */ @keyframes hex-drift { from { transform: translateX(-5vw); } to { transform: translateX(105vw); } } @keyframes hex-bob { 0%, 100% { transform: translateY(var(--bob)); } 50% { transform: translateY(calc(var(--bob) * -1)); } } .home-content-surface { --home-hex-pattern: url("/home-hex-pattern.svg"); --home-pointer-active: 0; --home-pointer-x: 50%; --home-pointer-y: 50%; isolation: isolate; background: linear-gradient(180deg, #f3efe8 0%, #fafaf9 36%, #eef7f3 100%); } .home-page-scroll { --home-scroll-y: 0px; } .home-hero-hex-parallax { transform: translate3d(0, calc(var(--home-scroll-y, 0px) * 0.18), 0); will-change: transform; } .home-content-surface::before { content: ''; position: absolute; inset: 0; z-index: 0; pointer-events: none; background-image: var(--home-hex-pattern); background-position: center calc(var(--home-scroll-y, 0px) * 0.14); background-size: 138px 159px; opacity: 0.14; will-change: background-position; } .home-content-surface::after { content: ''; position: absolute; inset: 0; z-index: 1; pointer-events: none; background-image: var(--home-hex-pattern); background-position: center calc(var(--home-scroll-y, 0px) * 0.14); background-size: 138px 159px; filter: drop-shadow(0 0 6px rgba(20, 184, 166, 0.3)); opacity: calc(var(--home-pointer-active, 0) * 0.58); transition: opacity 0.16s ease; -webkit-mask-image: radial-gradient( circle 260px at var(--home-pointer-x) var(--home-pointer-y), #000 0%, rgba(0, 0, 0, 0.75) 36%, transparent 72% ); mask-image: radial-gradient( circle 260px at var(--home-pointer-x) var(--home-pointer-y), #000 0%, rgba(0, 0, 0, 0.75) 36%, transparent 72% ); will-change: background-position, opacity; } .dark .home-content-surface { --home-hex-pattern: url("/home-hex-pattern-dark.svg"); background: linear-gradient(180deg, #121827 0%, #0a0e1a 42%, #10211f 100%); } .dark .home-content-surface::before { opacity: 0.11; } .dark .home-content-surface::after { filter: drop-shadow(0 0 7px rgba(45, 212, 191, 0.36)); opacity: calc(var(--home-pointer-active, 0) * 0.5); } @media (prefers-reduced-motion: reduce) { .home-hero-hex-parallax { transform: none; will-change: auto; } .home-content-surface::before, .home-content-surface::after { background-position: center top; will-change: auto; } } /* Fade-in animation for homepage sections */ .fade-in-section { opacity: 0; transform: translateY(24px); transition: opacity 0.6s ease-out, transform 0.6s ease-out; } .fade-in-visible { opacity: 1; transform: translateY(0); } @keyframes showcase-progress { from { transform: scaleX(0); } to { transform: scaleX(1); } } .showcase-progress { animation-name: showcase-progress; animation-timing-function: linear; animation-iteration-count: 1; animation-fill-mode: forwards; } .hero-roomy-lift { transform: translateY(0); transition: transform 0.25s ease; } .hero-scroll-chevron { display: none; bottom: 0.75rem; width: 5rem; height: 5rem; } @media (min-width: 1200px) { .home-hero-container { padding-top: 3rem; padding-bottom: 3rem; } .home-hero-layout { grid-template-columns: minmax(0, 0.82fr) minmax(38rem, 1.18fr); column-gap: 3rem; } .home-hero-copy { max-width: 42rem; } .product-showcase { max-width: none; justify-self: stretch; } .product-showcase-frame { height: 40rem; } } @media (min-width: 1440px) { .home-hero-layout { grid-template-columns: minmax(0, 0.78fr) minmax(44rem, 1.22fr); column-gap: 4rem; } .home-hero-copy { max-width: 45rem; } .product-showcase-frame { height: 40rem; } } @media (min-width: 1200px) and (min-height: 900px) { .hero-roomy-lift { transform: translateY(-2.5rem); } .hero-scroll-chevron { display: flex; } } @media (min-width: 1280px) and (min-height: 1040px) { .hero-roomy-lift { transform: translateY(-3.5rem); } .hero-scroll-chevron { bottom: 0.9rem; } } @keyframes scout-export-click { 0%, 52%, 100% { transform: translateY(0) scale(1); box-shadow: 0 10px 18px rgba(15, 118, 110, 0.18); } 58% { transform: translateY(2px) scale(0.985); box-shadow: 0 4px 8px rgba(15, 118, 110, 0.18); } 66% { transform: translateY(0) scale(1.02); box-shadow: 0 14px 24px rgba(15, 118, 110, 0.24); } } @keyframes scout-export-ripple { 0%, 54%, 100% { opacity: 0; transform: translate(-50%, -50%) scale(0.25); } 60% { opacity: 0.28; transform: translate(-50%, -50%) scale(0.8); } 78% { opacity: 0; transform: translate(-50%, -50%) scale(2.4); } } @keyframes scout-export-check { 0%, 62%, 100% { opacity: 0; transform: scale(0.65); } 70%, 90% { opacity: 1; transform: scale(1); } } .scout-export-action { animation: none; } .scout-export-ripple { position: absolute; left: 50%; top: 50%; width: 7rem; height: 7rem; border-radius: 9999px; background: rgba(255, 255, 255, 0.55); opacity: 0; transform: translate(-50%, -50%) scale(0.25); animation: none; } .scout-export-check { opacity: 0; transform: scale(0.65); animation: none; } .scout-screen-active .scout-export-action { animation: scout-export-click 2.4s ease-in-out 1 both; } .scout-screen-active .scout-export-ripple { animation: scout-export-ripple 2.4s ease-out 1 both; } .scout-screen-active .scout-export-check { animation: scout-export-check 2.4s ease-in-out 1 both; } @media (prefers-reduced-motion: reduce) { .showcase-progress { animation: none !important; transform: scaleX(1); } .scout-export-action, .scout-export-ripple, .scout-export-check { animation: none !important; } .scout-export-check { opacity: 1; transform: scale(1); } } /* MapLibre scale control — dark mode */ .dark .maplibregl-ctrl-scale { border-color: #d6d3d1; color: #d6d3d1; background-color: rgba(28, 25, 23, 0.5); } .map-has-mobile-bottom-sheet .maplibregl-ctrl-bottom-left { bottom: calc(var(--map-mobile-bottom-inset, 0px) + 0.25rem) !important; } /* Hide scrollbar for pill groups on mobile */ .scrollbar-hide { -ms-overflow-style: none; scrollbar-width: none; } .scrollbar-hide::-webkit-scrollbar { display: none; }