.hero-visual{--hv-ease:cubic-bezier(.22, .7, .2, 1);aspect-ratio:5/4;animation:hv-fadein .8s .15s var(--hv-ease) both;background:radial-gradient(120% 90% at 50% 40%,oklch(24% .004 60) 0%,oklch(14.5% 0 0) 70%);border:1px solid oklch(37.1% 0 0);border-radius:24px;position:relative;overflow:hidden;box-shadow:0 30px 60px -30px oklch(0% 0 0/.45)}@keyframes hv-fadein{0%{opacity:0;transform:translateY(10px)scale(.985)}}.hero-visual>svg{width:100%;height:100%;display:block;position:absolute;inset:0}.hero-visual .ring{transform-box:view-box;transform-origin:240px 200px;transition:transform 1.1s var(--hv-ease), opacity .7s var(--hv-ease);transition-delay:calc(var(--i) * 32ms);transform:translate(0)scale(1)rotate(0)}.hero-visual .ring path{vector-effect:non-scaling-stroke;fill:var(--fill);fill-opacity:.1;stroke:var(--stroke);stroke-width:var(--sw);stroke-linejoin:round;transition:fill-opacity .9s var(--hv-ease)}.hero-visual[data-mode=model] .ring{transform:translate(0px, calc(48px - var(--i) * 11px)) scale(1, .5) rotate(-32deg)}.hero-visual[data-mode=model] .ring path{fill-opacity:1}.hero-visual[data-mode=pano] .ring{opacity:0;transition-delay:calc((11 - var(--i)) * 20ms);transform:translate(0)scale(.25)rotate(60deg)}.hero-visual.draw .ring path{stroke-dasharray:1;animation:hv-draw 1.4s var(--hv-ease) both;animation-delay:calc(var(--i) * 60ms)}@keyframes hv-draw{0%{stroke-dashoffset:1px}to{stroke-dashoffset:0}}.hero-visual .layer{transition:opacity .6s var(--hv-ease);opacity:0}.hero-visual[data-mode=map] .layer-map,.hero-visual[data-mode=model] .layer-model{opacity:1}.hero-visual[data-mode=map] .layer-map{transition-delay:.35s}.hero-visual[data-mode=model] .layer-model{transition-delay:.9s}.hero-visual .layer-map .lotfx{opacity:0;transition:opacity .6s var(--hv-ease)}.hero-visual[data-mode=map] .layer-map .lotfx{opacity:1;transition-delay:1.1s}.hero-visual .obj{opacity:0;transform-box:fill-box;transform-origin:50% 100%;transition:opacity .3s var(--hv-ease), transform .3s var(--hv-ease);transform:scaleY(.01)}.hero-visual[data-mode=model] .obj{opacity:1;transition:opacity .5s var(--hv-ease) calc(.95s + var(--d)), transform .7s var(--hv-ease) calc(.95s + var(--d));transform:scale(1)}.hero-visual .flight{stroke-dasharray:3 5;animation:6s linear infinite hv-dash}@keyframes hv-dash{to{stroke-dashoffset:-80px}}.hero-visual .hv-pano{clip-path:circle(.5px);transition:clip-path .9s var(--hv-ease);will-change:clip-path;position:absolute;inset:0;overflow:hidden}.hero-visual[data-mode=pano] .hv-pano{clip-path:circle(75%);transition-delay:.25s}.hero-visual .hv-scene,.hero-visual .hv-pan{will-change:transform;position:absolute;inset:0}.hero-visual .hv-scene{transform-origin:50% 44%;transition:transform 1.4s var(--hv-ease);transform:scale(1.12)}.hero-visual[data-mode=pano] .hv-scene{transition-delay:.25s;transform:scale(1)}.hero-visual .hv-pano img,.hero-visual .hv-pano .hot{width:112.5%;max-width:none;height:100%;display:block;position:absolute;top:0;left:-6.25%}.hero-visual .hv-pano img{object-fit:fill;background:oklch(20.5% 0 0)}.hero-visual .hv-pano .fixed{width:100%;height:100%;position:absolute;inset:0}.hero-visual .hv-pan{animation:11s ease-in-out infinite alternate hv-pan}@keyframes hv-pan{0%{transform:translate(2.5%)}to{transform:translate(-2.5%)}}.hero-visual .spin360{transform-box:fill-box;transform-origin:50%;animation:8s linear infinite hv-turn}@keyframes hv-turn{to{transform:rotate(360deg)}}.hero-visual .pulse{transform-box:fill-box;transform-origin:50%;animation:hv-pulse 2.4s var(--hv-ease) infinite}@keyframes hv-pulse{0%{opacity:.9;transform:scale(.7)}to{opacity:0;transform:scale(2)}}.hero-visual .modes{backdrop-filter:blur(8px);background:oklch(14.5% 0 0/.72);border:1px solid oklch(37.1% 0 0/.8);border-radius:999px;gap:4px;padding:4px;display:flex;position:absolute;bottom:14px;left:50%;transform:translate(-50%)}.hero-visual .chip{letter-spacing:.02em;color:oklch(70.8% 0 0);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-radius:999px;align-items:center;gap:6px;padding:7px 12px;font:600 12px/1 ui-sans-serif,system-ui,sans-serif;transition:color .3s,background .3s;display:inline-flex;position:relative;overflow:hidden}.hero-visual .chip svg{width:14px;height:14px;position:static}.hero-visual .chip[aria-pressed=true]{color:oklch(98.5% 0 0);background:oklch(37.1% 0 0/.8)}.hero-visual .chip:hover{color:oklch(92.2% 0 0)}.hero-visual .chip:focus-visible{outline-offset:2px;outline:3px solid oklch(55.6% 0 0)}.hero-visual .chip .bar{transform-origin:0;background:oklch(67.4% .2072 39.23);border-radius:2px;height:2px;position:absolute;bottom:3px;left:10px;right:10px;transform:scaleX(0)}.hero-visual .chip[aria-pressed=true] .bar{animation:hv-fill var(--dur,4.5s) linear forwards}@keyframes hv-fill{to{transform:scaleX(1)}}.hero-visual:hover .bar,.hero-visual:focus-within .bar,.hero-visual.paused .bar{animation-play-state:paused!important}@media (width<=380px){.hero-visual .chip{padding:7px 9px}.hero-visual .chip svg{display:none}}.hero-visual .note{letter-spacing:.12em;text-transform:uppercase;color:oklch(55.6% 0 0);font:500 10px/1 ui-sans-serif,system-ui;position:absolute;top:14px;left:16px}@media (prefers-reduced-motion:reduce){.hero-visual,.hero-visual *,.hero-visual :before,.hero-visual :after{transition:none!important;animation:none!important}}.hero-rise[data-astro-cid-r7x22wkt],.hero-rise-h1[data-astro-cid-r7x22wkt]{animation:.55s cubic-bezier(.22,.7,.2,1) both hero-rise}.hero-rise-h1[data-astro-cid-r7x22wkt]{animation-name:hero-rise-move;animation-delay:80ms}.hero-rise[data-astro-cid-r7x22wkt]:nth-child(3){animation-delay:.16s}.hero-rise[data-astro-cid-r7x22wkt]:nth-child(4){animation-delay:.24s}@keyframes hero-rise{0%{opacity:0;transform:translateY(14px)}}@keyframes hero-rise-move{0%{transform:translateY(14px)}}@media (prefers-reduced-motion:reduce){.hero-rise[data-astro-cid-r7x22wkt],.hero-rise-h1[data-astro-cid-r7x22wkt]{animation:none}}.app-mockup .app-view{aspect-ratio:5/4;background:radial-gradient(120% 90% at 50% 40%,oklch(24% .004 60) 0%,oklch(14.5% 0 0) 70%);border:1px solid oklch(37.1% 0 0);border-radius:12px;position:relative;overflow:hidden}.app-mockup .app-view svg{width:100%;height:100%;display:block}.app-mockup .ring path{vector-effect:non-scaling-stroke;fill:var(--fill);fill-opacity:.1;stroke:var(--stroke);stroke-width:var(--sw);stroke-linejoin:round}.app-mockup .mode-map .obj{display:none}.app-mockup .mode-model .ring{transform-box:view-box;transform-origin:240px 200px;transform:translate(0px, calc(48px - var(--i) * 11px)) scale(1, .5) rotate(-32deg)}.app-mockup .mode-model .ring path{fill-opacity:1}
