@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; } button:not(:disabled), [role='button']:not([aria-disabled='true']) { cursor: pointer; } .area-pane-group-header { box-shadow: inset 0 -1px 0 #e7e5e4; transition: background-color 0.2s ease, color 0.2s ease; } html.dark .area-pane-group-header { box-shadow: inset 0 -1px 0 #1e2d50; } /* 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; } .home-hero-stats { flex-direction: column; gap: 0.7rem; } .home-hero-stat { display: inline-flex; min-width: 0; align-items: baseline; gap: 0.4rem; white-space: nowrap; } .home-hero-stat-value { flex: 0 0 auto; font-size: clamp(1.25rem, 5.2vw, 1.875rem); font-weight: 700; line-height: 1.05; color: #ffffff; } .home-hero-stat-label { min-width: 0; flex: 0 1 auto; color: #e7e5e4; font-size: clamp(0.78rem, 3.25vw, 0.875rem); line-height: 1.15; white-space: nowrap; } @media (min-width: 640px) { .home-hero-stats { flex-direction: row; column-gap: 3rem; row-gap: 1rem; } .home-hero-stat-value { font-size: 1.875rem; } } @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); } } @keyframes scout-export-icon-pop { 0%, 54%, 100% { transform: scale(1); } 62% { transform: scale(0.82) rotate(-5deg); } 72% { transform: scale(1.13) rotate(4deg); } 84% { transform: scale(1); } } .scout-export-action { transform-origin: center; animation: none; } .scout-export-icon { transform-origin: center; 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-icon { animation: scout-export-icon-pop 2.4s ease-in-out 1 both; } .scout-screen-active .scout-export-check { animation: scout-export-check 2.4s ease-in-out 1 both; } @media (max-width: 639px) { .scout-export-ripple { width: 5.5rem; height: 5.5rem; } .scout-screen-active .scout-export-action { animation-duration: 2s; } .scout-screen-active .scout-export-ripple, .scout-screen-active .scout-export-icon, .scout-screen-active .scout-export-check { animation-duration: 2s; } } @media (prefers-reduced-motion: reduce) { .showcase-progress { animation: none !important; transform: scaleX(1); } .scout-export-action, .scout-export-icon, .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; } /* Highlight flash for newly added filter cards — animated green stroke. */ @property --filter-highlight-angle { syntax: ''; initial-value: 0deg; inherits: false; } @keyframes filter-highlight-spin { to { --filter-highlight-angle: 360deg; } } @keyframes filter-highlight-fade { 0%, 75% { opacity: 1; } 100% { opacity: 0; } } .filter-highlight-flash { position: relative; } .filter-highlight-flash::after { content: ''; position: absolute; inset: -2px; border-radius: 6px; padding: 2px; background: conic-gradient( from var(--filter-highlight-angle, 0deg), rgba(29, 228, 195, 0) 0%, #1de4c3 18%, #05c9aa 32%, rgba(29, 228, 195, 0) 50%, #1de4c3 68%, #05c9aa 82%, rgba(29, 228, 195, 0) 100% ); -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask-composite: exclude; animation: filter-highlight-spin 1s linear infinite, filter-highlight-fade 2s ease-out forwards; pointer-events: none; z-index: 20; } @media (prefers-reduced-motion: reduce) { .filter-highlight-flash::after { background: rgba(29, 228, 195, 0.9); animation: filter-highlight-fade 2s ease-out forwards; } } /* Hide scrollbar for pill groups on mobile */ .scrollbar-hide { -ms-overflow-style: none; scrollbar-width: none; } .scrollbar-hide::-webkit-scrollbar { display: none; }