/* Friends Mobility welcome (home) + page loader (inner pages).
   From docs/design-demos/*.html; the demo's sample page styles are removed.
   Static file: the site's Tailwind CSS is prebuilt and not rebuilt on deploy. */
.fm-intro{--navy:#061c56;--road:#0a2c73;--green:#009b55;--signal:#43d17d;--white:#fff;font-family:'Avenir Next','Segoe UI',Arial,sans-serif}
/* :where() keeps these resets at zero specificity so the design's own
   .fm-skip / .fm-enter rules (border, font-size) still win. */
:where(.fm-intro) *,:where(.fm-intro) *:before,:where(.fm-intro) *:after{box-sizing:border-box}
:where(.fm-intro) button{border:0;cursor:pointer;font-family:inherit;line-height:normal}
:where(.fm-intro) button:focus-visible,:where(.fm-intro) a:focus-visible{outline:3px solid var(--signal);outline-offset:5px}
body.fm-locked{overflow:hidden}
/* Welcome / preloader component */
.fm-intro{position:fixed;inset:0;z-index:10000;background:var(--navy);color:white;overflow:hidden;isolation:isolate;display:flex;align-items:center;justify-content:center;opacity:1;transition:opacity .5s ease,visibility .5s;visibility:visible}.fm-intro[hidden]{display:none!important}.fm-intro.fm-exit{opacity:0;visibility:hidden;pointer-events:none}.fm-intro:before{content:'';position:absolute;inset:0;z-index:-2;background:radial-gradient(ellipse at 50% 45%,#14356c 0,transparent 58%),linear-gradient(130deg,#061c56,#041333);opacity:.9}.fm-grain{position:absolute;inset:0;opacity:.1;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.7' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23ffffff' filter='url(%23n)' opacity='.5' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}.fm-top,.fm-bottom{position:absolute;left:5vw;right:5vw;display:flex;align-items:center;justify-content:space-between;z-index:5}.fm-top{top:35px}.fm-brand-label{font-size:11px;letter-spacing:.22em;font-weight:650}.fm-brand-label span{font-weight:400;color:#9baeca;display:block;font-size:9px;margin-top:8px;letter-spacing:.25em}.fm-skip{color:#d8e4f4;background:transparent;font-size:12px;padding:12px 0 12px 18px;display:flex;gap:18px;align-items:center}.fm-skip span{border:1px solid #496081;border-radius:3px;padding:3px 7px;font-size:11px}.fm-bottom{bottom:30px;gap:25px;color:#a1b1cb;font-size:9px;letter-spacing:.17em}.fm-progress{height:1px;background:#ffffff25;flex:1;position:relative;overflow:hidden}.fm-progress:after{content:'';position:absolute;inset:0;background:var(--signal);transform:scaleX(0);transform-origin:left}.fm-running .fm-progress:after{animation:fm-progress 4.7s linear forwards}.fm-coordinate{position:absolute;left:5vw;top:49%;writing-mode:vertical-rl;font-size:9px;letter-spacing:.18em;color:#6c85a7}.fm-route{position:absolute;inset:0;width:100%;height:100%;overflow:visible;z-index:-1}.fm-route-base{stroke:#5577a3;opacity:.13;stroke-width:1;fill:none}.fm-route-lane{stroke:#7594b6;opacity:.2;stroke-width:1;stroke-dasharray:5 10;fill:none}.fm-route-glow{fill:none;stroke:var(--signal);stroke-width:2;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1;filter:drop-shadow(0 0 6px #43d17d)}.fm-running .fm-route-glow{animation:fm-route 2.8s cubic-bezier(.25,.05,.25,1) .2s forwards}.fm-car-light{opacity:0;filter:drop-shadow(0 0 8px #43d17d)}.fm-running .fm-car-light{animation:fm-light 3.2s .2s both}.fm-center{width:min(76vw,580px);text-align:center;position:relative;z-index:2;margin-top:-8px}.fm-logo-shell{position:relative;width:min(100%,400px);height:210px;margin:0 auto 33px;display:flex;align-items:center;justify-content:center}.fm-logo-panel{position:relative;width:100%;background:#fdfdfd;border-radius:3px;overflow:hidden;box-shadow:0 16px 65px #0002;opacity:0;clip-path:inset(0 100% 0 0);transform:translateY(12px)}.fm-logo-panel img{width:100%;display:block;aspect-ratio:1600/959;object-fit:contain}.fm-running .fm-logo-panel{animation:fm-logo 1.1s cubic-bezier(.16,1,.3,1) 1.55s forwards}.fm-pieces{position:absolute;inset:0;display:flex;gap:8px;align-items:center;justify-content:center;transform:skewX(-24deg)}.fm-pieces i{width:56px;height:51px;background:#fff;opacity:0;box-shadow:0 0 45px #75a5e514}.fm-pieces i:nth-child(2){margin-top:-60px;background:#dbe8f5}.fm-pieces i:nth-child(3){margin-top:30px;background:var(--signal)}.fm-running .fm-pieces i{animation:fm-piece 1.9s cubic-bezier(.2,.7,.2,1) .15s both}.fm-running .fm-pieces i:nth-child(2){animation-delay:.3s}.fm-running .fm-pieces i:nth-child(3){animation-delay:.45s}.fm-tagline{font-size:clamp(34px,4.7vw,66px);font-weight:500;line-height:1.04;letter-spacing:-.055em;margin:0;font-family:'Avenir Next','Segoe UI',Arial,sans-serif}.fm-tagline span{display:block;opacity:0;transform:translateY(20px)}.fm-tagline span:last-child{color:var(--signal)}.fm-running .fm-tagline span{animation:fm-rise .85s cubic-bezier(.16,1,.3,1) 2.25s forwards}.fm-running .fm-tagline span:last-child{animation-delay:2.5s}.fm-subtitle{font-size:10px;letter-spacing:.26em;color:#a8bad0;margin:24px 0 0;opacity:0}.fm-running .fm-subtitle{animation:fm-rise .7s 2.85s forwards}.fm-enter{margin-top:30px;background:transparent;color:white;border:1px solid #526d92;border-radius:30px;padding:12px 22px;font-size:11px;letter-spacing:.03em;opacity:0;transform:translateY(10px)}.fm-enter b{margin-left:22px;color:var(--signal);font-size:15px;font-weight:400}.fm-running .fm-enter{animation:fm-rise .65s 3s forwards}.fm-enter:hover{background:#ffffff10;border-color:var(--signal)}.fm-run-label{display:none}.fm-loader .fm-center{width:min(75vw,280px);margin:0}.fm-loader .fm-logo-shell{height:auto;margin:0 auto 25px;width:230px;max-width:100%}.fm-loader .fm-logo-panel{opacity:1;clip-path:none;transform:none;animation:none;border-radius:3px}.fm-loader .fm-pieces,.fm-loader .fm-tagline,.fm-loader .fm-subtitle,.fm-loader .fm-enter,.fm-loader .fm-coordinate,.fm-loader .fm-brand-label,.fm-loader .fm-bottom{display:none}.fm-loader .fm-top{justify-content:flex-end;top:22px}.fm-loader .fm-skip{font-size:10px;color:#a1b1cb}.fm-loader .fm-route{opacity:.5}.fm-loader .fm-route-glow{animation-duration:1.05s;animation-delay:0s}.fm-loader .fm-car-light{animation-duration:1.05s;animation-delay:0s}.fm-loader .fm-run-label{display:flex;align-items:center;justify-content:center;gap:13px;margin-top:4px}.fm-lane{width:92px;height:2px;background:#ffffff1c;position:relative;overflow:hidden}.fm-lane:after{content:'';position:absolute;width:32px;height:2px;background:var(--signal);animation:fm-lane .85s ease-in-out infinite}.fm-run-label small{color:#aabbd1;letter-spacing:.17em;font-size:8px}.fm-loader.fm-exit{transition-duration:.25s}
@keyframes fm-progress{to{transform:scaleX(1)}}@keyframes fm-route{to{stroke-dashoffset:0}}@keyframes fm-light{0%,100%{opacity:0}10%,80%{opacity:1}}@keyframes fm-piece{0%{opacity:0;transform:translate(-100px,50px)}35%,60%{opacity:1;transform:translate(0,0)}100%{opacity:0;transform:translate(50px,-25px)}}@keyframes fm-logo{to{clip-path:inset(0);opacity:1;transform:translateY(0)}}@keyframes fm-rise{to{opacity:1;transform:translateY(0)}}@keyframes fm-lane{from{transform:translateX(-35px)}to{transform:translateX(100px)}}
@media(min-width:1600px){.fm-center{transform:scale(1.1)}}
@media(max-width:760px){.fm-top{top:22px;left:24px;right:24px}.fm-brand-label{font-size:9px}.fm-brand-label span{font-size:8px}.fm-center{width:78vw}.fm-logo-shell{width:min(100%,300px);height:auto;min-height:165px;margin-bottom:30px}.fm-tagline{font-size:46px}.fm-bottom{left:24px;right:24px;bottom:25px;gap:14px;font-size:8px}.fm-bottom .fm-end{display:none}.fm-coordinate{display:none}.fm-subtitle{font-size:8px;letter-spacing:.18em}.fm-route{width:180%;left:-40%}.fm-enter{margin-top:27px}}
@media(max-height:620px){.fm-logo-shell{width:245px;height:146px;margin-bottom:14px}.fm-tagline{font-size:37px}.fm-subtitle{margin-top:13px}.fm-enter{margin-top:17px;padding:8px 20px}.fm-top{top:14px}.fm-bottom{bottom:17px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important}.fm-running *,.fm-running *:after{animation:none!important}.fm-pieces,.fm-car-light{display:none!important}.fm-logo-panel{opacity:1!important;clip-path:none!important;transform:none!important}.fm-tagline span,.fm-subtitle,.fm-enter{opacity:1!important;transform:none!important}.fm-route-glow{stroke-dashoffset:0}.fm-intro{transition:opacity .15s ease,visibility .15s}.fm-progress:after{transform:scaleX(1)}}
/* Transparent night-brand treatment: the JPEG stays embedded and unchanged.
Remove its white matte at render time and lift navy ink to white for contrast. */
.fm-intro .fm-logo-panel{background:transparent;box-shadow:none;border-radius:0;overflow:visible}
/* The night-logo filter turns a not-yet-loaded image into a solid white box
   (and Chrome paints it even when the image is hidden), so the filter is only
   applied once the logo has loaded; until then the logo is transparent. */
.fm-intro .fm-logo-panel img{opacity:0}
.fm-intro .fm-logo-panel img.fm-ready{opacity:1;filter:url(#fm-night-logo)}
.fm-powered{position:absolute;bottom:58px;left:0;right:0;text-align:center;z-index:5;margin:0;font-size:10px;letter-spacing:.06em;color:#a1b1cb}
.fm-powered a{color:#e6edf7;text-decoration:none;font-weight:600}
.fm-powered a:hover{color:var(--signal)}
.fm-loader .fm-powered{display:none}
@media(max-width:760px){.fm-powered{bottom:51px;font-size:9px}}
@media(max-height:620px){.fm-powered{bottom:39px}}
