.figwrap[data-astro-cid-ymfy6l6f]{margin:2em 0}.figscroll[data-astro-cid-ymfy6l6f]{background:var(--surface);border:1px solid var(--rule-soft);padding:16px;overflow-x:auto}figcaption[data-astro-cid-ymfy6l6f]{color:var(--muted);margin-top:10px;font-size:14px;line-height:1.5}.figwrap{--font-mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--ios:#5444d0;--ios-soft:#e3e0fa;--and:#0b7f69;--and-soft:#d5f0e8;--accent-soft:#fbe0d3;--line:var(--rule-soft)}:root[data-theme=dark] .figwrap{--ios:#a39aff;--ios-soft:#2a2652;--and:#41c9a6;--and-soft:#173c33;--accent-soft:#3d2716}@media (prefers-color-scheme:dark){:root:not([data-theme]) .figwrap{--ios:#a39aff;--ios-soft:#2a2652;--and:#41c9a6;--and-soft:#173c33;--accent-soft:#3d2716}}.figwrap .fig{width:100%;min-width:600px;height:auto;display:block}.fig text{fill:var(--ink)}.fig .t{font:600 17px var(--font-display)}.fig .s{font:400 13.5px var(--font-mono);fill:var(--muted)}.fig .s.strong{fill:var(--ink);font-weight:500}.fig .m{font:500 13.5px var(--font-mono)}.fig .h{font:700 22px var(--font-display)}.fig .label{font:500 12px var(--font-mono);letter-spacing:.1em;fill:var(--muted)}.fig .ios-c{fill:var(--ios)}.fig .and-c{fill:var(--and)}.fig .box{fill:var(--surface);stroke:var(--line);stroke-width:1.5px}.fig .box.ios{stroke:var(--ios)}.fig .box.and{stroke:var(--and)}.fig .box.ios.soft{fill:var(--ios-soft);stroke:none}.fig .box.and.soft{fill:var(--and-soft);stroke:none}.fig .box.app{fill:var(--bg);stroke-dasharray:0}.fig .box.hw{fill:var(--bg)}.fig .chip.ios .box{stroke:var(--ios)}.fig .chip.and .box{stroke:var(--and)}.fig .pins{stroke:var(--muted);stroke-width:2px}.fig .divider{stroke:var(--line);stroke-dasharray:4 6}.fig .flow{stroke:var(--muted);stroke-width:1.5px;fill:none;marker-end:none}.fig .ghost{fill:none;stroke:var(--accent);stroke-width:1.5px;stroke-dasharray:6 5}.fig .ghost-t{fill:var(--accent)}.fig .zone{fill:var(--bg);stroke:var(--line)}.fig .zone.dev{stroke:var(--accent);stroke-dasharray:6 5}.fig .box.dev{stroke:var(--accent)}.fig .rail{stroke:var(--line);stroke-width:2px}.fig .token{fill:var(--accent)}.fig .tok{stroke:var(--line);stroke-width:1.5px;fill:var(--surface)}.fig .tok.in{fill:var(--ios-soft);stroke:var(--ios)}.fig .tok.out{fill:var(--and-soft);stroke:var(--and)}.fig .kv{fill:var(--ios-soft);stroke:var(--ios);stroke-width:1px}.fig .kv.dec{fill:var(--and-soft);stroke:var(--and)}.fig .readbar{fill:none;stroke:var(--accent);stroke-width:2.5px;opacity:0;width:408px}.fig .cloud{fill:var(--bg);stroke:var(--line);stroke-width:1.5px}.fig .phone{fill:var(--bg);stroke:var(--ink);stroke-width:2.5px}.fig .notch{fill:var(--ink)}.fig .box.private{fill:var(--accent-soft);stroke:var(--accent)}.fig .wire{stroke:var(--line);stroke-width:2px;fill:none;stroke-dasharray:3 5}.fig .pkt rect{fill:var(--accent)}.fig .pkt text{fill:var(--surface);font-size:12px}.fig .pkt.task{opacity:0;transform:translate(465px,132px)}.fig .pkt.ans{transform:translate(465px,132px)}.fig .priv{fill:var(--accent);opacity:0}.fig .ok{fill:var(--and)}.fig .q{stroke:var(--ink)}.fig .ans{fill:var(--and-soft);stroke:var(--and)}@keyframes f2-run{0%{transform:translate(0)}85%,to{transform:translate(882px)}}@keyframes f3-in{0%{fill:var(--surface)}4%{fill:var(--accent)}30%{fill:var(--accent)}34%{fill:var(--ios-soft)}97%{fill:var(--ios-soft)}to{fill:var(--surface)}}@keyframes f3-pre{0%{opacity:0}12%{opacity:0}16%{opacity:1}97%{opacity:1}to{opacity:0}}@keyframes f3-apre{0%{opacity:0}8%{opacity:0}10%{opacity:1}28%{opacity:1}31%{opacity:0}to{opacity:0}}@keyframes f3-adec{0%{opacity:0}31%{opacity:0}33%{opacity:1}93%{opacity:1}95%{opacity:0}to{opacity:0}}@keyframes f3-out0{0%{fill:var(--surface)}40%{fill:var(--surface)}41%{fill:var(--accent)}44%{fill:var(--and-soft)}97%{fill:var(--and-soft)}to{fill:var(--surface)}}@keyframes f3-dec0{0%{opacity:0}41%{opacity:0}42%{opacity:1}97%{opacity:1}to{opacity:0}}@keyframes f3-out1{0%{fill:var(--surface)}97%{fill:var(--and-soft)}to{fill:var(--surface)}52.5%{fill:var(--surface)}53.5%{fill:var(--accent)}56.5%{fill:var(--and-soft)}}@keyframes f3-dec1{0%{opacity:0}97%{opacity:1}to{opacity:0}53.5%{opacity:0}54.5%{opacity:1}}@keyframes f3-out2{0%{fill:var(--surface)}65%{fill:var(--surface)}66%{fill:var(--accent)}69%{fill:var(--and-soft)}97%{fill:var(--and-soft)}to{fill:var(--surface)}}@keyframes f3-dec2{0%{opacity:0}66%{opacity:0}67%{opacity:1}97%{opacity:1}to{opacity:0}}@keyframes f3-out3{0%{fill:var(--surface)}97%{fill:var(--and-soft)}to{fill:var(--surface)}77.5%{fill:var(--surface)}78.5%{fill:var(--accent)}81.5%{fill:var(--and-soft)}}@keyframes f3-dec3{0%{opacity:0}97%{opacity:1}to{opacity:0}78.5%{opacity:0}79.5%{opacity:1}}@keyframes f3-out4{0%{fill:var(--surface)}90%{fill:var(--surface)}91%{fill:var(--accent)}94%{fill:var(--and-soft)}97%{fill:var(--and-soft)}to{fill:var(--surface)}}@keyframes f3-dec4{0%{opacity:0}91%{opacity:0}92%{opacity:1}97%{opacity:1}to{opacity:0}}@keyframes f3-read{0%{opacity:0;width:0}31%{opacity:0;width:0}32%{opacity:1;width:0}38%{opacity:1;width:272px}40%{opacity:0;width:272px}57%{opacity:1;width:0}63%{opacity:1;width:340px}65%{opacity:0;width:340px}82%{opacity:1;width:0}88%{opacity:1;width:408px}90%{opacity:0;width:408px}to{opacity:0;width:0}40.1%{opacity:0;width:0}44.5%{opacity:1;width:0}50.5%{opacity:1;width:306px}52.5%{opacity:0;width:306px}52.6%{opacity:0;width:0}65.1%{opacity:0;width:0}69.5%{opacity:1;width:0}75.5%{opacity:1;width:374px}77.5%{opacity:0;width:374px}77.6%{opacity:0;width:0}90.1%{opacity:0;width:0}}@keyframes f4-task{0%{opacity:0;transform:translate(600px,132px)}4%{opacity:1;transform:translate(640px,132px)}24%{opacity:1;transform:translate(400px,132px)}28%{opacity:0;transform:translate(380px,132px)}to{opacity:0;transform:translate(380px,132px)}}@keyframes f4-ans{0%{opacity:0;transform:translate(400px,132px)}50%{opacity:0;transform:translate(400px,132px)}53%{opacity:1;transform:translate(400px,132px)}72%{opacity:1;transform:translate(640px,132px)}76%{opacity:0;transform:translate(660px,132px)}to{opacity:0;transform:translate(660px,132px)}}@keyframes f4-priv{0%{opacity:0;transform:translateY(0)}29%{opacity:0;transform:translateY(0)}31%{opacity:1;transform:translateY(0)}45%{opacity:1;transform:translateY(-58px)}48%{opacity:0;transform:translateY(-62px)}to{opacity:0;transform:translateY(0)}}@keyframes f4-book{0%{opacity:0}78%{opacity:0}82%{opacity:1}97%{opacity:1}to{opacity:0}}@keyframes f4-glow{0%{stroke-width:1.5px}76%{stroke-width:1.5px}80%{stroke-width:3px}97%{stroke-width:3px}to{stroke-width:1.5px}}@media (prefers-reduced-motion:no-preference){.fig2 .token{animation:5s ease-in-out infinite f2-run}.fig3 .tok,.fig3 .kv,.fig3 .readbar,.fig3 .arrow3,.fig4 .pkt,.fig4 .priv,.fig4 .booked,.fig4 .box.soft{animation-duration:8s;animation-timing-function:linear;animation-iteration-count:infinite}.fig4 .pkt,.fig4 .priv,.fig4 .booked,.fig4 .box.soft{animation-duration:10s}.fig3 .tok.in{animation-name:f3-in}.fig3 .kv.pre{animation-name:f3-pre}.fig3 .a-pre{animation-name:f3-apre}.fig3 .a-dec{animation-name:f3-adec}.fig3 .readbar{animation-name:f3-read}.fig3 .tok.out[style*=--d\:0]{animation-name:f3-out0}.fig3 .kv.dec[style*=--d\:0]{animation-name:f3-dec0}.fig3 .tok.out[style*=--d\:1]{animation-name:f3-out1}.fig3 .kv.dec[style*=--d\:1]{animation-name:f3-dec1}.fig3 .tok.out[style*=--d\:2]{animation-name:f3-out2}.fig3 .kv.dec[style*=--d\:2]{animation-name:f3-dec2}.fig3 .tok.out[style*=--d\:3]{animation-name:f3-out3}.fig3 .kv.dec[style*=--d\:3]{animation-name:f3-dec3}.fig3 .tok.out[style*=--d\:4]{animation-name:f3-out4}.fig3 .kv.dec[style*=--d\:4]{animation-name:f3-dec4}.fig4 .pkt.task{animation-name:f4-task}.fig4 .pkt.ans{animation-name:f4-ans}.fig4 .priv{animation-name:f4-priv}.fig4 .booked{animation-name:f4-book}.fig4 .box.and.soft{stroke:var(--and);animation-name:f4-glow}}
