@font-face{font-family:Noto Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/NotoSans-Regular.woff2)format("woff2")}@font-face{font-family:Noto Sans;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/NotoSans-SemiBold.woff2)format("woff2")}@font-face{font-family:Noto Sans Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/NotoSansMono-Regular.woff2)format("woff2")}:root{color-scheme:dark;--plane:#13141c;--surface:#1a1b26;--surface-2:#1f2130;--surface-3:#292b3d;--ink:#c0caf5;--ink-2:#a9b1d6;--muted:#7982a9;--hairline:#c0caf524;--axis:#3b3f57;--accent:#7aa2f7;--accent-ink:#13141c;--onair:#d63b58;--auto:#86d797;--shot-ground:#1a1b26;--font:"Noto Sans", system-ui, "Segoe UI", Cantarell, Roboto, "Helvetica Neue", sans-serif;--mono:"Noto Sans Mono", ui-monospace, "Fira Code", "Cascadia Mono", "Liberation Mono", Menlo, monospace;--measure:68ch;--gutter:1rem;--r:8px}:root[data-theme=light]{color-scheme:light;--plane:#f4f5fa;--surface:#fcfcfb;--surface-2:#eef0f6;--surface-3:#e3e6ef;--ink:#1a1b26;--ink-2:#4b4f66;--muted:#6b7089;--hairline:#1a1b261f;--axis:#c3c2b7;--accent:#0072cf;--accent-ink:#fff;--auto:#004b1e}*,:before,:after{box-sizing:border-box}html{background:var(--plane);color:var(--ink);font-family:var(--font);-webkit-text-size-adjust:100%;scroll-behavior:smooth;font-size:100%;line-height:1.55}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{background:var(--plane);margin:0;font-size:1.0625rem;overflow-x:hidden}img,video,svg{max-width:100%;height:auto}a{color:var(--accent);text-underline-offset:.15em;text-decoration:underline 1px}a:hover{text-decoration-thickness:2px}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}h1,h2,h3,h4{color:var(--ink);text-wrap:balance;margin:0;font-weight:600;line-height:1.15}h1{letter-spacing:-.015em;font-size:clamp(2rem,1.1rem + 2.6vw,3.25rem)}h2{font-size:clamp(1.5rem,1.15rem + 1vw,2rem)}h3{font-size:1.1875rem}p,ul,ol,dl{margin:0}p+p,.prose>*+*{margin-top:.8em}.prose,.measure{max-width:var(--measure)}.prose ul,.prose ol{padding-inline-start:1.25rem}.prose li+li{margin-top:.35em}code,kbd,pre{font-family:var(--mono);font-size:.9em}code{background:var(--surface-2);border:1px solid var(--hairline);white-space:nowrap;border-radius:4px;padding:.05em .35em}pre{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--r);tab-size:2;margin:0;padding:.85rem 1rem;line-height:1.5;overflow-x:auto}pre code{white-space:pre-wrap;overflow-wrap:anywhere;background:0 0;border:0;padding:0;font-size:.875rem}.skip{background:var(--accent);color:var(--accent-ink);z-index:10;border-radius:4px;padding:.5rem .75rem;position:absolute;top:.5rem;left:-200vw}.skip:focus{left:.5rem}.sr{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.muted{color:var(--ink-2)}.small{font-size:.9375rem}.mono{font-family:var(--mono)}.wrap{width:100%;max-width:108rem;padding-inline:var(--gutter);margin-inline:auto}@media (width>=48rem){:root{--gutter:2rem}}@media (width>=100rem){:root{--gutter:3rem}}.top{border-bottom:1px solid var(--hairline);background:var(--plane)}.top .wrap{flex-wrap:wrap;align-items:center;gap:.5rem 1.25rem;min-height:3.5rem;padding-block:.5rem;display:flex}.mark{color:var(--ink);align-items:center;gap:.6rem;margin-inline-end:auto;font-size:1.125rem;font-weight:600;text-decoration:none;display:inline-flex}.mark img{border-radius:6px;width:1.75rem;height:1.75rem}.nav{flex-wrap:wrap;gap:.25rem 1rem;font-size:.9375rem;display:flex}.nav a{color:var(--ink);border-bottom:2px solid #0000;padding:.35rem 0;text-decoration:none}.nav a:hover,.nav a[aria-current=page]{border-bottom-color:var(--accent)}.theme{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--hairline);cursor:pointer;border-radius:999px;padding:.3rem .8rem;font-size:.875rem}.theme:hover{background:var(--surface-2)}@media (width<=47.99rem){.nav{flex-basis:100%;order:3}}.section{border-top:1px solid var(--hairline);padding-block:3rem}.section>.wrap>h2{margin-bottom:1.25rem}.section .lead{color:var(--ink-2);max-width:var(--measure);font-size:1.125rem}.section .lead+*{margin-top:1.5rem}@media (width>=72rem){.section{padding-block:4rem}}.btn{font:inherit;border-radius:var(--r);border:1px solid var(--hairline);background:var(--surface);color:var(--ink);cursor:pointer;padding:.65rem 1.1rem;font-size:1rem;font-weight:600;text-decoration:none;display:inline-block}.btn:hover{background:var(--surface-2);text-decoration:none}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn.primary:hover{filter:brightness(1.08)}.actions{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.hero{padding-block:2.5rem 2rem}.hero .wrap{align-items:start;gap:2rem;display:grid}.hero-copy{justify-items:start;gap:1.25rem;max-width:40rem;display:grid}.hero-copy .listen{justify-self:stretch;margin-top:.75rem}.hero-copy h1{max-width:16ch}.hero-copy .sub{color:var(--ink-2);max-width:44ch;font-size:clamp(1.0625rem,1rem + .4vw,1.25rem)}.hero-copy .open-source{color:var(--ink-2);font-size:.9375rem}.hero-media{gap:1rem;min-width:0;display:grid}@media (width>=72rem){.hero{padding-block:4rem 3rem}.hero .wrap{grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:3rem}}.frame{gap:.5rem;margin:0;display:grid}.frame>img,.frame>video{border-radius:var(--r);border:1px solid var(--hairline);background:var(--shot-ground);width:100%;height:auto;display:block}.frame>figcaption{color:var(--ink-2);max-width:var(--measure);font-size:.875rem}.frame[data-size=phone]{max-width:19rem}.frame[data-size=phone]>img{border-radius:12px}.listen{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--r);gap:.6rem;padding:1rem;display:grid}.listen h2{font-size:1.0625rem}.listen audio{width:100%;max-width:32rem;display:block}.listen p{color:var(--ink-2);max-width:var(--measure);font-size:.9375rem}.status{background:var(--surface);border-block:1px solid var(--hairline)}.status .wrap{align-items:start;gap:1rem 2rem;padding-block:1.25rem;display:grid}.status .version{font-family:var(--mono);gap:.25rem;font-size:.9375rem;display:grid}.status .version strong{font-family:var(--font);font-size:1.25rem;font-weight:600}.status dl{gap:.75rem 1.5rem;display:grid}.status dt{color:var(--ink);font-weight:600}.status dd{color:var(--ink-2);margin:.15rem 0 0;font-size:.9375rem}.status .more{font-size:.9375rem}@media (width>=48rem){.status dl{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width>=72rem){.status .wrap{grid-template-columns:11rem minmax(0,1fr) auto}}.agpl{border:1px solid var(--hairline);background:#fcfcfb;border-radius:6px;align-items:center;padding:.3rem .5rem;line-height:0;display:inline-flex}.agpl img{width:auto;height:2.25rem}.agpl-block{color:var(--ink-2);justify-items:start;gap:.35rem;font-size:.875rem;display:grid}.cols{gap:1.5rem;display:grid}.cols>*{border-top:1px solid var(--hairline);min-width:0;padding-top:1rem}.cols h3{margin-bottom:.5rem}.cols p,.cols ul{color:var(--ink-2);font-size:1rem}.cols ul{padding-inline-start:1.1rem}.cols li+li{margin-top:.3em}.cols .first{color:var(--ink);font-weight:600}@media (width>=48rem){.cols{grid-template-columns:repeat(2,minmax(0,1fr));gap:2rem}.cols[data-n="3"]{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width>=72rem){.cols[data-n="4"]{grid-template-columns:repeat(4,minmax(0,1fr))}.cols[data-n="5"]{grid-template-columns:repeat(5,minmax(0,1fr))}}.who{counter-reset:none;gap:1.5rem;display:grid}.who>div{border-left:3px solid var(--axis);background:var(--surface);border-radius:0 var(--r) var(--r) 0;padding:1.25rem 1.25rem 1.25rem 1.5rem;position:relative}.who h3{margin-bottom:.4rem}.who p,.who ul{color:var(--ink-2);font-size:1rem}.who ul{padding-inline-start:1.1rem}.who .link{margin-top:.6rem;font-size:.9375rem;display:block}@media (width>=48rem){.who{grid-template-columns:repeat(3,minmax(0,1fr));gap:2rem}}.words{align-items:start;gap:2rem;display:grid}.words dl{max-width:var(--measure);gap:1.1rem;display:grid}.words dt{font-weight:600}.words dd{color:var(--ink-2);margin:.15rem 0 0}.words-media{grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));align-items:start;gap:1.25rem;display:grid}.words-media>.frame:not([data-size=phone]){grid-column:1/-1}@media (width>=72rem){.words{grid-template-columns:minmax(0,6fr) minmax(0,6fr);gap:3rem}}.signal{background:var(--surface);border-block:1px solid var(--hairline)}.signal .wrap{padding-block:3rem}.signal h2{margin-bottom:.5rem}.signal .lead{margin-bottom:2rem}.line{grid-template-columns:1.25rem minmax(0,1fr);display:grid;position:relative}.line:before{content:"";background:var(--axis);border-radius:2px;width:3px;position:absolute;top:.75rem;bottom:1rem;left:calc(.625rem - 1.5px)}.node{grid-column:1/-1;grid-template-columns:1.25rem minmax(0,1fr);align-content:start;align-items:start;gap:0 1rem;padding-block:.6rem;display:grid}.node .dot{background:var(--plane);border:3px solid var(--ink-2);border-radius:50%;justify-self:center;width:1.25rem;height:1.25rem;margin-top:.15rem;position:relative}.node[data-live] .dot{border-color:var(--onair);background:var(--onair)}.node[data-auto] .dot{border-color:var(--auto)}.node h3{font-size:1.0625rem}.node p{color:var(--ink-2);max-width:44ch;font-size:.9375rem}.node .t{font-family:var(--mono);color:var(--ink);margin-top:.2rem;font-size:.875rem}.span{border-left:3px solid var(--ink-2);color:var(--ink-2);background:var(--plane);border-radius:0 var(--r) var(--r) 0;grid-column:1/-1;margin:.75rem 0 .75rem 2.25rem;padding:.6rem .9rem;font-size:.9375rem}.span strong{color:var(--ink)}@media (width>=72rem){.line{grid-template-rows:auto auto;grid-template-columns:repeat(7,minmax(0,1fr));column-gap:1.25rem}.line:before{width:auto;height:3px;inset:calc(.625rem - 1.5px) 14.2857% auto .6rem}.node{grid-row:1;grid-template-columns:1fr;gap:.6rem 0;padding-block:0}.node:first-child{grid-column:1}.node:nth-child(2){grid-column:2}.node:nth-child(3){grid-column:3}.node:nth-child(4){grid-column:4}.node:nth-child(5){grid-column:5}.node:nth-child(6){grid-column:6}.node:nth-child(7){grid-column:7}.node .dot{justify-self:start;margin:0}.span{border-left:0;border-top:3px solid var(--ink-2);background:0 0;border-radius:0;grid-row:2;margin:1.75rem 0 0;padding:.6rem 1rem 0 0}.span[data-cols="1-3"]{grid-column:1/4}.span[data-cols="4-7"]{grid-column:4/8}}.table{border:1px solid var(--hairline);border-radius:var(--r);background:var(--surface);overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:.9375rem}th,td{text-align:left;vertical-align:top;border-bottom:1px solid var(--hairline);padding:.6rem .8rem}th{color:var(--ink);background:var(--surface-2);font-weight:600}tbody tr:last-child td{border-bottom:0}td.v{white-space:nowrap;font-weight:600}td.v[data-v=yes]{color:var(--ink)}td.v[data-v=partial],td.v[data-v=no],td.v[data-v=not\ verified]{color:var(--ink-2);font-weight:400}td .note{color:var(--ink-2);white-space:normal;margin-top:.15rem;font-size:.875rem;font-weight:400;display:block}.table-wide table{min-width:52rem}.compare-home td:first-child,.compare-home th:first-child{min-width:11rem}.routes{gap:2rem;display:grid}.route{border-top:1px solid var(--hairline);align-content:start;gap:.75rem;padding-top:1rem;display:grid}.route .platform{color:var(--ink-2);font-size:.875rem}.route h3{font-size:1.25rem}.route .quickest{color:var(--auto);font-weight:600}.route p{color:var(--ink-2);font-size:1rem}.route ul{color:var(--ink-2);padding-inline-start:1.1rem;font-size:.9375rem}@media (width>=72rem){.routes{grid-template-columns:repeat(3,minmax(0,1fr));gap:2.5rem}}.downloads{gap:.6rem;margin-top:1rem;padding:0;display:grid}.downloads li{list-style:none}.downloads .file{font-family:var(--mono);color:var(--ink-2);overflow-wrap:anywhere;font-size:.8125rem;display:block}.faq{gap:1.75rem 3rem;display:grid}.faq>div{max-width:60ch}.faq h3,.faq h2{margin-bottom:.4rem;font-size:1.1875rem}.faq p{color:var(--ink-2)}.faq p+p{margin-top:.5em}@media (width>=72rem){.faq{columns:2;column-gap:3rem;display:block}.faq>div{break-inside:avoid;margin-bottom:1.75rem}}.foot{border-top:1px solid var(--hairline);color:var(--ink-2);padding-block:2.5rem 3rem;font-size:.9375rem}.foot .wrap{gap:2rem;display:grid}.foot h2{color:var(--ink);margin-bottom:.5rem;font-size:1rem}.foot ul{gap:.35rem;padding:0;list-style:none;display:grid}.foot .licence{border-top:1px solid var(--hairline);grid-column:1/-1;gap:.75rem;padding-top:1.5rem;display:grid}@media (width>=48rem){.foot .wrap{grid-template-columns:repeat(3,minmax(0,1fr))}}.sources{color:var(--ink-2);font-size:.875rem}.sources li+li{margin-top:.25rem}.sources a{overflow-wrap:anywhere}.choose{max-width:var(--measure);gap:1rem;display:grid}.choose dt{font-weight:600}.choose dd{color:var(--ink-2);margin:.15rem 0 0}.page-title{padding-block:2.5rem .5rem}.page-title .lead{margin-top:.75rem}.first{counter-reset:first;gap:.9rem 2.5rem;margin:0;padding:0;list-style:none;display:grid}.first li{counter-increment:first;grid-template-columns:2rem minmax(0,1fr);gap:.15rem 0;max-width:44rem;display:grid}.first li:before{content:counter(first);font-family:var(--mono);color:var(--muted);grid-row:1/3;padding-top:.15rem}.first li a{font-size:1.0625rem;font-weight:600}.first li span{color:var(--ink-2);font-size:1rem}.groups-nav{border-top:1px solid var(--hairline);margin-top:2rem;padding-top:1.25rem;font-size:.9375rem}.groups-nav p{margin-bottom:.4rem;font-weight:600}.groups-nav ul{flex-wrap:wrap;gap:.35rem 1.25rem;padding:0;list-style:none;display:flex}.feat-group{align-items:start;gap:2rem;display:grid}.feat-list{max-width:var(--measure);gap:0;display:grid}.feat{border-top:1px solid var(--hairline);padding-block:1.1rem;scroll-margin-top:1rem}.feat h3{margin-bottom:.35rem}.feat p{color:var(--ink-2);font-size:1rem}.feat .feat-link{margin-top:.4rem;font-size:.9375rem}.feat-media{grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));align-items:start;gap:1.5rem;display:grid}.feat-media>.frame:not([data-size=phone]){grid-column:1/-1}@media (width>=72rem){.feat-group[data-media=yes]{grid-template-columns:minmax(0,6fr) minmax(0,6fr);gap:3rem}.feat-media{position:sticky;top:1.5rem}.first{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=100rem){.feat-group[data-media=yes]{grid-template-columns:minmax(0,5fr) minmax(0,7fr)}}.next{background:var(--surface);border-bottom:1px solid var(--hairline)}.planned{gap:1.5rem 3rem;display:grid}.planned>div{border-top:1px solid var(--hairline);max-width:44rem;padding-top:1rem;scroll-margin-top:1rem}.planned dt{font-size:1.1875rem;font-weight:600}.planned dd{color:var(--ink-2);margin:.35rem 0 0}.planned .today{font-size:.9375rem}.not-yet{font-family:var(--mono);color:var(--ink);border:1px solid var(--axis);vertical-align:.15em;border-radius:999px;margin-inline-start:.5rem;padding:.05rem .6rem;font-size:.8125rem;font-weight:400;display:inline-block}@media (width>=72rem){.planned{grid-template-columns:repeat(2,minmax(0,1fr))}}.feat-grid{gap:1.5rem 2.5rem;display:grid}.feat-grid>div{border-top:1px solid var(--hairline);padding-top:1rem}.feat-grid h3{margin-bottom:.35rem;font-size:1.0625rem}.feat-grid p{color:var(--ink-2);font-size:1rem}.feat-grid .link{margin-top:.4rem;font-size:.9375rem;display:inline-block}@media (width>=48rem){.feat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=72rem){.feat-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}.try-hero{padding-block:2.5rem 2rem}.try-hero .wrap{align-items:start;gap:2rem;display:grid}.try-copy{justify-items:start;gap:1.25rem;max-width:40rem;display:grid}.try-copy h1{max-width:16ch}.try-copy .sub{color:var(--ink-2);max-width:44ch;font-size:clamp(1.0625rem,1rem + .4vw,1.25rem)}.try-copy .try-note{color:var(--ink-2);max-width:48ch;font-size:.9375rem}.try-media{min-width:0}@media (width>=72rem){.try-hero{padding-block:4rem 3rem}.try-hero .wrap{grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:3rem}}.key{font-family:var(--mono);text-align:center;min-width:1.9rem;color:var(--ink);background:var(--surface-2);border:1px solid var(--axis);vertical-align:.1em;white-space:nowrap;border-bottom-width:2px;border-radius:5px;padding:.3rem .5rem;font-size:.8125rem;font-weight:400;line-height:1;display:inline-block}p .key{min-width:1.6rem;padding:.2rem .4rem;font-size:.75rem}.cast{gap:1.5rem 2.5rem;display:grid}.cast>div{border-top:1px solid var(--hairline);max-width:44rem;padding-top:1rem}.cast dt{font-size:1.0625rem;font-weight:600}.cast dd{color:var(--ink-2);margin:.15rem 0 0;font-size:1rem}.cast dd.role{color:var(--ink);font-size:.9375rem}@media (width>=48rem){.cast{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=72rem){.cast{grid-template-columns:repeat(5,minmax(0,1fr))}}.steps{counter-reset:steps;gap:0;margin:0;padding:0;list-style:none;display:grid}.steps li{border-top:1px solid var(--hairline);counter-increment:steps;grid-template-columns:2.25rem minmax(0,1fr);grid-template-areas:"n keys""n step""n lamp";gap:.5rem 0;padding-block:1.25rem;display:grid}.steps li:before{content:counter(steps);font-family:var(--mono);color:var(--muted);grid-area:n;padding-top:.15rem}.steps .keys{flex-wrap:wrap;grid-area:keys;align-self:start;align-items:center;gap:.35rem;display:flex}.steps .keys .plus,.steps .keys .then{color:var(--muted);font-size:.875rem}.steps .keys .then{margin-inline:.25rem}.steps .step{grid-area:step;max-width:60ch}.steps .step h3{margin-bottom:.3rem;font-size:1.0625rem}.steps .step p{color:var(--ink-2);font-size:1rem}.steps .lamp{grid-area:lamp;line-height:0}.steps .lamp img{width:auto;height:2rem}.steps .lamp img[src*=chip-]{height:1.5rem;margin-top:.25rem}.steps .lamp img[data-theme=light],:root[data-theme=light] .steps .lamp img[data-theme=dark]{display:none}:root[data-theme=light] .steps .lamp img[data-theme=light]{display:inline}@media (width>=48rem){.steps li{grid-template-columns:2.25rem 14rem minmax(0,60ch) auto;grid-template-areas:"n keys step lamp";justify-content:start;align-items:start;gap:0 1.5rem}.steps .keys{padding-top:.15rem}.steps .lamp{padding-top:.1rem}}.hero-media .try-cta{color:var(--ink-2);max-width:var(--measure);font-size:.9375rem}
