/* cApp public documentation. No remote fonts, trackers or runtime application dependencies. */
:root{color-scheme:light;--paper:#fcfcfa;--surface:#fff;--rail:#f5f6f3;--ink:#182c34;--muted:#566970;--line:#dce3df;--brand:#06796c;--tint:#e8f3ee;--code:#142b35;--radius:14px;--header:72px;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:15px;line-height:1.65}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink)}a{color:var(--brand);text-underline-offset:3px}a:hover{text-decoration-thickness:2px}button,input,select{font:inherit}button,a,input,select,summary{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:default}button:focus-visible,a:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #038a83;outline-offset:4px}[hidden]{display:none!important}.skip{position:fixed;left:20px;top:-100px;z-index:100;padding:12px 18px;background:var(--ink);color:white;border-radius:8px}.skip:focus{top:12px}.site-header{height:var(--header);position:sticky;top:0;z-index:40;background:rgba(252,252,250,.97);border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 max(24px,calc((100vw - 1512px)/2));gap:24px}.brand{display:flex;align-items:center;gap:10px;color:var(--ink);text-decoration:none;white-space:nowrap;font-size:18px;font-weight:750;letter-spacing:-.7px}.brand img{width:32px;height:32px;border-radius:9px}.brand-divider{height:22px;width:1px;background:var(--line)}.site-title{text-decoration:none;color:var(--muted);font-size:13px;font-weight:550;white-space:nowrap}.alpha{font-size:9px;color:#47716c;letter-spacing:.13em;border:1px solid #cbded6;padding:2px 6px;border-radius:4px;line-height:1.5}.header-links{display:flex;align-items:center;gap:20px;margin-left:auto}.header-links>a{font-size:12px;text-decoration:none;color:var(--muted)}.search-launch{display:flex;align-items:center;gap:12px;background:var(--surface);border:1px solid var(--line);border-radius:9px;min-width:245px;padding:8px 10px;color:var(--muted);font-size:12px;text-align:left}.search-launch svg{width:16px;height:16px;flex-shrink:0}.search-launch kbd{margin-left:auto}.key,kbd{font-family:inherit;font-size:10px;padding:1px 5px;border:1px solid var(--line);border-radius:4px;color:var(--muted);white-space:nowrap}.menu-button{display:none;background:none;border:1px solid var(--line);border-radius:8px;padding:7px 11px}.layout{max-width:1560px;margin:auto;display:grid;grid-template-columns:242px minmax(0,1fr)}.sidebar{position:sticky;top:var(--header);height:calc(100dvh - var(--header));overflow:auto;padding:34px 20px 38px 28px;border-right:1px solid var(--line);font-size:12px;scrollbar-width:thin}.nav-section{margin-bottom:23px}.nav-section>h2,.nav-section>summary{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:#82908e;font-weight:750;margin:0 0 9px}.nav-section summary{cursor:pointer;list-style-position:outside;margin-left:12px}.nav-section a{display:block;padding:6px 10px;margin:2px 0;color:#4a5d63;text-decoration:none;border-radius:7px;font-weight:500;line-height:1.5}.nav-section a:hover{background:#edf1ed;color:var(--ink)}.nav-section a[aria-current=page]{color:var(--brand);background:var(--tint);font-weight:700;box-shadow:inset 2px 0 var(--brand)}.nav-sub{padding-left:10px;margin:8px 0}.nav-sub summary{font-size:11px;color:#72817f;font-weight:600;margin:7px 0;cursor:pointer}.nav-sub a{font-size:11px;padding-top:5px;padding-bottom:5px}.sidebar-foot{padding:18px 10px 0;border-top:1px solid var(--line);font-size:10px;color:var(--muted)}.sidebar-foot a{display:block;margin:5px 0}.workspace{min-width:0;padding:42px 42px 24px;display:grid;grid-template-columns:minmax(0,780px) 186px;gap:46px;justify-content:center}.workspace.wide{grid-template-columns:minmax(0,990px)}.main{min-width:0;outline:none}.breadcrumb{display:flex;align-items:center;gap:9px;font-size:11px;color:#7c8a88;margin:0 0 22px}.breadcrumb a{color:#6f827e;text-decoration:none}.eyebrow{font-size:10px;font-weight:750;letter-spacing:.15em;text-transform:uppercase;color:var(--brand)}.page-heading{margin-bottom:36px}.page-heading h1{font-size:42px;line-height:1.14;letter-spacing:-1.6px;margin:12px 0 18px;font-weight:720;overflow-wrap:anywhere}.lead{font-size:17px;line-height:1.65;color:var(--muted);margin:0;max-width:780px}.meta{display:flex;gap:9px;flex-wrap:wrap;align-items:center;font-size:10px;color:#788680;margin:22px 0 0}.pill{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;border:1px solid var(--line);border-radius:5px;font-size:10px;font-weight:600;background:var(--surface)}.pill.alpha-status{color:var(--brand);background:var(--tint);border-color:#cee3d8}.pill.planned{background:#fff3df;color:#86602c;border-color:#eddfc9}.article{font-size:14px;line-height:1.85}.article h2{font-size:23px;line-height:1.35;margin:43px 0 14px;letter-spacing:-.5px;font-weight:680}.article h2:first-child{margin-top:0}.article h3{font-size:16px;line-height:1.5;margin:32px 0 10px;letter-spacing:-.2px}.article p{margin:0 0 18px;color:#3c535a}.article li{margin:7px 0;color:#3c535a}.article ul,.article ol{padding-left:23px}.article strong{color:var(--ink);font-weight:670}.article h2,.article h3{scroll-margin-top:calc(var(--header) + 25px)}.heading-link{color:inherit;text-decoration:none}.heading-link:after{content:' #';font-weight:400;color:#a4b5af;opacity:0}.heading-link:hover:after,.heading-link:focus:after{opacity:1}.article :not(pre)>code{font-size:.9em;background:#edf1ed;color:#15695f;padding:2px 5px;border-radius:4px;overflow-wrap:anywhere}.code-block{position:relative;margin:21px 0 27px;border:1px solid #203e49;border-radius:12px;overflow:hidden;background:var(--code)}.code-toolbar{display:flex;align-items:center;min-height:37px;padding:6px 14px;background:#1a3540;border-bottom:1px solid #2e4750;color:#96b5ba;font-size:10px;letter-spacing:.05em}.code-toolbar button{margin-left:auto;background:transparent;border:1px solid #42606b;color:#d3e5e6;border-radius:5px;font-size:10px;padding:2px 8px}.code-toolbar button:hover{background:#31515d}.article pre{margin:0;overflow:auto;padding:21px 21px 23px;line-height:1.75;font-size:11.5px;color:#deeceb;tab-size:2;max-height:680px}.article pre code{font-family:ui-monospace,SFMono-Regular,Consolas,"Liberation Mono",monospace}.article blockquote{margin:24px 0;padding:17px 21px;background:var(--tint);border-left:3px solid var(--brand);border-radius:0 10px 10px 0}.article blockquote p:last-child{margin:0}.table-scroll{max-width:100%;overflow:auto;margin:22px 0 30px;border:1px solid var(--line);border-radius:10px}.article table{border-collapse:collapse;width:100%;text-align:left;font-size:12px;line-height:1.65}.article th{background:var(--rail);color:#667c79;font-size:10px;font-weight:650;padding:12px 14px;border-bottom:1px solid var(--line)}.article td{padding:13px 14px;border-bottom:1px solid #e8ece7;vertical-align:top;min-width:105px;overflow-wrap:anywhere}.article tr:last-child td{border-bottom:0}.article td:first-child{color:var(--ink);font-weight:550;min-width:145px}.article details{border:1px solid var(--line);border-radius:10px;padding:15px 18px;margin:16px 0}.article details summary{font-weight:600;cursor:pointer;color:var(--ink)}.article details[open]>summary{margin-bottom:17px}.toc{position:sticky;top:calc(var(--header) + 43px);height:fit-content;max-height:calc(100dvh - var(--header) - 90px);overflow:auto;border-left:1px solid var(--line);padding-left:20px;font-size:11px;scrollbar-width:thin}.toc strong{display:block;font-size:9px;letter-spacing:.13em;color:#899792;text-transform:uppercase;margin-bottom:12px}.toc a{display:block;text-decoration:none;color:#788984;padding:5px 0;line-height:1.5}.toc a:hover,.toc a.active{color:var(--brand)}.toc a.level-3{font-size:10px;padding-left:10px}.callout{background:#edf4ef;border:1px solid #d4e3d8;padding:15px 19px;border-radius:12px;margin:24px 0;font-size:12px;color:#46615a}.callout strong{display:block;margin-bottom:3px}.scope-line{font-size:11px;color:var(--muted);border-top:1px solid var(--line);padding-top:15px;margin-top:18px;line-height:1.7}.page-footer{border-top:1px solid var(--line);padding-top:25px;margin-top:48px}.page-next{display:grid;grid-template-columns:1fr 1fr;gap:14px}.page-next a{border:1px solid var(--line);border-radius:10px;padding:14px 16px;text-decoration:none;background:white;font-size:12px}.page-next a:hover{border-color:#93b7aa}.page-next small{display:block;color:#91a09a;font-size:9px;text-transform:uppercase;letter-spacing:.1em;margin-bottom:5px}.page-next .next{text-align:right}.footer-line{display:flex;align-items:center;gap:16px;flex-wrap:wrap;font-size:10px;color:#8b9791;margin:27px 0 10px}.footer-line a{color:#7b8d86}.hero{padding:2px 0 18px}.hero-top{display:flex;align-items:center;gap:10px;font-size:10px;letter-spacing:.12em;color:#6e9288;font-weight:700}.hero-top .dot{height:6px;width:6px;background:#0b8b78;border-radius:50%;box-shadow:0 0 0 4px #e5f1ea}.hero h1{font-size:66px;font-weight:720;line-height:1.05;letter-spacing:-3px;margin:23px 0 21px;max-width:650px}.hero h1 span{color:var(--brand)}.hero .lead{max-width:675px;font-size:18px}.hero-actions{display:flex;gap:13px;align-items:center;flex-wrap:wrap;margin:29px 0}.button{display:inline-flex;gap:20px;align-items:center;background:#123e39;border:1px solid #123e39;border-radius:8px;color:#fff;text-decoration:none;font-size:12px;font-weight:650;padding:12px 17px}.button:hover{background:#1c564d;text-decoration:none}.button.secondary{background:white;color:var(--ink);border-color:var(--line)}.hero-flow{display:grid;grid-template-columns:1fr auto 1fr auto 1fr;gap:12px;margin:34px 0 5px;padding:22px 26px;background:#f0f4f0;border:1px solid #dde7df;border-radius:12px}.flow-step small{display:block;font-family:ui-monospace,monospace;font-size:9px;color:#83a399;margin-bottom:5px}.flow-step strong{font-size:12px}.flow-step span{display:block;font-size:10px;color:#788e87;margin-top:3px}.flow-arrow{align-self:center;color:#9bb3a8}.section-title{display:flex;justify-content:space-between;align-items:end;margin:36px 0 17px}.section-title h2{margin:0;font-size:20px;letter-spacing:-.5px}.section-title span{font-size:10px;color:#89998f}.cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:18px 0 37px}.card{display:flex;flex-direction:column;text-decoration:none;color:var(--ink);background:white;border:1px solid var(--line);border-radius:12px;padding:22px;transition:border-color .12s,transform .12s;min-width:0}.card:hover{border-color:#7aab98;transform:translateY(-2px);text-decoration:none}.card-top{display:flex;align-items:center;justify-content:space-between;font-size:9px;font-weight:650;color:#81978c;text-transform:uppercase;letter-spacing:.12em;margin-bottom:16px}.card-top .arrow{font-size:19px;line-height:1;color:#688c7c;font-weight:400}.card h3{font-size:16px;letter-spacing:-.35px;margin:0 0 9px;line-height:1.35}.card p{font-size:12px;line-height:1.7;color:#75867e;margin:0}.card-meta{display:flex;flex-wrap:wrap;gap:7px;margin-top:auto;padding-top:19px;font-size:9px;color:#829187}.catalogue-group{margin-top:35px}.catalogue-group>h2{font-size:19px;letter-spacing:-.4px}.catalogue-group .cards{margin-bottom:25px}.catalogue-group .card{padding:19px}.catalogue-controls{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding:15px 18px;border:1px solid var(--line);background:var(--surface);border-radius:10px;margin:26px 0}.catalogue-controls input{flex:1;min-width:180px;border:0;background:transparent;color:var(--ink);font-size:13px;padding:5px}.catalogue-controls label{font-size:11px;color:var(--muted)}.catalogue-controls select{border:1px solid var(--line);border-radius:6px;background:var(--paper);padding:5px 8px;max-width:100%;font-size:11px}.filter-count{color:var(--muted);font-size:11px}.changelog-entry{border-top:1px solid var(--line);padding:25px 0}.changelog-entry h2{margin:9px 0 12px;font-size:19px}.changelog-entry p{margin:0;color:var(--muted);font-size:13px}.change-meta{display:flex;gap:10px;align-items:center;font-size:10px;color:#8a9990;flex-wrap:wrap}.change-kind{color:var(--brand);background:var(--tint);padding:2px 7px;border-radius:4px;font-size:9px;text-transform:uppercase;letter-spacing:.08em}.changelog-empty{padding:25px 0;color:var(--muted)}.component-changes{margin-top:38px;border-top:1px solid var(--line);padding-top:23px}.component-changes h2{font-size:18px}.component-changes p{font-size:12px;color:var(--muted)}.schema-grid{margin:27px 0}.schema-row{display:block;text-decoration:none;border-top:1px solid var(--line);padding:15px 0;overflow-wrap:anywhere}.schema-row strong{display:block;font-size:12px;font-family:ui-monospace,monospace;color:var(--brand)}.schema-row small{font-size:11px;color:var(--muted)}.search-dialog{width:min(720px,calc(100vw - 28px));max-height:min(78dvh,800px);padding:0;border:1px solid var(--line);border-radius:15px;background:var(--surface);color:var(--ink);box-shadow:0 24px 110px #0b242e38}.search-dialog::backdrop{background:#152f3b69;backdrop-filter:blur(3px)}.search-head{display:flex;gap:15px;padding:20px;border-bottom:1px solid var(--line)}.search-head input{min-width:0;flex:1;font-size:16px;border:0;background:transparent;outline:none}.search-head button{border:1px solid var(--line);background:var(--rail);border-radius:5px;font-size:10px;padding:4px 9px}.search-status{font-size:11px;color:var(--muted);padding:10px 20px}.search-results{overflow:auto;max-height:54dvh;margin:0;padding:0 10px 12px;list-style:none}.search-results a{display:block;border-radius:9px;padding:13px 15px;text-decoration:none;color:var(--ink)}.search-results a:hover,.search-results a:focus{background:var(--tint)}.search-results strong{display:block;font-size:14px;margin:3px 0}.search-results small{display:block;color:var(--brand);font-size:9px;text-transform:uppercase;letter-spacing:.1em}.search-results p{font-size:11px;color:var(--muted);margin:4px 0 0}.search-help{border-top:1px solid var(--line);font-size:10px;color:var(--muted);padding:11px 20px}.menu-shade{display:none}.noscript{font-size:11px;background:var(--tint);padding:12px 20px}.not-found{padding:55px 0}.not-found h1{font-size:48px;letter-spacing:-2px}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(min-width:1450px){.workspace{padding-left:56px;padding-right:48px;gap:55px}.layout{grid-template-columns:260px minmax(0,1fr)}}
@media(max-width:1180px){.workspace{grid-template-columns:minmax(0,820px);padding:34px 34px 24px}.toc{display:none}.site-header{gap:17px}.header-links{gap:15px}.header-links>a{display:none}.hero h1{font-size:58px}}
@media(max-width:820px){:root{--header:64px}.site-header{padding:0 18px;gap:13px}.brand{font-size:17px}.brand img{width:28px;height:28px}.site-title{font-size:11px}.brand-divider,.alpha{display:none}.header-links{gap:9px}.search-launch{min-width:0;padding:9px}.search-launch>span,.search-launch kbd{display:none}.menu-button{display:block;padding:6px 9px;font-size:12px}.layout{display:block}.sidebar{position:fixed;top:var(--header);left:0;bottom:0;width:280px;z-index:50;background:var(--paper);transform:translateX(-105%);transition:transform .15s;padding:25px 22px;box-shadow:20px 0 40px #102e3912}.nav-open .sidebar{transform:translateX(0)}.nav-open .menu-shade{display:block;position:fixed;inset:var(--header) 0 0;background:#122d3955;z-index:45;border:0}.nav-open{overflow:hidden}.workspace{padding:29px 23px 20px;display:block}.hero h1{font-size:54px;letter-spacing:-2.5px}.hero .lead{font-size:16px}.page-heading h1{font-size:36px;letter-spacing:-1.2px}.lead{font-size:15px}.hero-flow{padding:18px;gap:9px}.article{font-size:13.5px}.article h2{font-size:22px}.article pre{font-size:11px;padding:17px}.cards{gap:11px}.card{padding:19px}.page-heading{margin-bottom:29px}}
@media(max-width:510px){.workspace{padding:25px 18px 18px}.brand{gap:7px}.site-title{font-size:10px}.hero h1{font-size:46px;letter-spacing:-2px;margin-top:24px}.hero-top{font-size:9px}.hero-flow{gap:6px;padding:15px 12px}.flow-step strong{font-size:10px}.flow-step span{font-size:9px}.flow-step small{font-size:8px}.flow-arrow{font-size:12px}.cards{grid-template-columns:1fr}.card{padding:21px}.card-top{margin-bottom:12px}.card h3{font-size:17px}.page-heading h1{font-size:32px}.breadcrumb{font-size:10px}.hero-actions .button{font-size:11px;padding:11px 13px;gap:12px}.page-next{gap:9px}.page-next a{padding:12px;font-size:11px}.article th,.article td{padding:11px}.search-head{padding:16px 14px}.catalogue-controls{padding:12px}.catalogue-controls input{width:100%}.footer-line{font-size:9px;gap:11px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
@media print{.site-header,.sidebar,.toc,.page-next,.search-dialog,.menu-shade,.code-toolbar button,.catalogue-controls{display:none!important}.layout,.workspace{display:block;padding:0}.main{max-width:none}.article pre{white-space:pre-wrap;max-height:none;background:#f3f3f3;color:black}.code-block{background:#f3f3f3;border-color:#ccc}.code-toolbar{background:#eee;color:black}.page-heading h1{font-size:30px}.card,.code-block,tr{break-inside:avoid}body{background:white}}

@media(max-width:820px){html:not(.enhanced) .sidebar{position:static;transform:none;width:auto;height:auto;max-height:60vh;box-shadow:none;border-bottom:1px solid var(--line)}html:not(.enhanced) .site-header{position:static}}

/* Directory controls remain optional; all component cards are static links. */
#component-catalogue{scroll-margin-top:calc(var(--header) + 18px)}
.catalogue-controls button,.catalogue-empty button{border:1px solid var(--line);border-radius:6px;background:var(--paper);color:var(--ink);padding:7px 10px;font-size:11px;cursor:pointer}
.catalogue-controls button:hover,.catalogue-empty button:hover{border-color:var(--brand)}
.catalogue-empty{border:1px solid var(--line);border-radius:10px;padding:22px;background:var(--surface);margin:20px 0}
.catalogue-empty h2{font-size:20px;margin:0 0 10px}.catalogue-empty p{font-size:13px;color:var(--muted);line-height:1.7}
@media(max-width:510px){.catalogue-controls input{min-width:0;flex-basis:100%}.catalogue-controls .filter-count{flex-basis:100%}}

/* Long API identifiers must wrap without widening the mobile document. */
.article h2, .article h3 { overflow-wrap: anywhere; }

/* Read-only changelog controls and linkable entries. */
.changelog-entry { scroll-margin-top: calc(var(--header) + 20px); }
.changelog-entry:target { border-left: 3px solid var(--brand); padding-left: 15px; }
.change-link { margin-left: auto; font-size: 11px; text-underline-offset: 3px; }
.filter-notice { font-size: 12px; color: var(--muted); line-height: 1.6; }
.changelog-empty button { border: 1px solid var(--line); border-radius: 6px; background: var(--paper); color: var(--ink); padding: 9px 12px; font-size: 12px; cursor: pointer; }
.changelog-empty button:hover { border-color: var(--brand); }
@media (max-width: 510px) { #changelog-kind, #changelog-component { flex: 1; min-width: 0; } }

.changelog-help { border: 1px solid var(--line); border-radius: 10px; margin: 24px 0; background: var(--surface); }
.changelog-help > summary { padding: 15px 18px; font-size: 13px; font-weight: 600; cursor: pointer; }
.changelog-help > div { padding: 0 18px 18px; }
.changelog-help h2:first-child { margin-top: 14px; }
#component-notes { scroll-margin-top: calc(var(--header) + 20px); }
