/* Contour/VoidInteract reading geometry, adapted to Loaderly Graphite. */
@font-face{font-family:Inter;src:url('/fonts/InterVariable.woff2') format('woff2');font-weight:100 900;font-display:swap}
@font-face{font-family:NotoArabic;src:url('/fonts/NotoSansArabic.ttf') format('truetype');font-weight:100 900;font-display:swap}
:root{--bg:#fafafa;--surface:#f2f2f3;--text:#25272c;--muted:#646b76;--line:#e2e2e5;--green:#495563;--soft:#e9eaed;--scroll-thumb:#b8bbc1;--scroll-hover:#8a8f97;--shadow:0 16px 50px #15151512;color-scheme:light;scroll-padding-top:100px}
html[data-theme=dark]{--bg:#151515;--surface:#202020;--text:#eef1f5;--muted:#aab1bc;--line:#303033;--green:#c4cbd3;--soft:#2a2b2e;--scroll-thumb:#484a50;--scroll-hover:#626670;--shadow:0 16px 50px #0004;color-scheme:dark}
*{box-sizing:border-box;scrollbar-width:thin;scrollbar-color:var(--scroll-thumb) transparent}*::-webkit-scrollbar{width:7px;height:7px}*::-webkit-scrollbar-track{background:transparent}*::-webkit-scrollbar-thumb{background:var(--scroll-thumb);border-radius:12px;border:2px solid var(--bg)}*::-webkit-scrollbar-button{display:none;width:0;height:0}*::-webkit-scrollbar-corner{background:transparent}
body{margin:0;background:var(--bg);color:var(--text);font:400 15px/1.75 Inter,sans-serif}html[lang=ar] body{font-family:NotoArabic,Inter,sans-serif;line-height:1.95}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}a{color:var(--green);text-decoration:none}a:hover{color:var(--text)}a:focus-visible,button:focus-visible,input:focus-visible,summary:focus-visible,textarea:focus-visible{outline:2px solid var(--green);outline-offset:4px}svg{width:20px;height:20px;flex-shrink:0}img{max-width:100%}main{min-width:0;outline:none}button{border:0}p{color:var(--muted)}h1,h2,h3{color:var(--text);line-height:1.3;font-weight:600;letter-spacing:-.025em}h1{font-size:40px;margin:0 0 18px;text-wrap:balance}h2{font-size:25px}h3{font-size:19px}html[lang=ar] h1,html[lang=ar] h2,html[lang=ar] h3{letter-spacing:0;line-height:1.55}html[lang=ar] .eyebrow,html[lang=ar] .brand small{letter-spacing:0}.lead{max-width:68ch;font-size:16px;line-height:1.8;margin:0;color:var(--muted)}.eyebrow{font-size:11px;font-weight:600;letter-spacing:.1em;color:var(--muted);margin-bottom:12px}
.topbar{height:76px;position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:20px;padding:0 32px;background:var(--bg);border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px;color:var(--text);font-size:18px;font-weight:650;line-height:1.3}.brand img{width:38px;height:38px;object-fit:contain}.brand small{display:block;font-size:9px;letter-spacing:.12em;font-weight:500;color:var(--muted);margin-top:5px}.header-actions{display:flex;align-items:center;gap:18px;margin-inline-start:auto}.top-link{color:var(--muted);font-size:13px}.github-link{display:inline-flex;align-items:center;gap:8px}.github-link svg{width:19px;height:19px}.search-button{display:flex;align-items:center;gap:10px;width:252px;padding:8px 12px;border:1px solid var(--line);background:var(--surface);border-radius:9px;color:var(--muted);font-size:12px;text-align:start}.search-button kbd{margin-inline-start:auto}kbd{font:10px Inter,sans-serif;border:1px solid var(--line);padding:2px 5px;border-radius:4px;white-space:nowrap}.language-switch{font-size:12px;white-space:nowrap;padding:7px 10px;border-radius:7px}.language-switch:hover{background:var(--surface)}.icon-button{display:grid;place-items:center;width:36px;height:36px;border-radius:8px;color:var(--muted);background:transparent}.icon-button:hover{background:var(--surface);color:var(--text)}.icon-button:disabled{cursor:default}.mobile{display:none}.skip{position:fixed;inset-inline-start:20px;top:-100px;z-index:100;background:var(--surface);padding:10px 20px}.skip:focus{top:10px}
#sidebar{position:fixed;top:76px;bottom:0;inset-inline-start:0;width:250px;padding:28px 18px;background:var(--bg);overflow-y:auto;overscroll-behavior:contain;z-index:15}.sidebar-footer{padding:18px 12px}.sidebar-footer a{font-size:13px}.sidebar-footer span{display:block;font-size:11px;color:var(--muted);margin-top:8px}.layout{margin-inline-start:250px;max-width:1420px;padding:38px 48px 32px;display:grid;grid-template-columns:minmax(0,800px) 188px;gap:52px;align-items:start}.breadcrumb{display:flex;align-items:center;flex-wrap:wrap;gap:10px;font-size:12px;color:var(--muted);margin-bottom:30px}.breadcrumb a{color:var(--muted)}.article-heading{margin-bottom:30px}.article-body section{margin:40px 0}.article-body h2{scroll-margin-top:96px;margin-bottom:16px}.article-body h2 a{color:var(--text)}.article-body p{max-width:72ch;font-size:15px;line-height:1.85}.toc{position:sticky;top:112px;align-self:start;font-size:12px;max-height:none;overflow:visible;padding:0;border:0}.toc>p{font-size:11px;font-weight:600;margin:0 0 16px;color:var(--text)}.toc>a{display:block;color:var(--muted);padding:7px 0;line-height:1.6}.toc>a.active{color:var(--text);font-weight:600}.toc-help{margin-top:28px;display:grid;gap:7px}.toc-help span{color:var(--muted)}.page-nav{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:60px 0 32px}.page-nav a{padding:18px;border:1px solid var(--line);border-radius:10px;font-size:14px;background:var(--surface)}.page-nav a:last-child{text-align:end}.page-nav small{display:block;font-size:11px;color:var(--muted);margin-bottom:7px}.article-footer{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;padding:24px 0;gap:18px;font-size:11px;color:var(--muted);border:0}
.landing{max-width:1240px;padding:54px 48px 22px;margin:auto}.hero{max-width:840px;margin:20px auto 52px;text-align:center}.hero h1{font-size:clamp(36px,4vw,54px);font-weight:600;letter-spacing:-.04em;line-height:1.18;margin:18px 0}.hero .lead{max-width:630px;margin:auto;font-size:18px;line-height:1.8}.hero-actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin:30px 0 14px}.download-button,.secondary-button{display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:11px 18px;border-radius:9px;font-size:13px;font-weight:550;line-height:1.6;border:1px solid var(--line);background:var(--surface);color:var(--text)}.download-button{background:var(--green);color:var(--bg);border-color:transparent}.download-button:hover{color:var(--bg);filter:brightness(1.1)}.secondary-button:hover{border-color:var(--muted)}.landing-section{margin:72px 0}.start-banner{display:flex;align-items:center;gap:22px;background:var(--surface);border:0;padding:24px;border-radius:14px;margin:48px 0 20px}.start-banner h2{font-size:24px}.start-banner p{font-size:14px}.product-capture{margin:28px 0 40px;background:var(--surface);border:1px solid var(--line);border-radius:12px;overflow:hidden}.capture-open{padding:0;display:block;width:100%;background:transparent;cursor:zoom-in}.product-capture img{display:block;width:100%;height:auto}.product-capture figcaption{display:flex;justify-content:space-between;gap:14px;padding:10px 16px;font-size:11px;color:var(--muted);flex-wrap:wrap}.product-capture figcaption span{white-space:nowrap}.home .product-capture{box-shadow:var(--shadow)}
dialog{margin:auto;border:1px solid var(--line);border-radius:13px;background:var(--bg);color:var(--text);box-shadow:var(--shadow)}dialog::backdrop{background:#0008;backdrop-filter:blur(3px)}#search-dialog{padding:0;width:660px;max-width:calc(100vw - 32px);max-height:85vh;overflow:hidden}.search-top{display:flex;align-items:center;gap:14px;padding:16px 18px;border-bottom:1px solid var(--line)}.search-top input{width:100%;min-width:0;padding:6px 0;border:0;background:transparent;outline:0}.search-foot{display:flex;align-items:center;justify-content:space-between;padding:12px 18px;font-size:11px;color:var(--muted)}#search-results{max-height:58vh;overflow-y:auto;padding:8px}.search-result{display:flex;flex-direction:column;gap:5px;padding:12px;border-radius:8px}.search-result:hover,.search-result:focus-visible{background:var(--surface)}.search-result strong{font-size:14px;font-weight:550;color:var(--text)}.search-result span{font-size:12px;color:var(--muted)}#capture-dialog{padding:12px;max-width:96vw;max-height:96vh}.capture-toolbar{display:flex;gap:8px;justify-content:flex-end;margin-bottom:10px}.capture-canvas{overflow:auto;max-width:90vw;max-height:82vh}#capture-dialog img{display:block;max-width:90vw;max-height:82vh;object-fit:contain}#capture-dialog.actual-size img{max-width:none;max-height:none}.capture-toolbar .secondary-button{padding:6px 12px;font-size:12px}#nav-backdrop{position:fixed;inset:76px 0 0;background:#0008;z-index:14}
/* Reference reveal originates from the mode control. */
::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}::view-transition-new(root){animation:reveal-theme .55s ease-out both}@keyframes reveal-theme{from{clip-path:circle(0 at var(--theme-x,95%) var(--theme-y,38px))}to{clip-path:circle(var(--theme-radius,150vmax) at var(--theme-x,95%) var(--theme-y,38px))}}
@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}.icon-button,.language-switch,.secondary-button,.nav-link{transition:background-color .16s,color .16s}.theme-changing,.theme-changing *{transition:background-color .3s,color .3s,border-color .3s}}
@media(max-width:1250px){.toc{display:none}.layout{grid-template-columns:minmax(0,1fr);max-width:1160px;padding-inline:38px}.header-actions{gap:12px}.search-button{width:210px}}
@media(max-width:800px){.topbar{height:66px;padding:0 18px;gap:8px}.brand{font-size:16px;gap:8px}.brand img{width:32px;height:32px}.header-actions{gap:4px}.search-button{width:34px;height:36px;padding:7px;border:0;background:transparent}.search-button span,.search-button kbd,.top-link:not(.github-link),.github-link span{display:none}.github-link{padding:6px}.language-switch{padding:6px;font-size:11px}.mobile{display:grid}.layout{margin:0;padding:28px 22px;display:block}.layout--overview{padding-top:28px}#sidebar{top:66px;width:280px;visibility:hidden;transform:translateX(-100%);transition:transform .2s,visibility .2s;border-inline-end:1px solid var(--line)}[dir=rtl] #sidebar{transform:translateX(100%)}.nav-open #sidebar,[dir=rtl] .nav-open #sidebar{visibility:visible;transform:none}.nav-open{overflow:hidden}#nav-backdrop{top:66px}.landing{padding:28px 22px}.hero{margin:22px 0 34px}.hero h1{font-size:38px}.hero .lead{font-size:16px}.landing-section{margin:48px 0}.start-banner{padding:20px}.page-nav{gap:12px}.page-nav a{padding:14px;font-size:12px}.product-capture figcaption{font-size:10px}.article-body p{font-size:14px}.brand small{font-size:8px}.hero-actions>*{white-space:nowrap}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}::view-transition-new(root){animation:none}}
.article-footer .footer-link{display:inline-flex;align-items:center;gap:8px;white-space:nowrap}.article-footer .footer-link svg{width:17px;height:17px;flex:none}

.header-navigation{display:flex;align-items:center;gap:18px;margin-inline-start:auto}.header-actions{margin-inline-start:0}.header-navigation .top-link{white-space:nowrap}@media(min-width:1000px){.topbar{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)}.brand{justify-self:start}.header-navigation{margin:0;justify-self:center}.header-actions{justify-self:end}}@media(max-width:999px){.header-navigation{gap:12px}}@media(max-width:800px){.header-navigation{gap:4px}.article-footer .github-link span{display:inline}}
