/* Android engineering: an operation workbench, runtime ownership and release evidence. */
html.kotlin-document{scroll-padding-top:0}
.kotlin-page{--kt-gutter:max(36px,calc((100vw - 1376px)/2));--gutter:var(--kt-gutter);--kt-ink:#1a2b42;--kt-muted:#52657e;--kt-blue:#315b96;--kt-line:#c6d3e4;--kt-header-height:108px;background:#f2f4f7;color:var(--kt-ink)}
.kotlin-page main{overflow:clip}
.kotlin-page :is(h1,h2,h3,h4){letter-spacing:0;overflow-wrap:anywhere;margin:0}
.kotlin-page h2{font-size:3rem;font-weight:550;line-height:1.22}
.kotlin-page h3{font-size:1.5rem;font-weight:600;line-height:1.4}
.kotlin-page p{font-size:1rem;line-height:1.85;margin:0;overflow-wrap:anywhere}
.kotlin-page p+p{margin-top:15px}
.kotlin-page em{font-style:normal;color:var(--kt-blue)}
.kotlin-page [hidden]{display:none!important}
.kotlin-page .site-header{background:#f2f4f7fa}
.kotlin-page .site-header.on-dark{background:#254c80fa}
.kotlin-page :is(a,button,summary,[tabindex]):focus-visible{outline:2px solid #416daf;outline-offset:5px}
.kotlin-page [data-header-theme="dark"] :is(a,button,[tabindex]):focus-visible{outline-color:#d3e5ff}
.kotlin-page code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.875em;overflow-wrap:anywhere}
.kt-label{display:block;font-size:.75rem;font-weight:650;line-height:1.8;letter-spacing:.045em;color:#536f96}
.kt-button{display:inline-flex;align-items:center;justify-content:space-between;gap:25px;max-width:100%;padding:18px 24px;background:#315b96;color:#fff;border:1px solid #315b96;border-radius:5px;font-size:.9375rem;font-weight:600;line-height:1.65;transition:background .18s,border-color .18s}
.kt-button:hover{background:#244a7e;border-color:#244a7e}
.kt-button svg,.kt-promises svg,.kt-opening-foot svg,.kt-related svg,.kt-contact-action svg{width:23px;height:23px;stroke:currentColor;stroke-width:1.5;flex-shrink:0}
.kt-button-light{background:#eef4fc;border-color:#eef4fc;color:#254c80}
.kt-button-light:hover{background:#d6e5fa;border-color:#d6e5fa}
.kt-section{padding:84px var(--kt-gutter);scroll-margin-top:calc(var(--kt-header-height) + 25px)}
.kt-section-heading{max-width:990px;margin-bottom:35px}
.kt-section-heading h2{margin:20px 0 23px}
.kt-section-heading>p{max-width:730px;color:var(--kt-muted)}
.kt-opening{padding:143px var(--kt-gutter) 0;background:#254c80;color:#f3f7ff}
.kt-breadcrumb{display:flex;align-items:center;flex-wrap:wrap;gap:8px 11px;font-size:.8125rem;line-height:1.7;color:#c5d7ef}
.kt-breadcrumb a:hover{text-decoration:underline;text-underline-offset:5px}
.kt-opening-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:76px;align-items:end;padding:52px 0 64px}
.kt-title-block>.kt-label{color:#c0d4f1}
.kotlin-page .kt-opening h1{display:block;font-size:2.4rem;font-weight:500;line-height:1.3;max-width:none;margin:18px 0 23px;color:#f3f7ff}
.kotlin-page .kt-opening h1>span{display:block;font-size:7.5rem;font-weight:550;line-height:1.1;margin-bottom:10px}
.kt-title-block>p{max-width:550px;color:#d6e3f7;margin-bottom:28px}
.kt-opening-thesis{min-width:0;border-left:1px solid #6d8db7;padding-left:48px}
.kt-thesis-heading{font-size:2.5rem;line-height:1.3;font-weight:500;margin-bottom:28px}
.kt-thesis-heading>span{color:#b6cef0}
.kt-promises{padding:0;margin:0;list-style:none}
.kt-promises li{border-top:1px solid #6384af}
.kt-promises a{display:grid;grid-template-columns:24px minmax(0,1fr) 23px;gap:16px;align-items:start;padding:22px 0}
.kt-promises a>span{font-size:.75rem;line-height:2.2;color:#bdd2ef}
.kt-promises a strong{display:block;font-size:1.0625rem;font-weight:600;line-height:1.65}
.kt-promises a small{display:block;font-size:.875rem;line-height:1.7;color:#bfd3ef;margin-top:5px}
.kt-promises svg{margin-top:3px}
.kt-promises a:hover strong{text-decoration:underline;text-underline-offset:5px}
.kt-opening-foot{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:24px 0;border-top:1px solid #6686b0}
.kt-opening-foot>span{font-size:.75rem;line-height:1.8;letter-spacing:.025em;color:#c0d4ef}
.kt-opening-foot>a{display:flex;align-items:center;gap:24px;font-size:.875rem;line-height:1.7;color:#e0ebfb}
.kt-opening-foot>a:hover{text-decoration:underline;text-underline-offset:5px}
.kt-operation{padding-bottom:78px}
.kt-workbench{border:1px solid #b3c6e0;background:#fcfdff;border-radius:8px;overflow:hidden}
.kt-workbench-heading{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px 28px;padding:23px 30px;background:#e5edf8;border-bottom:1px solid #c1d0e5}
.kt-workbench-heading>span:last-child{font-size:.875rem;line-height:1.75;color:#4d6a91}
.kt-scenario-controls{display:flex;flex-wrap:wrap;gap:9px;padding:24px 30px 0}
.kt-scenario-controls button{font:inherit;font-size:.875rem;line-height:1.6;text-align:left;color:#42618a;border:1px solid #bdcee5;border-radius:4px;background:#f2f6fc;padding:12px 17px;cursor:pointer;min-height:46px;transition:background .2s,border-color .2s,color .2s}
.kt-scenario-controls button:hover{background:#e4edfa;border-color:#6d8cba}
.kt-scenario-controls button[aria-pressed="true"]{background:#315b96;color:#fff;border-color:#315b96}
.kt-scenario{padding:31px 30px 28px}
.kt-scenario+.kt-scenario{border-top:1px solid #bdcfe6}
.kt-workbench.is-enhanced .kt-scenario{border-top:0}
.kt-scenario-intro{display:grid;grid-template-columns:61px minmax(0,1fr);gap:22px;align-items:start;max-width:960px}
.kt-scenario-number{font-size:2.75rem;font-weight:450;line-height:1.15;color:#7796c0}
.kt-scenario-intro h3{color:#294e80;font-size:1.625rem}
.kt-scenario-intro p{color:#526b8c;margin-top:13px;max-width:760px}
.kt-state-track{list-style:none;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));padding:0;margin:30px 0;background:#f4f7fc;border:1px solid #c5d3e6;border-radius:5px}
.kt-state-track>li{position:relative;min-width:0;padding:23px 27px}
.kt-state-track>li+li{border-left:1px solid #c5d3e6}
.kt-state-track>li+li::before{content:"→";position:absolute;top:50%;left:0;transform:translate(-50%,-50%);display:grid;place-items:center;width:24px;height:28px;background:#f4f7fc;color:#5277a8;font-size:1.125rem}
.kt-state-track>li>span{font-size:.75rem;font-weight:600;line-height:1.8;letter-spacing:.02em;color:#5b769c}
.kt-state-track strong{display:block;font-size:1.25rem;font-weight:600;line-height:1.5;color:#345887;margin-top:15px}
.kt-state-track small{display:block;font-size:.875rem;line-height:1.8;color:#536e91;margin-top:9px}
.kt-state-track .kt-state-pending{background:#e2ebf9}
.kt-state-pending strong{color:#254d83}
.kt-state-track .kt-state-pending::before{background:#e2ebf9}
.kt-decision-note{display:grid;grid-template-columns:180px minmax(0,1fr);gap:30px;border-top:1px solid #ccd8e9;padding-top:21px}
.kt-decision-note>strong{font-size:.875rem;line-height:1.9;font-weight:650;color:#406189}
.kt-decision-note p{color:#526b8c;max-width:900px}
.kt-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.kt-runtime{display:grid;grid-template-columns:minmax(0,.78fr) minmax(0,1.7fr);gap:65px;background:#e7edf6;padding-top:72px;padding-bottom:76px}
.kt-runtime-heading h2{margin:20px 0 24px}
.kt-runtime-heading>p{color:#526987;max-width:440px}
.kt-runtime-body{min-width:0}
.kt-runtime-row{display:grid;grid-template-columns:minmax(0,.65fr) minmax(0,1.35fr);gap:32px;padding:26px 0;border-top:1px solid #adc1dd}
.kt-runtime-row:first-child{padding-top:0;border:0}
.kt-runtime-row:last-child{padding-bottom:0}
.kt-runtime-row h3{font-size:1.375rem;color:#305787;margin-top:13px}
.kt-runtime-row p{color:#526987}
.kt-architecture{background:#14253d;color:#edf4ff}
.kt-architecture .kt-label{color:#aec6e7}
.kt-architecture .kt-section-heading>p{color:#b7cbe6}
.kt-architecture em{color:#a7c5ee}
.kt-architecture-intro{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:55px;margin:36px 0 28px}
.kt-architecture-intro h3{font-size:1.875rem;font-weight:500;max-width:440px}
.kt-architecture-intro p{color:#b7cbe6}
.kt-ownership-table{max-width:100%;overflow:auto;border:1px solid #486181;border-radius:5px;scrollbar-color:#789ac7 #1b304e;scrollbar-width:thin}
.kt-ownership-table table{border-collapse:collapse;width:100%;text-align:left;min-width:730px}
.kt-ownership-table caption{padding:17px 25px;text-align:left;font-size:.875rem;line-height:1.8;color:#b5cbe8;background:#1c3352}
.kt-ownership-table th,.kt-ownership-table td{vertical-align:top;border-top:1px solid #486181;font-size:.9375rem;line-height:1.8;padding:21px 25px}
.kt-ownership-table thead th{font-size:.75rem;font-weight:600;letter-spacing:.03em;color:#adc6e8;background:#1b304c;padding-top:13px;padding-bottom:13px}
.kt-ownership-table thead th:first-child{width:28%}
.kt-ownership-table thead th:nth-child(2){width:35%}
.kt-ownership-table tbody th{font-weight:500}
.kt-ownership-table tbody th code{font-size:.875rem;color:#d0e2fc;font-weight:600;white-space:nowrap}
.kt-ownership-table tbody th>span{display:block;color:#a8c3e7;font-size:.8125rem;margin-top:6px}
.kt-ownership-table td{color:#bdd0e9}
.kt-scale-note{display:grid;grid-template-columns:200px minmax(0,1fr);gap:36px;margin-top:28px}
.kt-scale-note p{color:#b7cbe6;max-width:910px}
.kt-integration-grid{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:100px;margin-top:45px}
.kt-device-column h3{font-size:2.375rem;font-weight:550;line-height:1.3;margin:20px 0}
.kt-device-column>p{color:#526987}
.kt-device-ledger{margin:31px 0 0}
.kt-device-ledger>div{display:grid;grid-template-columns:98px minmax(0,1fr);gap:18px;padding:19px 0;border-top:1px solid #c3d1e5}
.kt-device-ledger dt{font-size:.9375rem;font-weight:650;line-height:1.8;color:#365b8b}
.kt-device-ledger dd{font-size:.9375rem;line-height:1.85;margin:0;color:#526987}
.kt-system-column>article{padding:27px 0;border-top:1px solid #b8cbe4}
.kt-system-column>article:first-child{padding-top:0;border:0}
.kt-system-column>article:last-child{padding-bottom:0}
.kt-system-column h3{margin:14px 0 17px}
.kt-system-column p{color:#526987}
.kt-quality{background:#e5edf8}
.kt-proof-list{border-top:1px solid #adc1dc}
.kt-proof-list>article{display:grid;grid-template-columns:42px minmax(0,1.1fr) minmax(0,1fr);gap:30px 37px;align-items:start;padding:30px 0;border-bottom:1px solid #adc1dc}
.kt-proof-index{font-size:1.25rem;color:#6685ae;line-height:1.6}
.kt-proof-list h3{font-size:1.5rem;margin-bottom:13px;color:#315683}
.kt-proof-list p{color:#506887}
.kt-proof-output{padding-left:36px;border-left:1px solid #adc1dc;height:100%}
.kt-proof-output>.kt-label{margin-bottom:13px}
.kt-proof-output p{font-size:.9375rem}
.kt-release{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:75px;margin-top:59px}
.kt-release-heading h3{font-size:2.125rem;font-weight:550;line-height:1.3;margin:20px 0}
.kt-release-heading p{color:#506887}
.kt-release-details{border-top:1px solid #adc1dc;min-width:0}
.kt-release-details details{border-bottom:1px solid #adc1dc}
.kt-release-details summary{position:relative;list-style:none;padding:22px 48px 22px 0;font-size:1.125rem;font-weight:600;line-height:1.6;cursor:pointer;color:#315683}
.kt-release-details summary::-webkit-details-marker{display:none}
.kt-release-details summary>span:first-child{display:block;font-size:.75rem;font-weight:650;line-height:1.8;color:#5e7ba3;margin-bottom:9px}
.kt-details-icon{position:absolute;right:5px;top:31px;font-size:1.75rem;font-weight:400;line-height:1;transition:transform .18s}
.kt-release-details details[open] .kt-details-icon{transform:rotate(45deg)}
.kt-release-details details>div{padding-bottom:24px;color:#506887}
.kt-contact{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:45px 90px;padding-top:74px;padding-bottom:36px}
.kt-contact h2{font-size:2.875rem;margin:21px 0 25px}
.kt-contact p{max-width:650px;color:#52657e}
.kt-contact-action{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:20px}
.kt-contact-action>a:not(.kt-button){display:inline-flex;align-items:center;gap:26px;font-size:.9375rem;line-height:1.7;color:#41618e}
.kt-contact-action>a:not(.kt-button):hover{text-decoration:underline;text-underline-offset:5px}
.kt-related{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:70px;border-top:1px solid #b6c9e2;margin-top:5px;padding-top:26px}
.kt-related>a{display:flex;align-items:center;justify-content:space-between;gap:25px;padding:10px 0;color:#365b8d}
.kt-related>a>span{font-size:.75rem;line-height:1.8;color:#58769f}
.kt-related strong{display:block;font-size:1.125rem;font-weight:600;line-height:1.7;color:#365b8d;margin-top:9px}
.kt-related a:hover strong{text-decoration:underline;text-underline-offset:5px}
@media(min-width:1600px){.kotlin-page .kt-opening h1>span{font-size:8.75rem}.kt-opening-grid{gap:110px}.kt-opening-thesis{padding-left:60px}}
@media(max-width:1199px){
 .kt-opening-grid{gap:44px}.kt-opening-thesis{padding-left:31px}.kt-thesis-heading{font-size:2.1rem}.kotlin-page .kt-opening h1{font-size:2.125rem}.kotlin-page .kt-opening h1>span{font-size:6.5rem}
 .kt-runtime{gap:40px;grid-template-columns:minmax(0,.8fr) minmax(0,1.6fr)}.kt-runtime-row{grid-template-columns:1fr;gap:16px}.kt-runtime-row h3{margin-top:8px}.kt-integration-grid{gap:58px}.kt-release{gap:47px}.kt-contact{gap:40px 48px}.kt-proof-list>article{gap:26px}.kt-proof-output{padding-left:27px}
}
@media(max-width:1023px){
 .kotlin-page{--kt-gutter:30px;--kt-header-height:94px}.kt-opening{padding-top:126px}.kt-opening-grid{padding:40px 0 47px;gap:34px}.kotlin-page .kt-opening h1>span{font-size:5.5rem}.kotlin-page .kt-opening h1{font-size:1.875rem}
 .kt-thesis-heading{font-size:1.875rem}.kt-promises a{grid-template-columns:19px minmax(0,1fr) 21px;gap:10px;padding:19px 0}.kt-promises a strong{font-size:.9375rem}.kt-promises a small{font-size:.8125rem}.kt-promises svg{width:21px}
 .kotlin-page h2{font-size:2.625rem}.kt-section{padding-top:65px;padding-bottom:65px}.kt-runtime{grid-template-columns:1fr;gap:30px}.kt-runtime-heading{max-width:680px}.kt-runtime-heading>p{max-width:660px}.kt-runtime-row{grid-template-columns:minmax(0,.65fr) minmax(0,1.35fr);gap:31px}.kt-runtime-row:first-child{border-top:1px solid #adc1dd;padding-top:26px}
 .kt-state-track>li{padding:20px}.kt-state-track strong{font-size:1.125rem}.kt-architecture-intro{gap:34px}.kt-architecture-intro h3{font-size:1.625rem}.kt-integration-grid{gap:35px}.kt-device-ledger>div{grid-template-columns:1fr;gap:9px}.kt-device-column h3{font-size:2rem}
 .kt-contact{grid-template-columns:1fr;gap:30px}.kt-contact h2{font-size:2.625rem}.kt-contact-action{flex-direction:row;align-items:center;justify-content:flex-start;flex-wrap:wrap;gap:22px 27px}.kt-related{margin-top:15px;gap:35px}.kt-contact.kt-section{padding-bottom:33px}
}
@media(max-width:767px){
 .kotlin-page{--kt-gutter:22px;--kt-header-height:85px}.kt-opening{padding-top:115px}.kt-breadcrumb{font-size:.75rem;gap:5px 8px}.kt-opening-grid{grid-template-columns:1fr;padding:33px 0 31px;gap:42px}
 .kotlin-page .kt-opening h1>span{font-size:6.5rem;line-height:1.05}.kotlin-page .kt-opening h1{font-size:1.875rem;margin-top:18px}.kt-title-block>p{margin-bottom:23px}
 .kt-opening-thesis{border-left:0;padding-left:0}.kt-thesis-heading{font-size:1.875rem;margin-bottom:23px}.kt-promises a{grid-template-columns:25px minmax(0,1fr) 22px;gap:13px;padding:18px 0}.kt-promises a strong{font-size:1rem}.kt-promises a small{font-size:.875rem}.kt-promises li:last-child{border-bottom:1px solid #6384af}
 .kt-opening-foot{align-items:flex-start;flex-direction:column;gap:13px;border-top:0;padding:0 0 26px}.kt-opening-foot>span{font-size:.6875rem}.kt-opening-foot>a{font-size:.8125rem;gap:17px}
 .kt-section{padding-top:51px;padding-bottom:53px}.kotlin-page h2{font-size:2.125rem;line-height:1.25}.kt-section-heading{margin-bottom:27px}.kt-section-heading h2{margin:17px 0 20px}
 .kt-workbench-heading{padding:19px 20px;gap:7px}.kt-workbench-heading>span:last-child{font-size:.8125rem}.kt-scenario-controls{padding:20px 19px 0;gap:8px}.kt-scenario-controls button{font-size:.8125rem;padding:11px 13px;flex-grow:1;text-align:center}
 .kt-scenario{padding:24px 20px}.kt-scenario-intro{grid-template-columns:1fr;gap:13px}.kt-scenario-number{font-size:2.25rem}.kt-scenario-intro h3{font-size:1.375rem}.kt-scenario-intro p{margin-top:13px}
 .kt-state-track{grid-template-columns:1fr;margin:23px 0}.kt-state-track>li{padding:20px 22px}.kt-state-track>li+li{border-left:0;border-top:1px solid #c5d3e6}.kt-state-track>li+li::before{content:"↓";top:0;left:50%;width:27px;height:24px}.kt-state-track strong{margin-top:8px;font-size:1.1875rem}.kt-state-track small{margin-top:5px}
 .kt-decision-note{grid-template-columns:1fr;gap:9px;padding-top:17px}.kt-runtime{gap:26px}.kt-runtime-heading h2{margin:17px 0 20px}.kt-runtime-row{grid-template-columns:1fr;gap:15px;padding:25px 0}.kt-runtime-row h3{font-size:1.4375rem;margin-top:9px}
 .kt-architecture-intro{grid-template-columns:1fr;gap:17px;margin-top:28px}.kt-architecture-intro h3{font-size:1.625rem;max-width:none}.kt-ownership-table caption{padding:15px 18px}.kt-ownership-table th,.kt-ownership-table td{padding:18px}.kt-scale-note{grid-template-columns:1fr;gap:10px;margin-top:23px}
 .kt-integration-grid{grid-template-columns:1fr;gap:37px;margin-top:29px}.kt-device-column h3{font-size:1.875rem;margin:17px 0}.kt-device-ledger{margin-top:23px}.kt-device-ledger>div{grid-template-columns:85px minmax(0,1fr);gap:20px}.kt-system-column>article:first-child{border-top:1px solid #b8cbe4;padding-top:26px}
 .kt-proof-list>article{grid-template-columns:30px minmax(0,1fr);gap:17px;padding:25px 0}.kt-proof-list h3{font-size:1.375rem}.kt-proof-index{font-size:1rem;line-height:1.9}.kt-proof-output{grid-column:2;border-left:0;border-top:1px solid #bdcee5;padding:16px 0 0}.kt-proof-output>.kt-label{margin-bottom:9px}
 .kt-release{grid-template-columns:1fr;gap:27px;margin-top:39px}.kt-release-heading h3{font-size:1.875rem;margin:17px 0}.kt-release-details summary{font-size:1.0625rem;padding-top:20px;padding-bottom:20px}.kt-release-details summary>span:first-child{margin-bottom:8px}
 .kt-contact h2{font-size:2.125rem;margin:17px 0 20px}.kt-contact-action{flex-direction:column;align-items:flex-start;gap:20px}.kt-related{grid-template-columns:1fr;gap:0;padding-top:10px;margin-top:4px}.kt-related>a{padding:20px 0}.kt-related>a+a{border-top:1px solid #c4d2e4}.kt-related strong{font-size:1rem}.kt-contact.kt-section{padding-bottom:23px}
}
@media(max-width:374px){
 .kotlin-page{--kt-gutter:18px}.kotlin-page .kt-opening h1>span{font-size:5.75rem}.kotlin-page .kt-opening h1{font-size:1.625rem}.kotlin-page h2,.kt-contact h2{font-size:1.9375rem}.kt-button{padding:16px 17px;font-size:.875rem;gap:18px}.kt-device-ledger>div{grid-template-columns:1fr;gap:8px}.kt-workbench-heading,.kt-scenario{padding-left:17px;padding-right:17px}.kt-scenario-controls{padding-left:16px;padding-right:16px}
}
@media(prefers-reduced-motion:reduce){
 html.kotlin-document{scroll-behavior:auto}
 .kt-button,.kt-scenario-controls button{transition-duration:.01s}
 .kt-details-icon{transition:none}
}
