html:has(body.software-page){scroll-behavior:smooth}.software-page{--sw-accent:#166c66;--sw-muted:#695c4e;--sw-line:#d9cdbc;--sw-paper:#fbf7f0}.software-page>.image-page-hero{margin-inline:0;width:100%;max-width:none;box-shadow:none;border:0;border-radius:0;margin-bottom:36px}.software-page>.image-page-hero img{aspect-ratio:16/9;object-position:center;height:auto}.software-page>.image-page-hero .image-page-hero__label{bottom:38px}.software-page .sw-main{width:min(var(--wiki-content-max-width), calc(100% - var(--wiki-content-gutter)));margin:0 auto 84px}.software-page .sw-main,.software-page .sw-main *{min-width:0}.software-page .sw-main :is(p,li,figcaption){color:var(--text)}.software-page .sw-main p{margin:16px 0}.software-page .sw-main :is(a,code){overflow-wrap:anywhere}.software-page .sw-main a{color:var(--sw-accent);text-underline-offset:4px}.software-page .sw-main :is(a,button,summary,[tabindex]):focus-visible{outline:3px solid var(--sw-accent);outline-offset:5px}.software-page .sw-main :is(h2,h3,h4){color:var(--text)}.software-page .sw-main h3{margin:32px 0 16px}.software-page .sw-main h4{margin:8px 0 14px}.software-page .sw-kicker{color:var(--sw-accent);margin:0 0 14px;font-weight:700}.software-page .sw-intro{grid-template-columns:1.1fr .9fr;align-items:center;gap:clamp(24px,4vw,56px);margin:0 0 64px;display:grid}.software-page .sw-intro h2{margin:0}.software-page .sw-actions{flex-wrap:wrap;align-items:center;gap:16px;margin:22px 0;display:flex}.software-page .sw-main .sw-button{border:1px solid var(--sw-accent);background:var(--sw-accent);color:#fff;font-size:inherit;line-height:var(--wiki-text-leading);cursor:pointer;text-align:left;border-radius:8px;justify-content:center;align-items:center;gap:12px;padding:12px 18px;text-decoration:none;display:inline-flex}.software-page .sw-main .sw-button:hover{background:#11564f}.software-page .sw-text-link{margin:6px 0;font-weight:700;display:inline-block}.software-page .sw-floating-illustration{justify-self:center;width:100%;max-width:500px;margin:0;padding:14px 0;position:relative}.software-page .sw-floating-illustration img{border-radius:24px;width:100%;height:auto;animation:6s ease-in-out infinite sw-float;display:block;box-shadow:0 24px 42px -20px #41301e66}.software-page .sw-floating-illustration.is-paused img{animation-play-state:paused}.software-page .sw-shell{gap:var(--wiki-section-gap,32px);grid-template-columns:minmax(300px,320px) minmax(0,1fr);align-items:start;display:grid}.software-page .sw-article{width:100%}.software-page .sw-section{border:1px solid var(--sw-line);background:#fff;border-radius:18px;margin-bottom:32px;padding:clamp(22px,3vw,42px);scroll-margin-top:88px}.software-page #software-content{scroll-margin-top:80px}.software-page .sw-section-heading{border-bottom:1px solid var(--sw-line);align-items:baseline;gap:16px;margin-bottom:24px;padding-bottom:24px;display:flex}.software-page .sw-section-heading h2{margin:0}.software-page .sw-section-number{color:var(--sw-accent);flex:none;font-weight:700}.software-page .sw-toc{background:var(--sw-paper);border:1px solid var(--sw-line);border-radius:12px;padding:24px 20px;position:sticky;top:84px}.software-page .sw-toc ol{gap:8px;padding:0;list-style:none;display:grid}.software-page .sw-toc a{color:var(--text);border-left:3px solid #0000;align-items:baseline;gap:10px;padding:10px 12px;text-decoration:none;display:flex}.software-page .sw-toc a:hover,.software-page .sw-toc a[aria-current=location]{color:#6f4e37;background:#ede2d1;border-left-color:#9a6742}.software-page .sw-toc a>span{opacity:.75}.software-page .sw-toc .sw-toc-top{border-top:1px solid var(--sw-line);margin-top:16px;padding:12px 5px 0;font-weight:700;text-decoration:underline}.software-page .sw-function-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;display:grid}.software-page .sw-function-card{border:1px solid var(--sw-line);background:var(--sw-paper);border-radius:12px;padding:24px}.software-page .sw-card-index{color:var(--sw-accent);font-weight:700}.software-page .sw-function-card p{margin-bottom:0}.software-page .sw-data-flow{grid-template-columns:repeat(5,minmax(0,1fr));gap:28px;margin:20px 0;padding:0;list-style:none;display:grid}.software-page .sw-data-flow li{border-top:3px solid var(--sw-accent);overflow-wrap:anywhere;background:#edf3ef;padding:16px 12px;position:relative}.software-page .sw-data-flow li:not(:last-child):after{content:"→";color:var(--sw-accent);position:absolute;top:50%;right:-25px;transform:translateY(-50%)}.software-page .sw-data-flow span{color:var(--sw-accent);margin-bottom:12px;font-weight:700;display:block}.software-page .sw-note{border-left:4px solid var(--sw-accent);background:#edf3ef;margin:24px 0;padding:20px 22px}.software-page .sw-development{margin:20px 0;padding:0;list-style:none}.software-page .sw-development>li{border-bottom:1px solid var(--sw-line);grid-template-columns:100px minmax(0,1fr);gap:20px;padding:24px 0;display:grid}.software-page .sw-stage-number{color:var(--sw-accent);font-weight:700}.software-page .sw-development h4{margin-top:0}.software-page .sw-development p{margin-bottom:0}.software-page .sw-overview-figures,.software-page .sw-evidence-grid,.software-page .sw-guide-grid,.software-page .sw-apk-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin-top:24px;display:grid}.software-page .sw-figure{margin:0}.software-page .sw-figure>a{border:1px solid var(--sw-line);background:#f2f4f7;border-radius:10px;padding:12px;display:block}.software-page .sw-figure>img{border:1px solid var(--sw-line);background:#f2f4f7;border-radius:10px;padding:12px}.software-page .sw-app-diagram{max-width:760px;margin:28px auto}.software-page .sw-figure.sw-app-diagram img{max-height:none}.software-page .sw-figure img{object-fit:contain;width:100%;height:auto;max-height:560px;display:block}.software-page .sw-figure figcaption{margin:16px 0 24px}.software-page .sw-overview-figures .sw-figure img{max-height:460px}.software-page .sw-architecture{grid-template-columns:minmax(0,1fr) 130px minmax(0,1fr);gap:18px;margin:24px 0;display:grid}.software-page .sw-architecture>div:not(.sw-transport){border:1px solid var(--sw-line);background:var(--sw-paper);border-radius:12px;padding:24px 18px}.software-page .sw-architecture h3{margin-top:0}.software-page .sw-architecture ul,.software-page .sw-detail ol{padding-left:24px}.software-page .sw-architecture li{margin:12px 0}.software-page .sw-transport{text-align:center;color:var(--sw-accent);align-self:center;gap:16px;display:grid}.software-page .sw-frame{grid-template-columns:1fr 1fr 1.2fr;gap:4px;margin:24px 0;display:grid}.software-page .sw-frame span{border:1px solid var(--sw-line);background:var(--sw-paper);padding:18px}.software-page .sw-frame strong{color:var(--sw-accent);margin-bottom:8px;display:block}.software-page .sw-table-wrap{border:1px solid var(--sw-line);border-radius:10px;width:100%;margin:20px 0;overflow-x:auto}.software-page .sw-table{border-collapse:collapse;table-layout:fixed;width:100%}.software-page .sw-table th,.software-page .sw-table td{border-bottom:1px solid var(--sw-line);text-align:left;vertical-align:top;overflow-wrap:anywhere;padding:16px 14px}.software-page .sw-table th{background:var(--sw-paper)}.software-page .sw-table th:first-child{width:30%}.software-page .sw-table th:nth-child(2){width:21%}.software-page .sw-table tr:last-child :is(th,td){border-bottom:0}.software-page .sw-detail{border:1px solid var(--sw-line);border-radius:10px;margin:24px 0}.software-page .sw-detail summary{cursor:pointer;padding:20px 22px}.software-page .sw-detail>div{padding:0 22px 22px}.software-page .sw-detail li{margin:12px 0}.software-page .sw-detail pre{background:var(--sw-paper);white-space:pre-wrap;overflow-wrap:anywhere;font-size:inherit;border-radius:8px;padding:20px}.software-page .sw-source-line{border-top:1px solid var(--sw-line);margin-top:28px;padding-top:20px}.software-page .sw-evidence-case{grid-template-columns:minmax(0,1fr) minmax(230px,.65fr);align-items:center;gap:32px;display:grid}.software-page .sw-evidence-case h3{margin-top:0}.software-page .sw-connection-figure img{max-height:500px}.software-page .sw-wide-figure img{max-height:none}.software-page .sw-reuse-grid{gap:16px;display:grid}.software-page .sw-reuse-grid>div{border-bottom:1px solid var(--sw-line);padding-bottom:16px}.software-page .sw-reuse-grid h3{margin:16px 0}.software-page .sw-resource-card{border:1px solid var(--sw-line);background:var(--sw-paper);border-radius:12px;padding:24px}.software-page .sw-resource-card h3{margin-top:0}.software-page .sw-demo-card{background:#edf3ef}.software-page .sw-quick-start{padding-left:28px}.software-page .sw-quick-start li{margin:20px 0}.software-page .sw-source-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:28px 0;display:grid}.software-page .sw-source-link{border:1px solid var(--sw-line);border-radius:10px;gap:8px;padding:22px;text-decoration:none;display:grid}.software-page .sw-source-link:hover{background:var(--sw-paper)}.software-page .sw-source-link span{color:var(--text)}.software-page .sw-main [hidden]{display:none!important}@keyframes sw-float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@media (width>=901px){.software-page .sw-toc{isolation:isolate;border:90px solid #0000;border-width:90px 54px;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;border-image-source:url(/assets/BTYbUgnz.png);border-image-slice:400 250 fill;border-image-width:90px 54px;border-image-repeat:stretch;border-radius:0;padding:28px;overflow:visible}.software-page .sw-toc>nav{max-height:calc(100vh - 480px);overflow-y:auto}.software-page .sw-toc a{gap:6px;padding:9px 5px}}@media (width<=1100px){.software-page .sw-architecture{grid-template-columns:1fr}.software-page .sw-transport{grid-template-columns:repeat(2,minmax(0,1fr));padding:10px 0}.software-page .sw-data-flow{grid-template-columns:1fr;gap:30px}.software-page .sw-data-flow li:not(:last-child):after{content:"↓";top:auto;bottom:-28px;right:50%;transform:translate(50%)}}@media (width<=900px){.software-page .sw-intro{grid-template-columns:1fr}.software-page .sw-floating-illustration{max-width:420px}.software-page .sw-shell{flex-direction:column;gap:24px;display:flex}.software-page .sw-toc{z-index:5;border-radius:10px;order:-1;width:100%;padding:12px;position:sticky;top:60px}.software-page .sw-toc ol{flex-wrap:nowrap;gap:8px;display:flex;overflow-x:auto}.software-page .sw-toc li{flex:none}.software-page .sw-toc a{white-space:nowrap;border-bottom:3px solid #0000;border-left:0;padding:8px 10px}.software-page .sw-toc a[aria-current=location]{border-bottom-color:#9a6742}.software-page .sw-section{scroll-margin-top:220px}}@media (width<=600px){.software-page .sw-main{width:calc(100% - 24px)}.software-page>.image-page-hero{margin-top:76px}.software-page>.image-page-hero img{aspect-ratio:4/5;object-position:center;height:auto}.software-page>.image-page-hero .image-page-hero__label{bottom:24px}.software-page .sw-intro{gap:28px;margin-bottom:32px}.software-page .sw-section{margin-bottom:20px;padding:24px 18px}.software-page .sw-section-heading{flex-wrap:wrap;gap:12px}.software-page .sw-function-grid,.software-page .sw-data-flow,.software-page .sw-overview-figures,.software-page .sw-evidence-grid,.software-page .sw-guide-grid,.software-page .sw-apk-grid,.software-page .sw-source-grid,.software-page .sw-evidence-case{grid-template-columns:1fr}.software-page .sw-development>li{grid-template-columns:1fr;gap:12px}.software-page .sw-function-card,.software-page .sw-resource-card{padding:20px 18px}.software-page .sw-frame{grid-template-columns:1fr}.software-page .sw-table th,.software-page .sw-table td{padding:14px 8px}.software-page .sw-detail summary{padding:18px 14px}.software-page .sw-detail>div{padding:0 14px 20px}.software-page .sw-detail pre{padding:14px 10px}.software-page .sw-actions{align-items:stretch}.software-page .sw-actions .sw-button{flex:auto}}@media (prefers-reduced-motion:reduce){html:has(body.software-page){scroll-behavior:auto}.software-page .sw-floating-illustration img{animation:none;transform:none}}@media print{.software-page .sw-toc{display:none}.software-page .sw-shell{display:block}.software-page .sw-section{break-inside:auto}.software-page .sw-detail>div{display:block}.software-page .sw-floating-illustration img{animation:none;transform:none}}.software-page .sw-skip-link{z-index:10;background:#fff;padding:12px;position:absolute;transform:translateY(-200vh)}.software-page .sw-skip-link:focus{position:fixed;top:70px;left:16px;transform:none}.software-page .sw-floating-illustration img{box-shadow:none;background:0 0;border-radius:0}.software-page .sw-evidence-case{grid-template-columns:minmax(0,1fr)}.software-page .sw-response-example{white-space:pre-wrap;background:#fbf4eb;border:1px solid #d9c1ad;border-radius:8px;margin:16px 0;padding:16px 20px;overflow-x:auto}.software-page .sw-code-example pre{color:#eee;background:#080808}.software-page .sw-code-example pre code{color:inherit}.software-page #software-architecture h3{scroll-margin-top:110px}
