:root{--graphite-950:#16191d;--graphite-900:#262b31;--graphite-800:#3a4047;--graphite-700:#4a525b;--graphite-600:#555d67;--graphite-500:#6b7580;--graphite-450:#767f8a;--graphite-400:#8c95a0;--graphite-300:#c9ced4;--graphite-200:#d3d7dc;--graphite-100:#f2f3f5;--white:#fff;--yellow-400:#ffc814;--yellow-500:#f2b705;--yellow-100:#fff4cc;--red-700:#b42318;--red-50:#fdf0ee;--green-700:#1d6b3a;--green-50:#edf6f0;--color-ink:var(--graphite-950);--color-ink-2:var(--graphite-900);--color-paper:var(--white);--color-paper-2:var(--graphite-100);--color-line:var(--graphite-200);--color-line-strong:var(--graphite-450);--color-muted:var(--graphite-600);--color-signal:var(--yellow-400);--color-signal-hover:var(--yellow-500);--color-signal-soft:var(--yellow-100);--color-on-signal:var(--graphite-950);--color-dark:var(--graphite-950);--color-dark-2:var(--graphite-900);--color-on-dark:var(--white);--color-on-dark-muted:var(--graphite-300);--color-dark-line:var(--graphite-800);--color-dark-module:var(--graphite-500);--color-dark-connector:var(--graphite-400);--color-viewer-surface:#181b1f;--color-focus:var(--graphite-950);--color-focus-on-dark:var(--yellow-400);--color-error:var(--red-700);--color-error-surface:var(--red-50);--color-success:var(--green-700);--color-success-surface:var(--green-50);--color-selection:var(--yellow-400);--meter-on:var(--graphite-950);--meter-off-fill:var(--graphite-100);--meter-off-border:var(--graphite-200);--meter-none-border:#9aa1aa;--score-band-high-bg:var(--green-50);--score-band-mid-bg:var(--yellow-100);--score-band-low-bg:var(--red-50);--score-band-none-bg:var(--color-paper-2);--score-dim-high:var(--green-700);--score-dim-mid:#a67c00;--score-dim-low:#c05621;--score-dim-min:var(--red-700);--score-dim-none:var(--graphite-400);--score-bar-high:var(--green-700);--score-bar-mid:var(--score-dim-mid);--score-bar-low:var(--red-700);--score-bar-track:var(--graphite-200);--color-data:var(--graphite-900);--color-data-muted:var(--graphite-600);--color-data-fill:#16191d12;--font-sans:"Archivo", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;--stretch-display:115%;--stretch-h1:112%;--stretch-h2:110%;--stretch-h3:106%;--stretch-brand:112%;--stretch-body:100%;--weight-display:750;--weight-heading:720;--weight-strong:650;--weight-medium:560;--weight-body:400;--text-display:clamp(2.5rem, 1.9rem + 2.47vw, 4rem);--text-h1:clamp(2.125rem, 1.75rem + 1.55vw, 3.25rem);--text-h2:clamp(1.625rem, 1.42rem + .85vw, 2.25rem);--text-h3:clamp(1.25rem, 1.17rem + .33vw, 1.5rem);--text-h4:1.125rem;--text-lead:clamp(1.125rem, 1.06rem + .28vw, 1.25rem);--text-body:1.0625rem;--text-ui:.9375rem;--text-small:.875rem;--text-meta:.8125rem;--text-read:1.125rem;--text-kicker:.75rem;--leading-display:1.02;--leading-heading:1.12;--leading-body:1.55;--leading-read:1.65;--leading-ui:1.4;--tracking-display:-.005em;--tracking-meta:.04em;--tracking-kicker:.08em;--measure:60ch;--measure-read:66ch;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-7:1.75rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--space-14:3.5rem;--space-16:4rem;--space-20:5rem;--space-24:6rem;--section-y:clamp(3rem, 2rem + 4vw, 6rem);--section-y-tight:clamp(2rem, 1.5rem + 2vw, 3.5rem);--container-max:82rem;--gutter:1.25rem;--header-h:4rem;--localnav-h:3rem;--grid-gap:clamp(1.25rem, .9rem + 1.5vw, 2.5rem);--radius:0;--border-hair:1px solid var(--color-line);--border-control:1px solid var(--color-line-strong);--border-ink:1px solid var(--color-ink);--rule-top:3px solid var(--color-ink);--control-h:3rem;--control-h-sm:2.75rem;--shadow-raised:0 -6px 24px #16191d24;--shadow-dropdown:0 8px 24px #16191d1f;--ease-out:cubic-bezier(.22, 1, .36, 1);--duration-fast:.12s;--duration-base:.2s;--z-dropdown:30;--z-tray:40;--z-header:50;--z-menu:60}@media (width>=768px){:root{--gutter:2rem}}@media (width>=1024px){:root{--gutter:3rem}}@media (width>=1280px){:root{--gutter:4rem}}@media (prefers-reduced-motion:reduce){:root{--duration-fast:0s;--duration-base:0s}}@font-face{font-family:Archivo;font-style:normal;font-weight:100 900;font-stretch:62% 125%;font-display:swap;src:url(/fonts/archivo-latin-wdth-normal.woff2)format("woff2-variations"),url(/fonts/archivo-latin-wdth-normal.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Archivo;font-style:normal;font-weight:100 900;font-stretch:62% 125%;font-display:swap;src:url(/fonts/archivo-latin-ext-wdth-normal.woff2)format("woff2-variations"),url(/fonts/archivo-latin-ext-wdth-normal.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono-latin-400-normal.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+2000-206F,U+20AC,U+2122,U+2212,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ibm-plex-mono-latin-500-normal.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+2000-206F,U+20AC,U+2122,U+2212,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/ibm-plex-mono-latin-600-normal.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+2000-206F,U+20AC,U+2122,U+2212,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono-latin-ext-400-normal.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ibm-plex-mono-latin-ext-500-normal.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:calc(var(--header-h) + var(--space-4))}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}body{font-family:var(--font-sans);font-size:var(--text-body);line-height:var(--leading-body);font-weight:var(--weight-body);color:var(--color-ink);background:var(--color-paper);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;overflow-wrap:break-word;caret-color:var(--color-ink);margin:0}img,svg{max-width:100%;display:block}h1,h2,h3,h4,p,ul,ol,dl,dd,figure,blockquote{margin:0}ul[role=list],ol[role=list]{padding:0;list-style:none}button,input,select,textarea{font:inherit;color:inherit}table{border-collapse:collapse}[hidden]{display:none!important}::selection{background:var(--color-selection);color:var(--color-on-signal)}.scroll-x{scrollbar-color:var(--color-line-strong) var(--color-paper-2);scrollbar-width:thin;overflow-x:auto}.t-display,.t-h1,.t-h2,.t-h3,h1,h2,h3{font-family:var(--font-sans);text-wrap:balance}h1,.t-h1{font-size:var(--text-h1);line-height:var(--leading-heading);font-weight:var(--weight-display);font-stretch:var(--stretch-h1);letter-spacing:var(--tracking-display)}.t-display{font-size:var(--text-display);line-height:var(--leading-display);font-weight:var(--weight-display);font-stretch:var(--stretch-display);letter-spacing:var(--tracking-display)}h2,.t-h2{font-size:var(--text-h2);line-height:var(--leading-heading);font-weight:var(--weight-heading);font-stretch:var(--stretch-h2)}h3,.t-h3{font-size:var(--text-h3);line-height:1.2;font-weight:var(--weight-heading);font-stretch:var(--stretch-h3)}h4,.t-h4{font-size:var(--text-h4);line-height:1.3;font-weight:var(--weight-strong)}.t-lead{font-size:var(--text-lead);color:var(--color-ink-2);max-width:60ch;line-height:1.5}.t-small{font-size:var(--text-small);line-height:var(--leading-ui)}.t-muted{color:var(--color-muted)}.t-meta{font-family:var(--font-mono);font-size:var(--text-meta);letter-spacing:0;color:var(--color-muted);font-variant-numeric:tabular-nums;line-height:1.45}.t-label{font-family:var(--font-mono);font-size:var(--text-meta);letter-spacing:var(--tracking-meta);text-transform:uppercase;color:var(--color-muted);font-weight:500}.t-kicker{align-items:center;gap:var(--space-3);font-family:var(--font-mono);font-size:var(--text-kicker);letter-spacing:var(--tracking-kicker);text-transform:uppercase;color:var(--color-muted);font-weight:500;line-height:1.3;display:flex}.t-kicker__index{color:var(--color-ink)}.surface-dark .t-kicker{color:var(--color-on-dark-muted)}.surface-dark .t-kicker__index{color:var(--color-signal)}.num-sans{font-family:var(--font-sans);font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}p,li,dd,figcaption{text-wrap:pretty}.prose{max-width:var(--measure)}.prose>*+*{margin-top:var(--space-5)}.prose h2+*,.prose h3+*,.prose h4+*,.prose h5+*,.prose h6+*{margin-top:var(--space-4)}.prose h2{margin-top:var(--space-12)}.prose h3{margin-top:var(--space-8)}.prose h4,.prose h5,.prose h6{margin-top:var(--space-7)}.prose>:first-child{margin-top:0}.prose ul,.prose ol{padding-left:1.25em}.prose li+li{margin-top:var(--space-2)}.prose li::marker{color:var(--color-muted)}strong,b{font-weight:var(--weight-strong)}code,kbd{font-family:var(--font-mono);font-size:.9em}.num{font-variant-numeric:tabular-nums}a{color:var(--color-ink);text-underline-offset:.22em;text-decoration-thickness:1px}@media (hover:hover) and (pointer:fine){a:hover{text-decoration-thickness:2px}}.link-strong{font-weight:var(--weight-strong)}.link-quiet{text-decoration:none}@media (hover:hover) and (pointer:fine){.link-quiet:hover{text-decoration:underline}}.link-arrow{align-items:center;gap:var(--space-2);font-weight:var(--weight-strong);text-decoration:none;display:inline-flex}@media (hover:hover) and (pointer:fine){.link-arrow:hover{text-decoration:underline}}.link-arrow svg{width:1.1em;height:1.1em;transition:transform var(--duration-fast) var(--ease-out);flex:none}@media (hover:hover) and (pointer:fine){.link-arrow:hover svg{transform:translate(2px)}}.ext-link__keep{white-space:nowrap}.ext-link__icon{vertical-align:-.125em;width:.9em;height:.9em;margin-left:.25em;display:inline-block}:focus{outline:none}:focus-visible{outline:3px solid var(--color-focus);outline-offset:2px}.on-dark :focus-visible,.surface-dark :focus-visible{outline-color:var(--color-focus-on-dark)}.container{width:100%;max-width:calc(var(--container-max) + 2 * var(--gutter));padding-inline:var(--gutter);margin-inline:auto}.section{padding-block:var(--section-y)}.section--tight{padding-block:var(--section-y-tight)}.surface-2{background:var(--color-paper-2)}.surface-dark{background:var(--color-dark);color:var(--color-on-dark)}.surface-dark a:not(.btn){color:var(--color-on-dark)}.rule-top{border-top:var(--rule-top)}.stack>*+*{margin-top:var(--stack-gap,var(--space-4))}.cluster{gap:var(--cluster-gap,var(--space-3));flex-wrap:wrap;align-items:center;display:flex}.grid-12{gap:var(--grid-gap);grid-template-columns:minmax(0,1fr);display:grid}@media (width>=1024px){.grid-12{grid-template-columns:repeat(12,minmax(0,1fr))}}.section-head{justify-content:space-between;align-items:baseline;gap:var(--space-3) var(--space-8);margin-bottom:var(--space-8);flex-wrap:wrap;display:flex}.section-head p{max-width:52ch}.section-head>*{min-width:0}.sec-head{gap:var(--space-4) var(--grid-gap);padding-top:var(--space-4);border-top:var(--border-ink);margin-bottom:var(--space-10);grid-template-columns:minmax(0,1fr);display:grid}.sec-head__main{gap:var(--space-3);grid-template-columns:minmax(0,1fr);align-content:start;min-width:0;display:grid}.sec-head__aside{gap:var(--space-4);grid-template-columns:minmax(0,1fr);align-content:end;justify-items:start;min-width:0;display:grid}.sec-head__aside p{max-width:52ch;color:var(--color-ink-2)}@media (width>=1024px){.sec-head{grid-template-columns:repeat(12,minmax(0,1fr));align-items:start}.sec-head__main{grid-column:1/span 6}.sec-head__aside{padding-top:calc(var(--text-kicker) * 1.3 + var(--space-3) + .35em);grid-column:8/-1}}.surface-dark .sec-head{border-top-color:var(--color-dark-line)}.surface-dark .sec-head__aside p{color:var(--color-on-dark-muted)}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}.skip-link{left:var(--space-4);z-index:100;background:var(--color-signal);color:var(--color-on-signal);padding:var(--space-3) var(--space-4);font-weight:var(--weight-strong);border:var(--border-ink);position:absolute;top:-100px}.skip-link:focus{top:var(--space-2)}.btn{--btn-bg:var(--color-paper);--btn-fg:var(--color-ink);--btn-border:var(--color-ink);justify-content:center;align-items:center;gap:var(--space-3);min-height:var(--control-h);padding:0 var(--space-5);background:var(--btn-bg);color:var(--btn-fg);border:1px solid var(--btn-border);border-radius:var(--radius);font-family:var(--font-sans);font-size:1rem;font-weight:var(--weight-strong);text-align:center;cursor:pointer;transition-property:background-color,color,transform;transition-duration:var(--duration-fast);transition-timing-function:var(--ease-out);line-height:1.2;text-decoration:none;display:inline-flex}.btn svg{flex:none;width:1.15em;height:1.15em}@media (hover:hover) and (pointer:fine){.btn:hover{text-decoration:none}}.btn--primary{--btn-bg:var(--color-signal);--btn-fg:var(--color-on-signal)}@media (hover:hover) and (pointer:fine){.btn--primary:hover{--btn-bg:var(--color-signal-hover)}.btn--secondary:hover{--btn-bg:var(--color-paper-2)}}.btn--ink{--btn-bg:var(--color-ink);--btn-fg:var(--color-on-dark)}@media (hover:hover) and (pointer:fine){.btn--ink:hover{--btn-bg:var(--color-ink-2)}}.btn--ghost{--btn-border:transparent;padding-inline:var(--space-3)}@media (hover:hover) and (pointer:fine){.btn--ghost:hover{--btn-bg:var(--color-paper-2)}}.btn--sm{min-height:var(--control-h-sm);padding-inline:var(--space-4);font-size:var(--text-ui)}.btn--block{justify-content:space-between;width:100%}.btn:active{transition-duration:var(--duration-fast), var(--duration-fast), 0s;transform:translateY(1px)}.btn[disabled]:active,.btn[aria-disabled=true]:active{transform:none}.btn[disabled],.btn[aria-disabled=true]{--btn-bg:var(--color-paper-2);--btn-fg:var(--color-muted);--btn-border:var(--color-line);cursor:not-allowed;transform:none}.btn.is-loading{color:#0000;pointer-events:none;position:relative}.btn--primary.is-loading{--btn-bg:var(--color-signal);--btn-fg:var(--color-on-signal);--btn-border:var(--color-ink)}.btn.is-loading:after{content:"";border:2px solid var(--btn-fg);border-right-color:#0000;width:18px;height:18px;margin:auto;animation:.8s linear infinite spin;position:absolute;inset:0}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.btn.is-loading:after{border-right-color:var(--btn-fg);border-style:dotted;animation:none}}.surface-dark .btn--secondary{--btn-bg:transparent;--btn-fg:var(--color-on-dark);--btn-border:var(--color-on-dark)}@media (hover:hover) and (pointer:fine){.surface-dark .btn--secondary:hover{--btn-bg:var(--color-dark-2)}}.surface-dark .btn--primary{--btn-border:var(--color-signal)}.field{gap:var(--space-2);display:grid}.field__label{font-weight:var(--weight-strong);font-size:var(--text-ui)}.field__hint{font-size:var(--text-small);color:var(--color-muted)}.field__req{color:var(--color-muted);font-weight:var(--weight-body)}.input,.select,.textarea{width:100%;min-height:var(--control-h);padding:0 var(--space-4);background:var(--color-paper);border:var(--border-control);border-radius:var(--radius);color:var(--color-ink);font-size:1rem}.textarea{padding-block:var(--space-3);resize:vertical;min-height:9rem;line-height:var(--leading-body)}.select{appearance:none;padding-right:var(--space-10);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2316191D' stroke-width='1.75'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;background-size:20px}.input::placeholder,.textarea::placeholder{color:var(--color-muted);opacity:1}@media (hover:hover) and (pointer:fine){.input:hover,.select:hover,.textarea:hover{border-color:var(--color-ink)}}.input:focus-visible,.select:focus-visible,.textarea:focus-visible{outline:3px solid var(--color-focus);outline-offset:0;border-color:var(--color-ink)}.surface-dark .input:focus-visible,.surface-dark .select:focus-visible{outline-color:var(--color-focus-on-dark);outline-offset:2px}.field.has-error .input,.field.has-error .select,.field.has-error .textarea,.input[aria-invalid=true],.textarea[aria-invalid=true],.select[aria-invalid=true]{border-color:var(--color-error);border-width:2px}.field__error{gap:var(--space-2);color:var(--color-error);font-size:var(--text-small);font-weight:var(--weight-strong);align-items:flex-start;display:flex}.field__error svg{flex:none;width:18px;height:18px;margin-top:1px}.choice{align-items:flex-start;gap:var(--space-3);min-height:var(--control-h-sm);padding-block:var(--space-2);cursor:pointer;font-size:var(--text-ui);line-height:1.4;display:flex}.choice input{width:20px;height:20px;accent-color:var(--color-ink);cursor:pointer;flex:none;margin:.05em 0 0}.choice input:disabled+span{color:var(--color-muted)}.choice:has(input:disabled){cursor:not-allowed}fieldset{border:0;min-width:0;margin:0;padding:0}legend{float:left;width:100%;font-weight:var(--weight-strong);padding:0}legend+*{clear:both}.table{width:100%;font-size:var(--text-ui);font-variant-numeric:tabular-nums}.table th,.table td{text-align:left;vertical-align:top;padding:var(--space-3) var(--space-4) var(--space-3) 0;border-top:var(--border-hair)}.table thead th{border-top:0;border-bottom:var(--border-ink);font-family:var(--font-mono);font-size:var(--text-meta);color:var(--color-muted);font-weight:500}.proto-bar{background:var(--color-paper-2);border-bottom:var(--border-hair);font-size:var(--text-small);color:var(--color-ink-2)}.proto-bar .container{gap:var(--space-1) var(--space-4);padding-block:var(--space-2);flex-wrap:wrap;display:flex}.proto-bar strong{font-family:var(--font-mono);font-size:var(--text-meta);letter-spacing:var(--tracking-meta);text-transform:uppercase;font-weight:600}.site-header{z-index:var(--z-header);background:var(--color-dark);color:var(--color-on-dark);position:sticky;top:0}.site-header__inner{align-items:center;gap:var(--space-8);min-height:var(--header-h);display:flex}.brand{color:var(--color-on-dark);padding-block:var(--space-2);flex:none;align-items:center;text-decoration:none;display:inline-flex}.brand-wrap{flex:none;align-items:center;display:inline-flex;position:relative}.logo-menu{margin-top:var(--space-2);background:var(--color-dark);min-width:17rem;color:var(--color-on-dark);border:1px solid var(--color-dark-line);box-shadow:var(--shadow-dropdown);z-index:var(--z-dropdown);padding:var(--space-1) 0;position:absolute;top:100%;left:0}.logo-menu[hidden]{display:none}.logo-menu__item{align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);color:var(--color-on-dark);font-size:var(--text-ui);white-space:nowrap;text-decoration:none;display:flex}.logo-menu__item+.logo-menu__item{border-top:1px solid var(--color-dark-line)}.logo-menu__item:hover,.logo-menu__item:focus-visible{background:var(--color-dark-2)}.logo-menu__icon{flex:none;width:16px;height:16px}.site-nav{align-items:center;gap:var(--space-8);flex:1;display:flex}.site-nav__list{justify-content:center;gap:var(--space-1) var(--space-6);flex:1;margin:0;padding:0;list-style:none;display:flex}.site-nav__link{min-height:var(--header-h);color:var(--color-on-dark);font-size:var(--text-ui);border-top:3px solid #0000;border-bottom:3px solid #0000;align-items:center;text-decoration:none;display:inline-flex}@media (hover:hover) and (pointer:fine){.site-nav__link:hover{border-bottom-color:var(--color-dark-connector)}}.site-nav__link[aria-current=page],.site-nav__link[aria-current=true]{border-bottom-color:var(--color-signal)}.site-nav__contact{color:var(--color-on-dark);font-size:var(--text-ui);font-weight:var(--weight-strong);text-underline-offset:.3em}@media (width>=1120px){.site-nav__contact{min-height:2.5rem;padding:0 var(--space-4);border:1px solid var(--color-dark-module);transition:border-color var(--duration-fast) var(--ease-out), background-color var(--duration-fast) var(--ease-out);align-items:center;text-decoration:none;display:inline-flex}@media (hover:hover) and (pointer:fine){.site-nav__contact:hover{border-color:var(--color-on-dark);background:var(--color-dark-2)}}.site-nav__contact[aria-current=page]{border-color:var(--color-signal);box-shadow:inset 0 -3px 0 var(--color-signal)}}.menu-toggle{align-items:center;gap:var(--space-2);min-height:var(--control-h-sm);padding:0 var(--space-3);color:var(--color-on-dark);border:1px solid var(--color-dark-line);cursor:pointer;font-size:var(--text-ui);font-weight:var(--weight-strong);transition-property:border-color,transform;transition-duration:var(--duration-fast);transition-timing-function:var(--ease-out);background:0 0;display:none}.menu-toggle:active{transition-duration:var(--duration-fast), 0s;transform:translateY(1px)}.menu-toggle svg{width:20px;height:20px}@media (hover:hover) and (pointer:fine){.menu-toggle:hover{border-color:var(--color-dark-connector)}}.menu-toggle .icon-close,.menu-toggle[aria-expanded=true] .icon-open{display:none}.menu-toggle[aria-expanded=true] .icon-close{display:block}@media (width<=1119px){.menu-toggle{display:inline-flex}.site-nav{background:var(--color-dark);border-top:1px solid var(--color-dark-line);padding:var(--space-2) var(--gutter) var(--space-8);max-height:calc(100dvh - var(--header-h));flex-direction:column;align-items:stretch;gap:0;position:absolute;top:100%;left:0;right:0;overflow-y:auto}.js .site-nav:not([data-open]),html:not(.js) .menu-toggle{display:none}html:not(.js) .site-header{position:relative}html:not(.js) .site-header__inner{flex-wrap:wrap;row-gap:0}html:not(.js) .site-nav{flex-basis:100%;max-height:none;padding-inline:0;position:static;overflow:visible}.js .site-nav{transition-property:opacity,transform;transition-duration:var(--duration-fast), var(--duration-base);transition-timing-function:var(--ease-out)}.js .site-nav[data-motion=from],.js .site-nav[data-motion=out]{opacity:0;transform:translateY(-.5rem)}.js .site-nav[data-motion=out]{transition-duration:var(--duration-fast)}.site-nav__list{flex-direction:column;gap:0}.site-nav__link{width:100%;min-height:3.5rem;font-size:1.25rem;font-weight:var(--weight-strong);font-stretch:var(--stretch-h3);border-top:0;border-bottom:1px solid var(--color-dark-line)}.site-nav__link[aria-current=page]{border-bottom-color:var(--color-dark-line);box-shadow:inset 4px 0 0 var(--color-signal);padding-left:var(--space-4)}.site-nav__contact{margin-top:var(--space-6);min-height:var(--control-h);padding:0 var(--space-5);background:var(--color-signal);color:var(--color-on-signal);justify-content:space-between;align-items:center;text-decoration:none;display:inline-flex}}.site-search{align-items:center;margin-left:auto;display:flex}.site-search__toggle{min-height:var(--control-h-sm);min-width:var(--control-h-sm);padding:0 var(--space-2);color:var(--color-on-dark);border:1px solid var(--color-dark-line);cursor:pointer;background:0 0;justify-content:center;align-items:center;display:none}.site-search__toggle svg{width:20px;height:20px}.site-search__toggle-open,.site-search__toggle-close{align-items:center;display:inline-flex}.site-search__toggle-close,.site-search__toggle[aria-expanded=true] .site-search__toggle-open{display:none}.site-search__toggle[aria-expanded=true] .site-search__toggle-close{display:inline-flex}@media (hover:hover) and (pointer:fine){.site-search__toggle:hover{border-color:var(--color-dark-connector)}}.site-search__form{align-items:stretch;width:100%;display:flex;position:relative}.site-search__input{width:100%;min-height:var(--control-h-sm);padding:0 var(--space-3) 0 var(--space-10);background-color:var(--color-dark-2);color:var(--color-on-dark);border:1px solid var(--color-dark-line);font-family:var(--font-sans);font-size:var(--text-ui);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23C9CED4' stroke-width='1.75'%3E%3Ccircle cx='10.5' cy='10.5' r='6'/%3E%3Cpath d='M15 15l5 5'/%3E%3C/svg%3E");background-position:12px;background-repeat:no-repeat;background-size:18px;border-right:0}.site-search__input::placeholder{color:var(--color-on-dark-muted);opacity:1}.site-search__input:focus-visible{outline:3px solid var(--color-focus-on-dark);outline-offset:-3px;border-color:var(--color-on-dark)}.site-search__input[type=search]::-webkit-search-cancel-button{cursor:pointer}.site-search__submit{min-height:var(--control-h-sm);min-width:var(--control-h-sm);background:var(--color-signal);color:var(--color-on-signal);border:1px solid var(--color-signal);cursor:pointer;flex:none;justify-content:center;align-items:center;display:inline-flex}.site-search__submit svg{width:18px;height:18px}@media (hover:hover) and (pointer:fine){.site-search__submit:hover{background:var(--color-signal-hover)}}@media (width>=1280px){.site-search__form{width:14rem}}@media (width<=1279px){.js .site-search__toggle{display:inline-flex}.js .site-search__form{display:none}.js .site-search[data-open] .site-search__form{width:auto;padding:var(--space-3) var(--gutter);background:var(--color-dark);border-top:1px solid var(--color-dark-line);box-shadow:var(--shadow-dropdown);z-index:var(--z-dropdown);display:flex;position:absolute;top:100%;left:0;right:0}}@media (width<=1119px){.site-header__inner{gap:var(--space-2)}}@media (width<=1279px){html:not(.js) .site-search{flex-basis:100%;margin-left:0}html:not(.js) .site-search__form{width:100%}}.crumbs ol{gap:var(--space-1) var(--space-2);font-size:var(--text-small);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.crumbs li{align-items:center;gap:var(--space-2);color:var(--color-muted);display:inline-flex}.crumbs li+li:before{content:"/";color:var(--color-line-strong)}.crumbs a{color:var(--color-ink-2)}.crumbs [aria-current=page]{color:var(--color-muted)}.surface-dark .crumbs li,.surface-dark .crumbs [aria-current=page]{color:var(--color-on-dark-muted)}.surface-dark .crumbs li+li:before{color:var(--color-dark-module)}.surface-dark .crumbs a{color:var(--color-on-dark)}.tag{align-items:center;gap:var(--space-1);font-family:var(--font-mono);letter-spacing:var(--tracking-meta);text-transform:uppercase;border:1px solid var(--color-ink);color:var(--color-ink);white-space:nowrap;vertical-align:middle;padding:.3em .5em;font-size:.75rem;font-weight:500;line-height:1;display:inline-flex}.tag--demo{background:var(--color-paper)}.tag--muted{border-color:var(--color-line-strong);color:var(--color-muted)}.tag--ink{background:var(--color-ink);color:var(--color-on-dark)}.surface-dark .tag{border-color:var(--color-on-dark-muted);color:var(--color-on-dark)}.status{align-items:center;gap:var(--space-2);font-size:var(--text-ui);display:inline-flex}.status svg{flex:none;width:18px;height:18px}.status--verified{font-weight:var(--weight-strong)}.status--unverified,.status--unknown{color:var(--color-ink-2)}.status--missing{color:var(--color-muted)}.meters{display:grid;container:meters/inline-size}.meter-row{align-items:center;gap:var(--space-2) var(--space-4);padding-block:var(--space-2);border-top:var(--border-hair);font-size:var(--text-ui);grid-template-columns:minmax(0,1fr) auto 4.75rem;display:grid}.meter-row:first-child{border-top:0}.meters--ruled .meter-row:first-child{border-top:var(--border-hair)}.meter-row__label{line-height:1.3}.meter-row__value{font-family:var(--font-mono);font-size:var(--text-meta);text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.meter-row__value.is-none{color:var(--color-muted)}.meter-row__note{font-size:var(--text-small);color:var(--color-muted);margin-top:calc(-1 * var(--space-1));grid-column:1/-1}.meter{grid-template-columns:repeat(5,1fr);gap:3px;width:7.5rem;height:10px;display:inline-grid}.meter__seg{background:var(--meter-off-fill);border:1px solid var(--meter-off-border)}.meter__seg.is-on{background:var(--meter-on);border-color:var(--meter-on)}.meter.is-none .meter__seg{border:1px dashed var(--meter-none-border);background:0 0}.meter--sm{gap:2px;width:5.5rem;height:8px}.meter-row--wide{grid-template-columns:minmax(0,1fr) auto 9.5rem}.meter-row__word{font-family:var(--font-sans);color:var(--color-muted);margin-left:var(--space-1)}@container meters (width<=19.99rem){.meter-row:not(.meter-row--sm){grid-template-columns:auto minmax(0,1fr)}.meter-row:not(.meter-row--sm) .meter-row__label{grid-column:1/-1}.meter-row:not(.meter-row--sm) .meter-row__value{text-align:left}}@container meters (width<=17.99rem){.meter-row--sm{grid-template-columns:auto minmax(0,1fr)}.meter-row--sm .meter-row__label{grid-column:1/-1}.meter-row--sm .meter-row__value{text-align:left}}@container meters (width>=20rem) and (width<=24.74rem){.meter-row--wide{grid-template-columns:auto minmax(0,1fr)}.meter-row--wide .meter-row__label{grid-column:1/-1}.meter-row--wide .meter-row__value{text-align:left}}.facts{margin:0}.facts__row{gap:var(--space-3);padding-block:var(--space-2);border-top:var(--border-hair);font-size:var(--text-ui);grid-template-columns:minmax(7.5rem,38%) minmax(0,1fr);line-height:1.4;display:grid}.facts__row:first-child{border-top:0}.facts--ruled .facts__row:first-child{border-top:var(--border-hair)}.facts dt{font-family:var(--font-mono);font-size:var(--text-meta);color:var(--color-muted);padding-top:2px}.facts dd{margin:0}.facts dd small{color:var(--color-muted);font-size:var(--text-small);margin-top:2px;display:block}.facts-inline{gap:var(--space-1) var(--space-4);font-size:var(--text-small);flex-wrap:wrap;margin:0;display:flex}.facts-inline div{gap:var(--space-2);align-items:baseline;display:inline-flex}.facts-inline dt{font-family:var(--font-mono);font-size:var(--text-meta);color:var(--color-muted)}.facts-inline dd{font-weight:var(--weight-medium);margin:0}.sw-list{border-top:var(--border-ink);grid-template-columns:minmax(0,1fr);gap:0;margin:0;padding:0;list-style:none;display:grid;container:swlist/inline-size}.sw-row{gap:var(--space-4);padding-block:var(--space-6);padding-inline:var(--space-4);margin-inline:calc(var(--space-4) * -1);border-bottom:var(--border-hair);transition:background-color var(--duration-fast) var(--ease-out);grid-template-columns:minmax(0,1fr);display:grid;position:relative}.sw-list>.sw-row:nth-child(2n):not(.is-selected){background:var(--color-paper-2)}.sw-row.is-selected{background:var(--color-signal-soft);box-shadow:inset 4px 0 0 var(--color-signal)}.sw-row__main{gap:var(--space-3);align-content:start;min-width:0;display:grid}.sw-row__id{align-items:center;gap:var(--space-3);min-width:0;display:flex}.sw-row__logo{object-fit:contain;flex:none;width:2.5rem;height:2.5rem}.sw-row__logo--none{background:var(--color-paper-2);border:var(--border-hair);font-family:var(--font-mono);color:var(--color-muted);justify-content:center;align-items:center;font-size:1rem;font-weight:600;display:inline-flex}.sw-row__title{gap:2px;min-width:0;display:grid}.sw-row__name{font-size:clamp(1.25rem,1.15rem + .4vw,1.5rem);font-stretch:var(--stretch-h3);hyphens:auto;overflow-wrap:anywhere;line-height:1.15}@container swlist (width<=18rem){.sw-row__name{font-size:1.125rem}}.sw-row__name a{text-decoration:none}@media (hover:hover) and (pointer:fine){.sw-row__name a:hover{text-decoration:underline 2px}}.sw-row__cat{font-family:var(--font-mono);font-size:var(--text-meta);color:var(--color-muted);line-height:1.4}.sw-row__cat-link{color:var(--color-ink-2);border-bottom:1px solid var(--color-line);text-decoration:none}@media (hover:hover) and (pointer:fine){.sw-row__cat-link:hover{border-bottom-color:currentColor}}.sw-row__desc{font-size:var(--text-ui);color:var(--color-ink-2);max-width:64ch;line-height:1.55}.sw-row__badges{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.sw-row__badges .tech-badges{gap:var(--space-2)}.sw-row__cost{font-size:var(--text-small);padding:var(--space-3);background:var(--color-paper-2);color:var(--color-ink-2);line-height:1.5}.sw-row__cost strong{color:var(--color-ink)}.sw-row__side{align-items:end;gap:var(--space-3) var(--space-4);padding-top:var(--space-4);border-top:1px dashed var(--color-line);grid-template-columns:minmax(0,1fr) auto;display:grid}.sw-row__side>.score{min-width:0}.sw-row__read{font-size:var(--text-ui);justify-self:end}.sw-row__signals{align-items:baseline;gap:var(--space-1) var(--space-4);flex-wrap:wrap;grid-column:1/-1;display:flex}.sw-row__signals-label{font-family:var(--font-mono);font-size:var(--text-kicker);letter-spacing:var(--tracking-kicker);text-transform:uppercase;color:var(--color-muted);flex-basis:100%;font-weight:500}.sw-row__signals .sw-row__meta{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.sw-row__foot{align-items:start;column-gap:var(--space-4);grid-column:1/-1;grid-template-columns:minmax(0,1fr) auto;display:grid}.sw-row__more{grid-area:1/1;min-width:0}.sw-row__more[open]{grid-column:1/-1}.sw-row__more>summary{align-items:center;gap:var(--space-2);min-height:var(--control-h-sm);cursor:pointer;font-weight:var(--weight-strong);font-size:var(--text-small);color:var(--color-ink-2);list-style:none;display:inline-flex}.sw-row__more>summary::-webkit-details-marker{display:none}.sw-row__more-label--short{display:none}@media (hover:hover) and (pointer:fine){.sw-row__more>summary:hover{color:var(--color-ink);text-underline-offset:.22em;text-decoration:underline}}.sw-row__more>summary svg{width:18px;height:18px;transition:transform var(--duration-fast) var(--ease-out)}.sw-row__more[open]>summary svg{transform:rotate(180deg)}.sw-row__expanded{gap:var(--space-6);padding:var(--space-5) 0 var(--space-2);border-top:var(--border-hair);margin-top:var(--space-2);display:grid}.compare-toggle{font-weight:var(--weight-strong);grid-area:1/2;place-self:start end}@container swlist (width<=35.99rem){.sw-row__signals-label,.sw-row__signals .sw-row__activity{display:none}.sw-row__signals{padding-top:var(--space-2)}.sw-row__more-label{display:none}.sw-row__more-label--short{display:inline}.sw-row__side{gap:var(--space-2) var(--space-3);padding-top:var(--space-3)}.sw-row__side .score--row{align-items:baseline;gap:var(--space-1) var(--space-2);flex-wrap:wrap;display:flex}.sw-row__side .score--row .score__bar,.sw-row__side .score--row .score__status,.sw-row__side .score--row.is-none .score__none{flex-basis:100%}.sw-row__signals-label{flex-basis:auto}}@container swlist (width>=36rem){.sw-row{column-gap:var(--space-8);padding:var(--space-7) var(--space-5);grid-template-columns:minmax(0,1fr) 13.5rem}.sw-row__side{padding:0 0 0 var(--space-6);border-top:0;border-left:var(--border-hair);grid-template-columns:minmax(0,1fr);align-content:start;align-items:start}.sw-row__read{justify-self:start}.sw-row__signals{gap:var(--space-1);padding-top:var(--space-3);border-top:1px dashed var(--color-line);display:grid}.sw-row__expanded{column-gap:var(--space-10);grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}@container swlist (width>=60rem){.sw-row{column-gap:var(--space-10);padding-inline:var(--space-6);grid-template-columns:minmax(0,1fr) 15rem}}.sw-cards{gap:var(--space-5);grid-template-columns:minmax(0,1fr);display:grid}.sw-card{background:var(--color-paper);border:var(--border-hair);border-top:var(--rule-top);grid-template-rows:auto 1fr;display:grid;position:relative}.sw-card__media{aspect-ratio:16/9;background:var(--color-viewer-surface);border-bottom:var(--border-hair);overflow:hidden}.sw-card__img{object-fit:cover;object-position:top left;width:100%;height:100%;transition:transform var(--duration-base) var(--ease-out);display:block}.sw-card__media--logo{background:var(--color-paper-2);place-items:center;display:grid}.sw-card__logo-lg{object-fit:contain;width:auto;max-width:64%;height:64%}.sw-card__body{gap:var(--space-3);padding:var(--space-5);flex-direction:column;min-width:0;display:flex}.sw-card__desc{font-size:var(--text-ui);color:var(--color-ink-2);line-height:1.55}.sw-card__foot{justify-content:space-between;align-items:flex-end;gap:var(--space-3);padding-top:var(--space-4);border-top:1px dashed var(--color-line);flex-wrap:wrap;margin-top:auto;display:flex}.sw-card__link:after{content:"";position:absolute;inset:0}.sw-card .license-badge{z-index:1;position:relative}@media (hover:hover) and (pointer:fine){.sw-card:hover{border-color:var(--color-line-strong)}.sw-card:hover .sw-card__img{transform:scale(1.015)}.sw-card:hover .sw-card__link{text-decoration:underline 2px}}@media (width>=640px) and (width<=1023px){.sw-card{grid-template-rows:auto;grid-template-columns:minmax(0,.85fr) minmax(0,1fr)}.sw-card__media{aspect-ratio:auto;border-bottom:0;border-right:var(--border-hair);min-height:100%}.sw-card__img{object-fit:contain}.sw-card__logo-lg{max-width:48%;height:48%}}@media (width>=1024px){.sw-cards{gap:var(--space-6);grid-template-columns:repeat(3,minmax(0,1fr))}}.facts--spec{gap:var(--space-2) var(--space-6);margin-top:var(--space-1);padding-top:var(--space-3);border-top:1px dashed var(--color-line);flex-wrap:wrap;display:flex}.facts--spec .facts__row{align-items:baseline;gap:0 var(--space-2);font-size:var(--text-small);border:0;flex-wrap:wrap;max-width:100%;padding:0;display:flex}.facts--spec dt{letter-spacing:var(--tracking-meta);text-transform:uppercase;padding-top:0;font-size:.6875rem}.facts--spec dd{min-width:0}.facts--spec dd small{margin:0 0 0 var(--space-1);display:inline}.sw-row.is-skeleton{pointer-events:none}.skel{background:var(--color-paper-2);height:.9em;display:block}.skel+.skel{margin-top:var(--space-3)}.skel--title{width:45%;height:1.4em}.skel--w80{width:80%}.skel--w60{width:60%}.skel--w40{width:40%}@media (prefers-reduced-motion:no-preference){.skel{background:linear-gradient(90deg, var(--color-paper-2) 0%, #e6e8eb 50%, var(--color-paper-2) 100%);background-size:200% 100%;animation:1.4s ease-in-out infinite skel}@keyframes skel{0%{background-position:100% 0}to{background-position:-100% 0}}}.sysdiag{--mod-border:var(--color-dark-module);--mod-fg:#f4f5f6;--mod-bg:transparent;--link:var(--color-dark-connector);--node:var(--color-signal);--node-border:var(--color-signal);--link-col:3.5rem;margin:0}.sysdiag--light{--mod-border:var(--color-ink);--mod-fg:var(--color-ink);--mod-bg:var(--color-paper);--link:var(--color-ink);--node-border:var(--color-ink)}.sysdiag__grid{grid-template-columns:minmax(0, 1fr) var(--link-col) minmax(0, 1fr);display:grid}.sysdiag__colhead{font-family:var(--font-mono);font-size:var(--text-meta);letter-spacing:var(--tracking-meta);text-transform:uppercase;color:var(--color-muted);padding-bottom:var(--space-2);font-weight:500}.sysdiag--dark .sysdiag__colhead{color:var(--color-on-dark-muted)}.sysdiag__mod{min-height:2.75rem;margin-block:var(--space-2);padding:var(--space-2) var(--space-3);border:1px solid var(--mod-border);background:var(--mod-bg);color:var(--mod-fg);font-family:var(--font-mono);font-size:var(--text-meta);overflow-wrap:anywhere;flex-direction:column;justify-content:center;line-height:1.3;display:flex}.sysdiag__mod small{opacity:.85;font-size:.75rem}.sysdiag--dark .sysdiag__mod small{color:var(--color-on-dark-muted);opacity:1}.sysdiag__mod.is-existing{border-style:dashed}.sysdiag--dark .sysdiag__mod.is-existing{color:var(--color-on-dark-muted)}.sysdiag__mod.is-empty{background:0 0;border:0}.sysdiag__mod.is-new{box-shadow:inset 0 3px 0 var(--color-signal)}.sysdiag__link{position:relative}.sysdiag__link:before{content:"";border-top:1px solid var(--link);position:absolute;top:50%;left:0;right:0}.sysdiag__link.is-dashed:before{border-top-style:dashed}.sysdiag__link.is-none:before{display:none}.sysdiag__link:after{content:"";border-left:1px solid var(--link);position:absolute;top:0;bottom:0;left:50%}.sysdiag__link.is-first:after{top:50%}.sysdiag__link.is-last:after{bottom:50%}.sysdiag__link.is-first.is-last:after,.sysdiag__link.no-bus:after{display:none}.sysdiag__node{background:var(--node);outline:1px solid var(--node-border);outline-offset:-1px;z-index:1;width:9px;height:9px;margin:-4px 0 0 -4px;position:absolute;top:50%;left:50%}.sysdiag--light .sysdiag__node{outline-offset:0;width:11px;height:11px;margin:-5px 0 0 -5px}.sysdiag__caption{gap:var(--space-2) var(--space-5);margin-top:var(--space-4);padding-top:var(--space-3);border-top:1px solid var(--color-dark-line);font-size:var(--text-small);color:var(--color-on-dark-muted);flex-wrap:wrap;display:flex}.sysdiag--light .sysdiag__caption{border-top-color:var(--color-line);color:var(--color-muted)}.sysdiag__key{align-items:center;gap:var(--space-2);display:inline-flex}.sysdiag__key i{flex:none;display:inline-block}.sysdiag__key .k-node{background:var(--color-signal);outline:1px solid var(--node-border);outline-offset:-1px;width:9px;height:9px}.sysdiag__key .k-existing{border-top:1px dashed;width:18px}.sysdiag__key .k-new{background:var(--color-signal);width:18px;height:3px}.sysdiag__text{margin-top:var(--space-4);font-size:var(--text-ui)}.sysdiag__text>summary{cursor:pointer;font-weight:var(--weight-strong);min-height:var(--control-h-sm);align-items:center;display:inline-flex}.sysdiag__text ul{margin-top:var(--space-2);padding-left:1.2em}.sysdiag__text li+li{margin-top:var(--space-1)}.sysdiag[data-draw]{--draw-step:.14s;--draw-line:.26s;--draw-node:.16s}.sysdiag[data-draw=wait] .sysdiag__link:before{clip-path:inset(0 100% 0 0)}.sysdiag[data-draw=wait] .sysdiag__link:after{clip-path:inset(0 0 100%)}.sysdiag[data-draw=wait] .sysdiag__node{opacity:0}.sysdiag[data-draw=run] .sysdiag__link:before{animation:sysdiag-line var(--draw-line) var(--ease-out) calc(var(--i) * var(--draw-step)) backwards}.sysdiag[data-draw=run] .sysdiag__link:after{animation:sysdiag-bus var(--draw-step) linear calc(var(--i) * var(--draw-step) - var(--draw-step) / 2) backwards}.sysdiag[data-draw=run] .sysdiag__link.is-first:after{animation-delay:calc(var(--i) * var(--draw-step));animation-duration:calc(var(--draw-step) / 2)}.sysdiag[data-draw=run] .sysdiag__link.is-last:after{animation-duration:calc(var(--draw-step) / 2)}.sysdiag[data-draw=run] .sysdiag__node{animation:sysdiag-node var(--draw-node) var(--ease-out) calc(var(--i) * var(--draw-step) + var(--draw-step)) backwards}@keyframes sysdiag-line{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}@keyframes sysdiag-bus{0%{clip-path:inset(0 0 100%)}to{clip-path:inset(0)}}@keyframes sysdiag-node{0%{opacity:0;transform:scale(.6)}to{opacity:1;transform:none}}@media print,(prefers-reduced-motion:reduce){.sysdiag[data-draw] .sysdiag__link:before,.sysdiag[data-draw] .sysdiag__link:after,.sysdiag[data-draw] .sysdiag__node{clip-path:none!important;opacity:1!important;animation:none!important}}@media (width>=1024px){.sysdiag--hero{--link-col:4.25rem}.sysdiag--hero .sysdiag__mod{min-height:2.75rem;margin-block:var(--space-6)}}.cmp{margin:0}.cmp__head{font-size:var(--text-h3);line-height:1.2;font-weight:var(--weight-heading);font-stretch:var(--stretch-h3);color:var(--color-on-dark);margin-bottom:var(--space-5)}.cmp__grid{grid-template-columns:minmax(0, 1fr) var(--cmp-link-col) minmax(0, 1fr);row-gap:var(--space-3);--cmp-link-col:3rem;--draw-step:.14s;--draw-line:.26s;display:grid}.cmp__row{display:contents}.cmp__colhead{font-family:var(--font-mono);font-size:var(--text-meta);letter-spacing:var(--tracking-meta);text-transform:uppercase;color:var(--color-on-dark-muted);padding-bottom:var(--space-2);font-weight:500}.cmp__colhead--to{color:var(--color-signal)}.cmp__from,.cmp__to{padding:var(--space-3) var(--space-4);align-content:start;gap:2px;min-height:3.5rem;display:grid}.cmp__from{border:1px solid var(--color-dark-line);background:0 0}.cmp__to{border:1px solid var(--color-dark-module);background:var(--color-dark-2);position:relative}.cmp__to:before{content:"";background:var(--color-signal);transform-origin:0;height:3px;position:absolute;top:0;left:0;right:0}.cmp__fn{font-family:var(--font-mono);letter-spacing:.03em;text-transform:uppercase;color:var(--color-on-dark-muted);font-size:.6875rem;font-weight:500;line-height:1.3}.cmp__name{font-size:var(--text-h4);line-height:1.2;font-weight:var(--weight-strong);font-stretch:var(--stretch-h3);color:var(--color-on-dark);overflow-wrap:anywhere}.cmp__sub{font-family:var(--font-mono);font-size:var(--text-small);color:var(--color-on-dark-muted);overflow-wrap:anywhere;line-height:1.4}.cmp__benefit{font-size:var(--text-small);color:var(--color-on-dark-muted);overflow-wrap:anywhere;line-height:1.4}.cmp__link{position:relative}.cmp__link:before{content:"";border-top:1px solid var(--color-dark-connector);position:absolute;top:50%;left:0;right:0}.cmp__link:after{content:"";border-top:4px solid #0000;border-bottom:4px solid #0000;border-left:5px solid var(--color-dark-connector);width:0;height:0;position:absolute;top:50%;right:0;transform:translateY(-50%)}.cmp__node{background:var(--color-signal);outline:1px solid var(--color-signal);outline-offset:-1px;width:9px;height:9px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.cmp__footer{margin-top:var(--space-4);padding-top:var(--space-3);border-top:1px solid var(--color-dark-line)}.cmp__footer-head{font-weight:var(--weight-strong);color:var(--color-on-dark)}.cmp__footer-note{margin-top:var(--space-2);font-size:var(--text-small);color:var(--color-on-dark-muted)}html.js .cmp__grid[data-draw=wait] .cmp__from,html.js .cmp__grid[data-draw=wait] .cmp__to{opacity:0}html.js .cmp__grid[data-draw=wait] .cmp__link:before{clip-path:inset(0 100% 0 0)}html.js .cmp__grid[data-draw=wait] .cmp__link:after,html.js .cmp__grid[data-draw=wait] .cmp__node{opacity:0}html.js .cmp__grid[data-draw=wait] .cmp__to:before{transform:scaleX(0)}html.js .cmp__grid[data-draw=run] .cmp__from{animation:cmp-fade var(--duration-base) var(--ease-out) backwards;animation-delay:calc(var(--i) * var(--draw-step))}html.js .cmp__grid[data-draw=run] .cmp__link:before{animation:cmp-line var(--draw-line) var(--ease-out) backwards;animation-delay:calc(var(--i) * var(--draw-step))}html.js .cmp__grid[data-draw=run] .cmp__link:after{animation:cmp-fade var(--duration-base) var(--ease-out) backwards;animation-delay:calc(var(--i) * var(--draw-step) + var(--draw-line))}html.js .cmp__grid[data-draw=run] .cmp__node{animation:cmp-node var(--draw-line) var(--ease-out) backwards;animation-delay:calc(var(--i) * var(--draw-step))}html.js .cmp__grid[data-draw=run] .cmp__to{animation:cmp-fade var(--duration-base) var(--ease-out) backwards;animation-delay:calc(var(--i) * var(--draw-step) + var(--draw-line))}html.js .cmp__grid[data-draw=run] .cmp__to:before{animation:cmp-accent var(--duration-base) var(--ease-out) backwards;animation-delay:calc(var(--i) * var(--draw-step) + var(--draw-line))}@keyframes cmp-fade{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@keyframes cmp-line{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}@keyframes cmp-node{0%{opacity:0;left:0}40%{opacity:1}to{opacity:1;left:50%}}@keyframes cmp-accent{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes cmp-line-v{0%{clip-path:inset(0 0 100%)}to{clip-path:inset(0)}}@keyframes cmp-node-v{0%{opacity:0;top:0}40%{opacity:1}to{opacity:1;top:50%}}@media print,(prefers-reduced-motion:reduce){.cmp__grid[data-draw] .cmp__from,.cmp__grid[data-draw] .cmp__to,.cmp__grid[data-draw] .cmp__link:before,.cmp__grid[data-draw] .cmp__link:after,.cmp__grid[data-draw] .cmp__node,.cmp__grid[data-draw] .cmp__to:before{opacity:1!important;clip-path:none!important;animation:none!important;transform:none!important}}@media (width<=599px){.cmp__grid{--cmp-link-col:20px;row-gap:var(--space-2)}.cmp__colhead{letter-spacing:.03em;padding-bottom:var(--space-1);font-size:.6875rem}.cmp__from,.cmp__to{padding:var(--space-2);min-height:0}.cmp__name{font-size:.9375rem}.cmp__node{width:8px;height:8px}.cmp__link:after{border-top-width:3px;border-bottom-width:3px;border-left-width:4px}}@media (width<=279px){.cmp__colhead,.cmp__colhead-spacer{display:none}.cmp__grid{display:block}.cmp__row{margin-bottom:var(--space-4);grid-template-columns:minmax(0,1fr);display:grid}.cmp__row:last-child{margin-bottom:0}.cmp__link{height:1.5rem}.cmp__link:before{border-top:0;border-left:1px solid var(--color-dark-connector);inset:0 auto 0 50%}.cmp__link:after{border:0;border-left:4px solid #0000;border-right:4px solid #0000;border-top:5px solid var(--color-dark-connector);inset:auto auto 0 50%;transform:translate(-50%)}html.js .cmp__grid[data-draw=wait] .cmp__link:before{clip-path:inset(0 0 100%)}html.js .cmp__grid[data-draw=run] .cmp__link:before{animation-name:cmp-line-v}html.js .cmp__grid[data-draw=run] .cmp__node{animation-name:cmp-node-v}}.hero{background:var(--color-paper);border-bottom:var(--border-hair)}.hero__grid{grid-template-columns:minmax(0,1fr);display:grid}.hero__text{padding:var(--space-10) var(--gutter) var(--space-8);gap:var(--space-5);align-content:start;display:grid}.hero__actions{gap:var(--space-3);margin-top:var(--space-2);flex-direction:column;display:flex}.hero__actions .btn{justify-content:space-between}.hero__sender{font-size:var(--text-small);color:var(--color-muted);margin-top:var(--space-2)}.hero__panel{background:var(--color-dark);color:var(--color-on-dark);padding:var(--space-6) var(--gutter) var(--space-6)}@media (width>=600px){.hero__actions{flex-flow:wrap}.hero__actions .btn{justify-content:center}}@media (width>=1024px){.hero__grid{grid-template-columns:minmax(var(--gutter), 1fr) minmax(0, calc(var(--container-max) * .58)) minmax(0, calc(var(--container-max) * .42)) minmax(var(--gutter), 1fr);min-height:40rem}.hero__text{padding:var(--space-16) var(--space-12) var(--space-12) 0;gap:var(--space-7);grid-column:2;align-content:center}.hero__text .t-display{max-width:13em}.hero__sender{margin-top:var(--space-6);padding-top:var(--space-6);border-top:var(--border-hair)}.hero__panel{padding:var(--space-12) var(--gutter) var(--space-10) var(--space-12);flex-direction:column;grid-column:3/5;justify-content:center;display:flex}.hero__panel .cmp,.hero__method{max-width:30rem}}.hero__method{gap:var(--space-4);align-content:center;display:grid}.hero__method .t-kicker{color:var(--color-signal)}.hero__method-title{color:var(--color-on-dark);font-size:var(--text-h3);max-width:18em;line-height:1.15}.hero__method-list{gap:var(--space-3);margin:0;padding:0;list-style:none;display:grid}.hero__method-list li{padding-top:var(--space-3);border-top:1px solid var(--color-dark-line);color:var(--color-on-dark-muted);font-size:var(--text-small);line-height:1.5}.hero__method-list strong{color:var(--color-on-dark);font-weight:var(--weight-strong);display:block}.hero__method-link{color:var(--color-on-dark);justify-self:start}.hero__method-link svg{color:var(--color-signal)}.search{width:100%;max-width:40rem;display:flex}.search .input{min-height:3.25rem;padding-left:var(--space-10);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23555D67' stroke-width='1.75'%3E%3Ccircle cx='10.5' cy='10.5' r='6'/%3E%3Cpath d='M15 15l5 5'/%3E%3C/svg%3E");background-position:12px;background-repeat:no-repeat;background-size:20px;border-right:0;font-size:1.0625rem}.search .btn{flex:none;min-height:3.25rem}.search .input[type=search]::-webkit-search-cancel-button{cursor:pointer}.chips{gap:var(--space-2);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.chip{align-items:center;gap:var(--space-2);min-height:var(--control-h-sm);padding:0 var(--space-4);border:var(--border-control);background:var(--color-paper);color:var(--color-ink);font-size:var(--text-ui);cursor:pointer;white-space:nowrap;flex:none;text-decoration:none;display:inline-flex}@media (hover:hover) and (pointer:fine){.chip:hover{border-color:var(--color-ink);text-decoration:none}}.chip{position:relative}.chip input{opacity:0;width:1px;height:1px;margin:0;position:absolute;top:0;left:0}.chip:has(input:checked),.chip[aria-pressed=true],.chip.is-active{background:var(--color-ink);color:var(--color-on-dark);border-color:var(--color-ink)}.chip:has(input:focus-visible){outline:3px solid var(--color-focus);outline-offset:2px}.chip svg{width:16px;height:16px}.active-filters{gap:var(--space-2);flex-wrap:wrap;align-items:center;display:flex}.filter-pill{align-items:center;gap:var(--space-2);min-height:2.25rem;padding:0 var(--space-2) 0 var(--space-3);background:var(--color-signal-soft);border:1px solid var(--color-ink);font-size:var(--text-small);cursor:pointer;display:inline-flex}.filter-pill svg{width:16px;height:16px}@media (hover:hover) and (pointer:fine){.filter-pill:hover{background:var(--color-signal)}}.filter-clear{padding:var(--space-2);min-height:2.25rem;font-size:var(--text-small);font-weight:var(--weight-strong);text-underline-offset:.22em;cursor:pointer;background:0 0;border:0;text-decoration:underline}.catalog-main{padding-block:var(--space-6) var(--section-y);flex-direction:column;display:flex}.catalog-side{display:contents}.cat-index{order:1}.catalog-toolbar{order:2}.filters{order:3}.results{order:4;min-width:0}@media (width>=1024px){.catalog-main{column-gap:var(--space-12);padding-top:var(--space-8);grid-template:"side toolbar""side results"1fr/15.5rem minmax(0,1fr);display:grid}.catalog-side{top:calc(var(--header-h) + var(--space-4));max-height:calc(100dvh - var(--header-h) - var(--space-8));overscroll-behavior:contain;scrollbar-width:thin;padding-right:var(--space-3);grid-area:side;align-self:start;display:block;position:sticky;overflow-y:auto}.has-tray .catalog-side{max-height:calc(100dvh - var(--header-h) - var(--space-8) - var(--tray-h,7rem))}.catalog-toolbar{grid-area:toolbar}.results{grid-area:results}}.cat-index__legend{font-family:var(--font-mono);font-size:var(--text-kicker);letter-spacing:var(--tracking-kicker);text-transform:uppercase;color:var(--color-muted);margin-bottom:var(--space-2);font-weight:500}.cat{justify-content:space-between;align-items:center;gap:var(--space-3);cursor:pointer;font-size:var(--text-ui);line-height:1.25;display:flex;position:relative}.cat input{opacity:0;width:1px;height:1px;margin:0;position:absolute;top:0;left:0}.cat__count{font-family:var(--font-mono);font-size:var(--text-meta);color:var(--color-muted);font-variant-numeric:tabular-nums}.cat:has(input:focus-visible){outline:3px solid var(--color-focus);outline-offset:-1px}.cat-index__more{margin-top:var(--space-2);padding:var(--space-2) 0;cursor:pointer;min-height:2.25rem;font-size:var(--text-small);font-weight:var(--weight-strong);text-underline-offset:.22em;background:0 0;border:0;text-decoration:underline}@media (width>=1024px){.cat-index{padding-top:var(--space-4);border-top:var(--rule-top)}.cat-index__list{display:grid}.cat{min-height:2.125rem;padding:var(--space-1) var(--space-2) var(--space-1) var(--space-3);border-left:3px solid #0000}@media (hover:hover) and (pointer:fine){.cat:hover{background:var(--color-paper-2)}}.cat:has(input:checked){border-left-color:var(--color-ink);background:var(--color-paper-2);font-weight:var(--weight-strong)}.cat:has(input:checked) .cat__count{color:var(--color-ink)}.cat-index[data-collapsible]:not([data-expanded]) .cat:nth-child(n+13):not(:has(input:checked)){display:none}}@media (width<=1023px){.cat-index{margin-inline:calc(-1 * var(--gutter));padding-bottom:var(--space-2)}.cat-index__legend{padding-inline:var(--gutter)}.cat-index__list{gap:var(--space-2);scrollbar-width:thin;padding:0 var(--gutter) var(--space-3);scroll-padding-inline:var(--gutter);display:flex;overflow-x:auto}.cat-index[data-expanded] .cat-index__list{flex-wrap:wrap;overflow-x:visible}.cat{min-height:var(--control-h-sm);padding:0 var(--space-3);border:var(--border-control);background:var(--color-paper);white-space:nowrap;flex:none}.cat:has(input:checked){background:var(--color-ink);border-color:var(--color-ink);color:var(--color-on-dark)}.cat:has(input:checked) .cat__count{color:var(--color-on-dark-muted)}.cat:has(input:focus-visible){outline-offset:2px}.cat-index{position:relative}.cat-index__more{top:-.625rem;right:var(--gutter);margin:0;position:absolute}}.filters{background:var(--color-paper)}.filters__title{font-family:var(--font-mono);font-size:var(--text-kicker);letter-spacing:var(--tracking-kicker);text-transform:uppercase;color:var(--color-muted);font-weight:500;font-stretch:100%;line-height:1.3}.filters__group{border-bottom:var(--border-hair)}.filters__group>summary{justify-content:space-between;align-items:center;gap:var(--space-2);min-height:var(--control-h-sm);cursor:pointer;font-size:var(--text-ui);font-weight:var(--weight-strong);list-style:none;display:flex}.filters__group>summary::-webkit-details-marker{display:none}.filters__group>summary svg{width:18px;height:18px;color:var(--color-muted);transition:transform var(--duration-fast) var(--ease-out);flex:none}.filters__group[open]>summary svg{transform:rotate(180deg)}.filters__group>fieldset{padding-bottom:var(--space-3)}.filters__group .choice{min-height:2.25rem;padding-block:var(--space-1);font-size:var(--text-small)}.filters__footer,.filters-toggle{display:none}@media (width>=1024px){.filters{margin-top:var(--space-8);padding-top:var(--space-4);border-top:var(--rule-top)}}@media (width<=1023px){.filters-toggle{display:inline-flex}.js .filters:not([data-open]){display:none}.js .filters{transition-property:opacity,transform;transition-duration:var(--duration-fast), var(--duration-base);transition-timing-function:var(--ease-out)}.js .filters[data-motion=from],.js .filters[data-motion=out]{opacity:0;transform:translateY(-.5rem)}.js .filters[data-motion=out]{transition-duration:var(--duration-fast)}.filters{margin-bottom:var(--space-5);border:var(--border-hair);border-top:var(--rule-top);padding:var(--space-4) var(--space-5) var(--space-5)}.filters__footer{gap:var(--space-3);padding-top:var(--space-5);flex-wrap:wrap;display:flex}html:not(.js) .filters-toggle,html:not(.js) .filters__footer{display:none}}.catalog-toolbar{align-items:center;gap:var(--space-3) var(--space-4);padding-block:var(--space-3) var(--space-4);grid-template-columns:minmax(0,1fr) auto;display:grid}.results__count{font-size:var(--text-ui);font-weight:var(--weight-strong)}.results__count [data-count]{font-variant-numeric:tabular-nums}.results__sort{align-items:center;gap:var(--space-2) var(--space-3);font-size:var(--text-ui);flex-wrap:wrap;grid-column:1/-1;display:flex}.results__sort-label{font-weight:var(--weight-strong)}.results__sort .select{width:auto;max-width:22rem;min-height:var(--control-h-sm);flex:14rem}.sort-seg{display:none}@media (width<=1023px){.catalog-toolbar{gap:var(--space-3);grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"count filter""sort sort"}.results__count{grid-area:count}.filters-toggle{grid-area:filter}.results__sort{flex-wrap:nowrap;grid-area:sort/auto}.results__sort-label{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.results__sort .select{flex:auto;min-width:0;max-width:none}html:not(.js) .catalog-toolbar{grid-template-areas:"count count""sort sort"}}@media (width>=1024px){.catalog-toolbar{grid-template-columns:auto minmax(0,1fr);padding-top:0}.results__sort{grid-column:2;justify-content:flex-end}.js .sort-seg{border:var(--border-control);background:var(--color-paper);flex-wrap:wrap;display:inline-flex}.js .results__sort .select{display:none}}.sort-seg__btn{min-height:2.5rem;padding:0 var(--space-3);border:0;border-left:var(--border-hair);cursor:pointer;font-size:var(--text-small);font-weight:var(--weight-medium);color:var(--color-ink-2);background:0 0}.sort-seg__btn:first-child{border-left:0}@media (hover:hover) and (pointer:fine){.sort-seg__btn:hover{background:var(--color-paper-2);color:var(--color-ink)}}.sort-seg__btn[aria-pressed=true]{background:var(--color-ink);color:var(--color-on-dark);font-weight:var(--weight-strong)}.sort-seg__btn:focus-visible{z-index:1;outline-offset:0;position:relative}.results__active{margin-bottom:var(--space-4)}.results__method{margin:0 0 var(--space-4);font-size:var(--text-small)}.results__method>summary{align-items:center;gap:var(--space-2);min-height:var(--control-h-sm);cursor:pointer;color:var(--color-muted);font-weight:var(--weight-medium);list-style:none;display:inline-flex}.results__method>summary::-webkit-details-marker{display:none}.results__method>summary svg{flex:none;width:16px;height:16px}.results__method>summary:focus-visible{outline:3px solid var(--color-focus);outline-offset:2px}@media (hover:hover) and (pointer:fine){.results__method>summary:hover{color:var(--color-ink)}}.results__method[open]>summary{color:var(--color-ink)}.results__method-panel{gap:var(--space-2);max-width:82ch;margin-top:var(--space-1);padding-left:var(--space-3);border-left:2px solid var(--color-line-strong);color:var(--color-ink-2);line-height:1.5;display:grid}.results__grading{max-width:82ch;margin:0 0 var(--space-3);line-height:1.5}.catalog-more{gap:var(--space-4);margin-top:var(--space-6);justify-items:center;display:grid}.catalog-more__progress{margin:0}.load-more{justify-content:center;align-items:center;gap:var(--space-3);min-height:3rem;display:flex}.load-more__text{font-size:var(--text-ui);font-weight:var(--weight-strong);margin:0}.load-more__spinner{border:2px solid var(--color-line-strong);border-top-color:var(--color-ink);border-radius:50%;width:20px;height:20px;animation:.8s linear infinite spin}@media (prefers-reduced-motion:reduce){.load-more__spinner{border-style:dotted;animation:none}}.catalog-more__nav{align-items:center;gap:var(--space-5);display:flex}.catalog-more__pages{margin:0}.catalog-more__link{font-weight:var(--weight-strong)}.catalog-more[data-scroll] .catalog-more__nav,.catalog-more[data-scroll][data-done] .catalog-more__sentinel{display:none}.catalog-more__sentinel{width:100%;height:1px}.catalog-more__error{width:100%;max-width:44rem}.filters__noscript{padding-top:var(--space-4)}.compare-tray{z-index:var(--z-tray);background:var(--color-dark);color:var(--color-on-dark);box-shadow:var(--shadow-raised);border-top:3px solid var(--color-signal);transition-property:transform;transition-duration:var(--duration-base);transition-timing-function:var(--ease-out);position:fixed;bottom:0;left:0;right:0}.compare-tray[data-motion=from],.compare-tray[data-motion=out]{transform:translateY(calc(100% + 2rem))}.compare-tray[data-motion=out]{transition-duration:var(--duration-fast)}.compare-tray .container{align-items:center;gap:var(--space-3) var(--space-5);padding-block:var(--space-3);flex-wrap:wrap;display:flex}.compare-tray__title{font-weight:var(--weight-strong)}.compare-tray__items{gap:var(--space-2);flex-wrap:wrap;flex:1;margin:0;padding:0;list-style:none;display:flex}.compare-tray__item{align-items:center;gap:var(--space-1);border:1px solid var(--color-dark-module);padding-left:var(--space-3);font-size:var(--text-small);max-width:16rem;display:inline-flex}.compare-tray__item span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.compare-tray__item button{color:var(--color-on-dark);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;min-width:2.25rem;min-height:2.25rem;display:inline-flex}.compare-tray__item button svg{width:16px;height:16px}.compare-tray__limit{width:100%;font-size:var(--text-small);color:var(--color-on-dark-muted)}.compare-tray__actions{gap:var(--space-3);display:flex}.has-tray{padding-bottom:7rem;padding-bottom:var(--tray-h,7rem)}html:has(>body.has-tray){scroll-padding-bottom:calc(var(--tray-h,7rem) + var(--space-4))}.compare-head{gap:var(--space-4);display:grid}.compare-table-wrap{border-top:var(--rule-top)}.compare-table{width:100%;min-width:46rem;font-size:var(--text-ui);table-layout:fixed}.compare-table th,.compare-table td{padding:var(--space-3) var(--space-4);border-bottom:var(--border-hair);vertical-align:top;text-align:left}.compare-table thead th{top:var(--header-h);background:var(--color-paper);z-index:2;box-shadow:inset 0 -2px 0 var(--color-ink);padding-block:var(--space-4);border-bottom:0;position:sticky}.compare-table thead th:first-child{width:14rem}.compare-table tbody th{font-weight:var(--weight-body);color:var(--color-ink-2)}.compare-table tbody th .compare-hint{font-size:var(--text-small);color:var(--color-muted);margin-top:2px;display:block}.compare-table .group-row th{background:var(--color-paper-2);font-family:var(--font-mono);font-size:var(--text-meta);letter-spacing:var(--tracking-meta);text-transform:uppercase;color:var(--color-muted);padding-block:var(--space-2);font-weight:500}.compare-table .is-same th:after{content:"Lika för alla";font-family:var(--font-mono);color:var(--color-muted);margin-top:2px;font-size:.75rem;display:block}.compare-name{gap:var(--space-2);justify-items:start;display:grid}.compare-name a{font-size:1.125rem;font-weight:var(--weight-heading);font-stretch:var(--stretch-h3);overflow-wrap:anywhere;text-decoration:none}@media (hover:hover) and (pointer:fine){.compare-name a:hover{text-decoration:underline}}.compare-name__meta{align-items:center;gap:var(--space-3);display:flex}.compare-name__meta .filter-clear{padding:0 var(--space-1);min-height:1.5rem}.diff-only .compare-table tbody tr.is-same:not(.group-row),.diff-only .compare-stack .is-same,.compare-stack{display:none}@media (width<=899px){.compare-table-wrap{display:none}.compare-stack{display:block}}.compare-stack__group{margin-top:var(--space-8)}.compare-stack__group>h2{font-family:var(--font-mono);font-size:var(--text-meta);letter-spacing:var(--tracking-meta);text-transform:uppercase;color:var(--color-muted);padding-bottom:var(--space-2);border-bottom:var(--border-ink);font-weight:500}.compare-stack__item{padding-block:var(--space-4);border-bottom:var(--border-hair)}.compare-stack__item>h3{font-size:var(--text-ui);margin-bottom:var(--space-2);font-stretch:100%}.compare-stack__item.is-same>h3:after{content:" · lika för alla";font-family:var(--font-mono);color:var(--color-muted);font-size:.75rem;font-weight:400}.compare-stack__item dl{gap:var(--space-2);margin:0;display:grid}.compare-stack__item dl>div{gap:var(--space-3);font-size:var(--text-ui);grid-template-columns:minmax(0,9.5rem) minmax(0,1fr);display:grid}.compare-stack__item dt{font-weight:var(--weight-strong);overflow-wrap:anywhere}.compare-stack__item dl>.is-long-name{gap:var(--space-1);grid-template-columns:minmax(0,1fr)}.compare-stack__item dd{margin:0}.compare-stack__products{gap:var(--space-2);flex-wrap:wrap;display:flex}.toggle{align-items:center;gap:var(--space-3);min-height:var(--control-h-sm);cursor:pointer;font-weight:var(--weight-strong);font-size:var(--text-ui);display:inline-flex}.toggle input{width:20px;height:20px;accent-color:var(--color-ink)}.notice{gap:var(--space-3);padding:var(--space-4) var(--space-5);background:var(--color-paper-2);border-top:var(--rule-top);font-size:var(--text-ui);grid-template-columns:auto minmax(0,1fr);line-height:1.5;display:grid}.notice svg{width:20px;height:20px;margin-top:2px}.notice>div>*+*{margin-top:var(--space-2)}.notice--error{background:var(--color-error-surface);border-top-color:var(--color-error);color:var(--color-ink)}.notice--error svg{color:var(--color-error)}.notice--success{background:var(--color-success-surface);border-top-color:var(--color-success)}.notice--success svg{color:var(--color-success)}.notice--demo{background:var(--color-signal-soft)}.notice--plain{border-top:var(--border-hair);background:0 0;padding-inline:0}.notice__title{font-weight:var(--weight-strong)}.empty{padding:var(--space-10) 0;border-top:var(--border-hair);gap:var(--space-4);max-width:44rem;display:grid}.empty__mark{align-items:center;gap:0;display:flex}.empty__mark i{width:12px;height:12px;display:block}.empty__mark i:first-child{background:var(--color-signal);outline:1px solid var(--color-ink);outline-offset:-1px}.empty__mark i:nth-child(2){border-top:1px dashed var(--color-line-strong);width:36px;height:0}.empty__mark i:nth-child(3){border:1px dashed var(--color-line-strong)}.empty__actions{gap:var(--space-3);flex-wrap:wrap;display:flex}.stepper{counter-reset:step;grid-template-columns:repeat(5,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}.stepper__step{gap:var(--space-2);font-size:var(--text-small);color:var(--color-muted);padding-top:22px;padding-right:var(--space-2);display:grid;position:relative}.stepper__step:before{content:"";border-top:1px solid var(--color-line-strong);position:absolute;top:6px;left:0;right:0}.stepper__step:first-child:before{left:6px}.stepper__step:last-child:before{width:0;right:auto}.stepper__node{background:var(--color-paper);border:1px solid var(--color-line-strong);z-index:1;width:13px;height:13px;position:absolute;top:0;left:0}.stepper__step.is-done{color:var(--color-ink-2)}.stepper__step.is-done .stepper__node{background:var(--color-ink);border-color:var(--color-ink)}.stepper__step.is-done:before{border-top-color:var(--color-ink)}.stepper__step.is-current{color:var(--color-ink);font-weight:var(--weight-strong)}.stepper__step.is-current .stepper__node{background:var(--color-signal);border-color:var(--color-ink);width:15px;height:15px;top:-1px}.stepper__num{font-family:var(--font-mono);font-size:.75rem;font-weight:500}.stepper__btn{all:unset;cursor:pointer;gap:var(--space-1);display:grid}.stepper__btn:focus-visible{outline:3px solid var(--color-focus);outline-offset:3px}@media (hover:hover) and (pointer:fine){.stepper__btn:hover .stepper__label{text-decoration:underline}}@media (width<=599px){.stepper__label{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.stepper__step.is-current .stepper__label{clip:auto;white-space:normal;grid-column:1/-1;width:auto;height:auto;position:static}.stepper__step.is-current{grid-column:span 1}}.planner{gap:var(--space-8);display:grid}.planner__panel{border-top:var(--rule-top);padding-top:var(--space-6)}.planner__panel>header{gap:var(--space-2);margin-bottom:var(--space-6);display:grid}.planner__fields{gap:var(--space-8);max-width:48rem;display:grid}.planner__options{gap:0 var(--space-6);display:grid}@media (width>=600px){.planner__options--2{grid-template-columns:repeat(2,minmax(0,1fr))}}.planner__nav{justify-content:space-between;gap:var(--space-3);padding-top:var(--space-6);margin-top:var(--space-8);border-top:var(--border-hair);flex-wrap:wrap;display:flex}.planner__nav .btn{min-width:10rem}.explain{font-size:var(--text-small)}.explain>summary{cursor:pointer;align-items:center;gap:var(--space-2);min-height:2.25rem;color:var(--color-ink-2);text-underline-offset:.22em;text-decoration:underline;display:inline-flex}.explain>summary::-webkit-details-marker{display:none}.explain>summary svg{width:16px;height:16px}.explain>div{padding:var(--space-3) var(--space-4);background:var(--color-paper-2);margin-top:var(--space-2);max-width:60ch;line-height:1.5}.summary-list{margin:0}.summary-list>div{gap:var(--space-1) var(--space-6);padding-block:var(--space-4);border-top:var(--border-hair);grid-template-columns:minmax(0,1fr);display:grid}@media (width>=768px){.summary-list>div{grid-template-columns:14rem minmax(0,1fr) auto;align-items:baseline}}.summary-list dd.summary-list__action{justify-self:start}.summary-list dt{font-weight:var(--weight-strong);font-size:var(--text-ui)}.summary-list dd{margin:0}.summary-list .edit{font-size:var(--text-ui);min-height:var(--control-h-sm);text-underline-offset:.22em;cursor:pointer;font-weight:var(--weight-strong);background:0 0;border:0;justify-self:start;padding:0;text-decoration:underline}.result-section{padding-block:var(--space-10);border-top:var(--border-hair)}.result-section>h3{margin-bottom:var(--space-5)}.rec-table{width:100%;font-size:var(--text-ui)}.rec-table th,.rec-table td{padding:var(--space-4) var(--space-4) var(--space-4) 0;border-top:var(--border-hair);vertical-align:top;text-align:left}.rec-table thead th{border-top:0;border-bottom:var(--border-ink);font-family:var(--font-mono);font-size:var(--text-meta);color:var(--color-muted);padding-block:var(--space-2);font-weight:500}.rec-table td p+p{margin-top:var(--space-2)}@media (width<=767px){.rec-table thead{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.rec-table,.rec-table tbody,.rec-table tr,.rec-table td,.rec-table th{width:100%;display:block}.rec-table tr{border-top:var(--rule-top);padding-block:var(--space-4)}.rec-table th,.rec-table td{padding:var(--space-1) 0;border:0}.rec-table td[data-label]:before{content:attr(data-label);font-family:var(--font-mono);font-size:var(--text-meta);color:var(--color-muted);margin-top:var(--space-3);display:block}}.phases{gap:0;margin:0;padding:0;list-style:none;display:grid}.phase{gap:var(--space-4);padding-bottom:var(--space-6);grid-template-columns:1.5rem minmax(0,1fr);display:grid;position:relative}.phase:before{content:"";border-left:1px solid var(--color-ink);position:absolute;top:14px;bottom:0;left:6px}.phase:last-child:before{display:none}.phase__node{background:var(--color-paper);border:1px solid var(--color-ink);z-index:1;width:13px;height:13px;margin-top:6px;position:relative}.phase:first-child .phase__node{background:var(--color-signal)}.phase h4{margin-bottom:var(--space-1)}.phase p{font-size:var(--text-ui);color:var(--color-ink-2);max-width:62ch}.result-actions{gap:var(--space-3);flex-wrap:wrap;align-items:center;display:flex}.proto-action-msg{font-size:var(--text-small)}.article-feature{gap:var(--space-4);padding-top:var(--space-5);border-top:var(--rule-top);display:grid}.article-feature h3{font-size:var(--text-h2);font-stretch:var(--stretch-h2);line-height:1.1}.article-feature h3 a,.article-item h3 a{text-decoration:none}@media (hover:hover) and (pointer:fine){.article-feature h3 a:hover,.article-item h3 a:hover{text-decoration:underline 2px}}.article-item{gap:var(--space-2);padding-block:var(--space-5);border-top:var(--border-hair);display:grid}.article-item h3{font-size:var(--text-h3)}.article-meta{gap:var(--space-1) var(--space-4);font-size:var(--text-small);color:var(--color-muted);flex-wrap:wrap;display:flex}.article-meta time{font-variant-numeric:tabular-nums}.article-header{padding-block:var(--space-8) var(--space-10);border-bottom:var(--border-hair)}.article-grid{gap:var(--space-6);grid-template-columns:minmax(0,1fr);display:grid}.article-header .article-grid{margin-top:var(--space-6)}.article-header .t-h1{max-width:22ch;margin-top:var(--space-4)}.article-header .t-lead{margin-top:var(--space-5);max-width:54ch}.article-layout{padding-block:var(--space-8) var(--section-y)}.article-byline{gap:var(--space-3) var(--space-8);font-size:var(--text-small);flex-wrap:wrap;display:flex}.article-byline dt{font-family:var(--font-mono);font-size:var(--text-kicker);letter-spacing:var(--tracking-kicker);text-transform:uppercase;color:var(--color-muted)}.article-byline dd{font-weight:var(--weight-medium);margin:0}.article-byline>div{gap:2px;display:grid}@media (width>=1024px){.article-grid{column-gap:var(--grid-gap);grid-template-columns:repeat(12,minmax(0,1fr))}.article-grid__main{grid-column:4/span 8;min-width:0}.article-rail{top:calc(var(--header-h) + var(--space-6));grid-area:1/1/auto/span 2;align-self:start;position:sticky}.article-byline{gap:var(--space-4);padding-top:var(--space-4);border-top:var(--rule-top);display:grid}.article-layout{padding-top:var(--space-12)}}@media (width<=1023px){.article-rail{padding-bottom:var(--space-5);border-bottom:var(--border-hair)}}.toc{font-size:var(--text-ui)}@media (width>=1024px){.toc{top:calc(var(--header-h) + var(--space-6));align-self:start;position:sticky}}.toc>details>summary,.toc__title{font-family:var(--font-mono);font-size:var(--text-meta);letter-spacing:var(--tracking-meta);text-transform:uppercase;color:var(--color-muted);font-weight:500}.toc>details>summary{min-height:var(--control-h-sm);cursor:pointer;border-top:var(--rule-top);border-bottom:var(--border-hair);align-items:center;display:flex}.toc ol{margin:var(--space-3) 0 0;border-left:1px solid var(--color-line);padding:0;list-style:none}.toc li a{padding:var(--space-2) var(--space-3);color:var(--color-ink-2);border-left:3px solid #0000;margin-left:-1px;text-decoration:none;display:block}@media (hover:hover) and (pointer:fine){.toc li a:hover{text-decoration:underline}}.toc li a[aria-current=true]{border-left-color:var(--color-ink);color:var(--color-ink);font-weight:var(--weight-strong)}.callout{padding:var(--space-5);background:var(--color-paper-2);border-top:var(--rule-top)}.callout>*+*{margin-top:var(--space-3)}.sources{font-size:var(--text-ui)}.sources ol{padding-left:1.4em}.sources li+li{margin-top:var(--space-2)}.process{gap:0;margin:0;padding:0;list-style:none;display:grid}.process__step{gap:var(--space-2);padding:0 0 var(--space-8) var(--space-8);align-content:start;display:grid;position:relative}.process__step:before{content:"";border-left:1px solid var(--color-ink);position:absolute;top:8px;bottom:0;left:6px}.process__step:last-child:before{display:none}.process__node{background:var(--color-paper);border:1px solid var(--color-ink);width:13px;height:13px;position:absolute;top:2px;left:0}.process__step:first-child .process__node{background:var(--color-signal)}.process__step p{font-size:var(--text-ui);color:var(--color-ink-2);max-width:40ch}@media (width>=1024px){.process{gap:var(--space-8);grid-template-columns:repeat(4,minmax(0,1fr))}.process--6{gap:var(--space-6);grid-template-columns:repeat(6,minmax(0,1fr))}.process__step{padding:var(--space-8) 0 0}.process__step:before{left:0;right:calc(-1 * var(--space-8));border-left:0;border-top:1px solid var(--color-ink);top:6px;bottom:auto}.process--6 .process__step:before{right:calc(-1 * var(--space-6))}.process__step:last-child:before{display:block;right:0}.process__node{top:0}}.surface-dark .process__step:before{border-color:var(--color-dark-connector)}.surface-dark .process__node{background:var(--color-dark);border-color:var(--color-dark-connector)}.surface-dark .process__step:first-child .process__node{background:var(--color-signal);border-color:var(--color-signal)}.surface-dark .process__step p{color:var(--color-on-dark-muted)}.benefits{grid-template-columns:minmax(0,1fr);gap:0;display:grid}.benefits>div{padding:var(--space-6) 0;border-bottom:var(--border-hair);gap:var(--space-2);display:grid}.benefits h3{font-size:var(--text-h3)}.benefits p{color:var(--color-ink-2);max-width:46ch}@media (width>=768px){.benefits{column-gap:var(--space-10);grid-template-columns:repeat(2,minmax(0,1fr))}}.service-list{border-top:var(--border-ink);margin:0}.service-list>div{gap:var(--space-3) var(--space-10);padding-block:var(--space-8);border-bottom:var(--border-hair);display:grid}@media (width>=1024px){.service-list>div{grid-template-columns:4fr 5fr 3fr}}.service-list dt h3{font-size:var(--text-h3)}.service-list dd{margin:0}.service-list ul{font-size:var(--text-ui);padding-left:1.1em}.service-list li+li{margin-top:var(--space-1)}.contact-band{padding-block:var(--section-y)}.contact-band__grid{gap:var(--space-8);align-items:end;display:grid}@media (width>=1024px){.contact-band__grid{grid-template-columns:7fr 5fr}}.contact-band p{color:var(--color-on-dark-muted);max-width:52ch;margin-top:var(--space-4);font-size:var(--text-lead)}.contact-band__actions{gap:var(--space-3);flex-wrap:wrap;display:flex}.form-card{border-top:var(--rule-top);padding-top:var(--space-6);gap:var(--space-6);max-width:40rem;display:grid}.error-summary{padding:var(--space-5);border:2px solid var(--color-error);background:var(--color-error-surface)}.error-summary h2{font-size:var(--text-h4);font-stretch:100%}.error-summary ul{margin-top:var(--space-2);padding-left:1.2em}.error-summary a{color:var(--color-error);font-weight:var(--weight-strong)}.site-footer{background:var(--color-dark);color:var(--color-on-dark);padding-block:var(--space-16) var(--space-8);font-size:var(--text-ui);border-top:1px solid var(--color-dark-line)}.site-footer a{color:var(--color-on-dark);text-decoration:none}@media (hover:hover) and (pointer:fine){.site-footer a:hover{text-decoration:underline}}.site-footer__top{gap:var(--space-10);padding-bottom:var(--space-12);border-bottom:1px solid var(--color-dark-line);display:grid}@media (width>=768px){.site-footer__top{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=1024px){.site-footer__top{grid-template-columns:4fr 2fr 2fr 2fr 2fr}}.site-footer__brand p{color:var(--color-on-dark-muted);margin-top:var(--space-5);max-width:38ch;line-height:1.55}.site-footer h2{font-family:var(--font-mono);font-size:var(--text-meta);letter-spacing:var(--tracking-meta);text-transform:uppercase;color:var(--color-on-dark-muted);margin-bottom:var(--space-3);font-weight:500;font-stretch:100%}.site-footer ul{gap:var(--space-1);margin:0;padding:0;list-style:none;display:grid}.site-footer li a{align-items:center;min-height:2.25rem;display:inline-flex}.site-footer__bottom{justify-content:space-between;gap:var(--space-3) var(--space-8);padding-top:var(--space-6);color:var(--color-on-dark-muted);font-size:var(--text-small);flex-wrap:wrap;display:flex}.site-footer__bottom ul{gap:var(--space-1) var(--space-6);flex-wrap:wrap;display:flex}.proto-tools{border:1px dashed var(--color-line-strong);padding:var(--space-4) var(--space-5);font-size:var(--text-small);gap:var(--space-3);margin-top:var(--space-12);display:grid}.proto-tools ul{gap:var(--space-2) var(--space-4);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.proto-tools a[aria-current=true]{font-weight:var(--weight-strong)}.gallery-section{padding-block:var(--space-12);border-top:var(--border-ink)}.gallery-section>h2{margin-bottom:var(--space-2)}.gallery-section>p{color:var(--color-muted);margin-bottom:var(--space-8);max-width:62ch}.specimen{gap:var(--space-6);display:grid}.specimen-grid{gap:var(--space-6);grid-template-columns:minmax(0,1fr);display:grid}@media (width>=768px){.specimen-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.specimen__label{font-family:var(--font-mono);font-size:var(--text-meta);color:var(--color-muted);margin-bottom:var(--space-2)}.swatches{gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(10rem,1fr));display:grid}.swatch{border:var(--border-hair)}.swatch__chip{border-bottom:var(--border-hair);height:4.5rem}.swatch__meta{padding:var(--space-3);font-size:var(--text-small);gap:2px;display:grid}.swatch__meta code{font-size:var(--text-meta);color:var(--color-muted)}.type-sample{gap:var(--space-2);padding-block:var(--space-5);border-top:var(--border-hair);display:grid}.dark-sample{background:var(--color-dark);color:var(--color-on-dark);padding:var(--space-6)}.state-forced-focus{outline-offset:2px;outline:3px solid var(--color-focus)!important}.state-forced-hover.btn--primary{--btn-bg:var(--color-signal-hover)}.state-forced-hover.btn--secondary{--btn-bg:var(--color-paper-2)}.page-header{border-bottom:var(--border-hair)}.page-header__inner{padding-block:var(--space-8) var(--space-10)}.page-header__title{margin-top:var(--space-5);max-width:20ch}.page-header__lead{margin-top:var(--space-4)}.page-header .crumbs+.page-header__title{margin-top:var(--space-5)}.page-header__title:first-child{margin-top:0}.empty__body{color:var(--color-muted);max-width:52ch}.empty__body>*+*{margin-top:var(--space-2)}.planner__steps{padding-bottom:var(--space-2)}.planner__summary-group{margin-top:var(--space-8)}.planner__summary-group:first-of-type{margin-top:0}.planner__summary-group>h3{margin-bottom:var(--space-3)}.planner__summary-group+.notice{margin-top:var(--space-8)}.planner__result>.notice{margin-bottom:var(--space-4)}.planner__result .result-section:first-of-type{border-top:0}.planner .planner__panel>header .t-lead{max-width:60ch}.planner .t-h2 .tag{vertical-align:middle;margin-left:var(--space-2)}.result-lead{max-width:65ch;margin-bottom:var(--space-5)}.result-two{gap:var(--space-10);display:grid}@media (width>=1024px){.result-two{gap:var(--space-16);grid-template-columns:repeat(2,minmax(0,1fr))}}.result-two h3{margin-bottom:var(--space-4)}.result-two p+p{margin-top:var(--space-3)}.rec-table th[scope=row]{font-weight:var(--weight-strong)}.rec-table td .tag{margin-left:var(--space-1);vertical-align:1px}@media (width>=768px){.rec-table th[scope=row]{padding-left:var(--space-3)}}.cost-table{max-width:60rem}.result-next p{max-width:60ch;margin-bottom:var(--space-5)}.proto-action-msg:not(:empty){margin-top:var(--space-4);padding:var(--space-3) var(--space-4);background:var(--color-signal-soft);max-width:60ch}html:not(.js) .planner__nav,html:not(.js) .planner__steps{display:none}.gallery{padding-bottom:var(--section-y)}.gallery-toc{padding-inline:0}.specimen-item{min-width:0}.type-specimens{border-top:var(--border-hair)}.type-row{gap:var(--space-2);padding-block:var(--space-5);border-bottom:var(--border-hair);display:grid}@media (width>=1024px){.type-row{align-items:baseline;gap:var(--space-8);grid-template-columns:10rem minmax(0,1fr) 20rem}}.type-row .specimen__label{margin:0}.rule-demo{height:2.5rem}.rule-demo--top{border-top:var(--rule-top)}.rule-demo--ink{border-top:var(--border-ink)}.rule-demo--hair{border-top:var(--border-hair)}.rule-demo--control{border:var(--border-control)}.space-scale{gap:var(--space-2);margin-top:var(--space-8);display:grid}.space-scale div{align-items:center;gap:var(--space-4);grid-template-columns:7rem minmax(0,1fr);display:grid}.space-scale span{background:var(--color-ink);grid-column:1;height:.75rem;display:block}.space-scale code{font-size:var(--text-meta);color:var(--color-muted)}.asset-box{border:var(--border-hair);padding:var(--space-8) var(--space-6);align-items:center;min-height:7rem;display:flex}.asset-box svg{width:auto;max-width:100%;height:2rem}.asset-box--dark{background:var(--color-dark);border-color:var(--color-dark)}.asset-row{gap:var(--space-8);flex-wrap:wrap}.icon-grid{margin:var(--space-8) 0 0;border-top:var(--border-hair);border-left:var(--border-hair);grid-template-columns:repeat(auto-fill,minmax(8.5rem,1fr));padding:0;list-style:none;display:grid}.icon-grid li{justify-items:center;gap:var(--space-2);padding:var(--space-5) var(--space-2);border-right:var(--border-hair);border-bottom:var(--border-hair);display:grid}.icon-grid svg{width:24px;height:24px}.icon-grid code{color:var(--color-muted);font-size:.75rem}.facts-levels{gap:var(--space-8);display:grid}@media (width>=1024px){.facts-levels{grid-template-columns:repeat(3,minmax(0,1fr));align-items:start}}.compare-tray--static{box-shadow:none;position:static}.preview-img{border:var(--border-hair);width:100%;max-width:390px;height:auto}.gallery .contact-band{padding-block:var(--space-12)}.gallery .compare-table-wrap{margin-top:var(--space-2)}.brand img{width:auto;height:40px}.site-footer__brand img{width:auto;height:41.4px}.hero__stats{gap:var(--space-4) var(--space-8);margin-top:var(--space-4);padding-top:var(--space-5);border-top:var(--border-hair);flex-wrap:wrap;display:flex}.hero__stats>div{gap:var(--space-1);display:grid}.hero__stats dt{font-size:var(--text-small);color:var(--color-muted);order:2}.hero__stats dd{font-size:clamp(1.75rem,1.5rem + 1vw,2.25rem);font-weight:var(--weight-display);font-stretch:var(--stretch-h2);font-variant-numeric:tabular-nums;order:1;margin:0;line-height:1}.principles-grid{gap:0 var(--grid-gap);grid-template-columns:minmax(0,1fr);margin:0;padding:0;list-style:none;display:grid}.principles-grid>li{gap:var(--space-2);padding-block:var(--space-5) var(--space-6);border-bottom:var(--border-hair);align-content:start;display:grid}.principles-grid__num{font-family:var(--font-mono);font-size:var(--text-kicker);letter-spacing:var(--tracking-kicker);color:var(--color-muted);font-weight:500}.principles-grid h3{font-size:var(--text-h3)}.principles-grid p{color:var(--color-ink-2);max-width:40ch}@media (width>=640px){.principles-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=1024px){.principles-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.principles-grid>li{border-bottom:0;border-left:var(--border-hair);padding:0 var(--space-6) 0 var(--space-5)}.principles-grid>li:first-child{border-left:0;padding-left:0}}.home-benefits__note{margin-top:var(--space-8);font-size:var(--text-ui);color:var(--color-muted);max-width:60ch}.home-catalog__search{margin-bottom:var(--space-6)}.home-catalog__search .search{max-width:44rem}@media (width>=1024px){.home-catalog .sec-head{margin-bottom:var(--space-5)}}.home-cats{margin-bottom:var(--space-12)}.home-cats .home-cats__list{gap:var(--space-2);margin:0 calc(-1 * var(--gutter));padding:0 var(--gutter) var(--space-2);scrollbar-width:thin;list-style:none;display:flex;overflow-x:auto}.home-cats__list a{align-items:center;gap:var(--space-3);min-height:var(--control-h-sm);padding:0 var(--space-3);border:var(--border-control);background:var(--color-paper);white-space:nowrap;font-size:var(--text-ui);text-decoration:none;display:inline-flex;position:relative}.home-cats__count{font-family:var(--font-mono);font-size:var(--text-meta);color:var(--color-muted)}@media (hover:hover) and (pointer:fine){.home-cats__list a:hover{border-color:var(--color-ink)}}@media (width>=1024px){.home-cats .home-cats__list{gap:0 var(--grid-gap);padding:var(--space-2) 0 0;border-top:var(--border-ink);grid-template-rows:repeat(7,auto);grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;margin:0;display:grid;overflow:visible}.home-cats__list a{min-height:2.5rem;padding:0 var(--space-1) 0 0;border:0;border-bottom:var(--border-hair);white-space:normal;background:0 0;justify-content:space-between;display:flex}@media (hover:hover) and (pointer:fine){.home-cats__list a:hover{text-underline-offset:.22em;text-decoration:underline}}}.home-picks__hint{margin-bottom:var(--space-4);font-size:var(--text-small);color:var(--color-muted)}.home-planner{gap:var(--space-10);align-items:start;display:grid}.home-planner__text{gap:var(--space-6);align-content:start;display:grid}.home-planner__steps{counter-reset:s;border-top:var(--border-hair);margin:0;padding:0;list-style:none}.home-planner__steps li{counter-increment:s;padding-block:var(--space-3);border-bottom:var(--border-hair);font-size:var(--text-ui);grid-template-columns:2.5rem minmax(0,1fr);display:grid}.home-planner__steps li:before{content:counter(s, decimal-leading-zero);font-family:var(--font-mono);font-size:var(--text-meta);color:var(--color-muted);padding-top:2px}.home-planner__visual{border:var(--border-hair);border-top:var(--rule-top);padding:var(--space-6) var(--space-5);background:var(--color-paper)}@media (width>=1024px){.home-planner{gap:var(--grid-gap);grid-template-columns:repeat(12,minmax(0,1fr))}.home-planner__text{grid-column:1/span 5}.home-planner__visual{padding:var(--space-8) var(--space-8) var(--space-6);grid-column:7/-1}}.home-articles{gap:var(--space-8);display:grid}@media (width>=1024px){.home-articles{gap:var(--grid-gap);grid-template-columns:repeat(12,minmax(0,1fr))}.home-articles__main{grid-column:1/span 7}.home-articles__side{grid-column:9/-1}.home-articles__side .article-item:first-child{border-top:var(--rule-top)}}.catalog-console{padding-block:var(--space-5) var(--space-8);border-top:1px solid var(--color-dark-line)}.catalog-console__head{gap:var(--space-3);margin-top:var(--space-4);display:grid}.catalog-console__title{gap:var(--space-3);align-content:end;display:grid}.catalog-console__stats{gap:var(--space-1) 0;font-size:var(--text-small);color:var(--color-on-dark-muted);flex-wrap:wrap;display:flex}.catalog-console__stats>span{padding-right:var(--space-4);margin-right:var(--space-4);border-right:1px solid var(--color-dark-line)}.catalog-console__stats>span:last-child{border-right:0;margin-right:0;padding-right:0}.catalog-console__stats strong{color:var(--color-on-dark);font-weight:var(--weight-strong)}.search--console{margin-top:var(--space-4);max-width:none}.search--console .input{border:1px solid var(--color-paper);border-right:0}.search--console .btn{min-width:6.5rem}@media (width>=1024px){.catalog-console{padding-block:var(--space-6) var(--space-10)}.catalog-console__head{grid-template-columns:minmax(0,1fr)}.search--console{margin-top:var(--space-5)}}@media (width<=1023px){.catalog-console__head{gap:var(--space-2)}.catalog-console .t-h1{font-size:clamp(2rem,1.6rem + 2vw,2.5rem)}.catalog-console__stats{font-size:var(--text-small);gap:var(--space-1) var(--space-4)}.catalog-console__stats>span{border-right:0;margin-right:0;padding-right:0}}@media (width<=599px){.catalog-console{padding-block:var(--space-4) var(--space-5)}.search--console .btn{min-width:0;padding-inline:var(--space-4)}}.category-page{padding-block:var(--space-8) var(--section-y)}.category-intro{gap:var(--space-4);max-width:68ch;font-size:var(--text-ui);display:grid}.category-intro p{margin:0}.category-list{margin-top:var(--space-6)}.category-back{margin-top:var(--space-8)}.sw-hero{border-bottom:var(--border-hair)}.sw-hero__grid{grid-template-columns:minmax(0,1fr);display:grid}.sw-hero__text{gap:var(--space-4);min-width:0;padding-block:var(--space-6) var(--space-8);grid-template-columns:minmax(0,1fr);align-content:start;justify-items:start;display:grid}.sw-hero__text>*{max-width:100%}.sw-hero__grid.has-media .sw-hero__text{padding-inline:var(--gutter)}.sw-hero__text .crumbs{margin-bottom:var(--space-2)}.sw-hero__title{overflow-wrap:anywhere;hyphens:auto;margin:0}.sw-hero__title--long{font-size:var(--text-h2);font-stretch:var(--stretch-body);line-height:1.15}@media (width<=22.49rem){.sw-hero__title--long{font-size:1.375rem}}.sw-hero__cat{margin-top:calc(-1 * var(--space-2));font-family:var(--font-mono);font-size:var(--text-meta);color:var(--color-muted)}.sw-hero__summary{max-width:46ch}.sw-hero__badges{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.sw-hero__badges .tech-badges{gap:var(--space-2)}.sw-hero__side{gap:var(--space-4);width:100%;max-width:36rem;margin-top:var(--space-2);display:grid}.sw-hero__side .api-mcp{margin-top:0}.sw-hero__actions{margin-top:var(--space-1)}.sw-hero__media{padding:var(--space-5) var(--gutter) var(--space-6)}@media (width>=1024px){.sw-hero__grid.has-media{grid-template-columns:minmax(var(--gutter), 1fr) minmax(0, calc(var(--container-max) * .5)) minmax(0, calc(var(--container-max) * .5)) minmax(var(--gutter), 1fr)}.sw-hero__grid.has-media .sw-hero__text{padding:var(--space-8) var(--space-12) var(--space-10) 0;grid-column:2}.sw-hero__media{padding:var(--space-10) var(--gutter) var(--space-10) var(--space-10);grid-column:3/5;align-items:center;display:flex}.sw-hero__media .hero-media{max-width:44rem}.sw-hero__grid:not(.has-media) .sw-hero__text{column-gap:var(--space-16);padding-block:var(--space-8) var(--space-10);grid-template-columns:minmax(0,7fr) minmax(0,5fr)}.sw-hero__grid:not(.has-media) .sw-hero__text>*{grid-column:1}.sw-hero__grid:not(.has-media) .sw-hero__text>.crumbs{grid-column:1/-1}.sw-hero__grid:not(.has-media) .sw-hero__side{grid-area:2/2/span 6;align-self:end;margin-top:0}.sw-hero__grid:not(.has-media) .sw-hero__summary{max-width:52ch}}.sw-hero__marks{align-items:center;gap:var(--space-3);flex-direction:row;display:flex;position:relative}.sw-hero__logo{object-fit:contain;flex:none;width:3.5rem;height:3.5rem}@media (width>=1024px){.sw-hero__logo{width:4rem;height:4rem}}.sw-hero__seal{cursor:help;border-radius:var(--radius);background:0 0;border:0;justify-content:center;align-items:center;padding:0;display:inline-flex;position:static}.sw-hero__seal img{width:auto;height:3.5rem;display:block}@media (width>=1024px){.sw-hero__seal img{height:4rem}}.sw-hero__seal:focus-visible{outline:2px solid var(--color-ink);outline-offset:3px}.sw-hero__tip{z-index:20;top:calc(100% + var(--space-2));width:min(18rem, calc(100vw - 2 * var(--gutter)));padding:var(--space-3);border:1px solid var(--color-dark-line);background:var(--color-dark);color:var(--color-paper);font-size:var(--text-small);text-align:left;opacity:0;visibility:hidden;pointer-events:none;line-height:1.45;position:absolute;left:0;transform:translateY(-.25rem);box-shadow:0 10px 24px #00000029}.sw-hero__seal:hover .sw-hero__tip,.sw-hero__seal:focus .sw-hero__tip,.sw-hero__seal.is-open .sw-hero__tip{opacity:1;visibility:visible;transform:translateY(0)}.hero-media{gap:var(--space-3);width:100%;margin:0;display:grid}.hero-media__main{border:1px solid var(--color-dark-line);background:var(--color-viewer-surface);display:block;position:relative}.hero-media__img{aspect-ratio:16/9;object-fit:cover;object-position:top left;width:100%;height:auto;display:block}.hero-media__zoom{right:var(--space-2);bottom:var(--space-2);background:var(--color-dark);width:2.25rem;height:2.25rem;color:var(--color-on-dark);border:1px solid var(--color-dark-line);transition:background-color var(--duration-fast) var(--ease-out), color var(--duration-fast) var(--ease-out);place-items:center;display:grid;position:absolute}.hero-media__zoom svg{width:18px;height:18px}@media (hover:hover) and (pointer:fine){.hero-media__main:hover .hero-media__zoom{background:var(--color-signal);color:var(--color-on-signal);border-color:var(--color-signal)}}.hero-media__main:focus-visible,.hero-media__thumbs a:focus-visible{outline:3px solid var(--color-focus-on-dark);outline-offset:3px}.hero-media__caption{font-size:var(--text-small);color:var(--color-on-dark-muted);line-height:1.45}.hero-media__count{font-family:var(--font-mono);font-size:var(--text-meta);color:var(--color-on-dark);margin-right:var(--space-2)}.hero-media__thumbs{gap:var(--space-2);grid-template-columns:repeat(4,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}.hero-media__thumbs a{border:1px solid var(--color-dark-line);text-decoration:none;display:block}.hero-media__thumb{aspect-ratio:16/9;object-fit:cover;object-position:top left;opacity:.82;width:100%;height:auto;transition:opacity var(--duration-fast) var(--ease-out);display:block}@media (hover:hover) and (pointer:fine){.hero-media__thumbs a:hover .hero-media__thumb{opacity:1}}.hero-media__thumbs .hero-media__more{aspect-ratio:16/9;background:var(--color-dark-2);font-family:var(--font-mono);font-size:var(--text-ui);color:var(--color-on-dark);place-items:center;display:grid}@media (hover:hover) and (pointer:fine){.hero-media__more:hover{background:var(--graphite-700)}}.sw-localnav{background:var(--color-paper);border-bottom:var(--border-hair)}.sw-localnav__list{gap:0 var(--space-5);scrollbar-width:none;margin:0;padding:0;list-style:none;display:flex;overflow-x:auto}.sw-localnav__list::-webkit-scrollbar{display:none}.sw-localnav a{min-height:var(--localnav-h);white-space:nowrap;font-size:var(--text-small);font-weight:var(--weight-medium);color:var(--color-ink-2);border-block:3px solid #0000;align-items:center;text-decoration:none;display:inline-flex}@media (hover:hover) and (pointer:fine){.sw-localnav a:hover{color:var(--color-ink);border-bottom-color:var(--color-line-strong)}}.sw-localnav a[aria-current]{color:var(--color-ink);border-bottom-color:var(--color-ink);font-weight:var(--weight-strong)}.sw-localnav a:focus-visible{outline-offset:-3px}@media (width>=1024px){.sw-localnav{top:var(--header-h);z-index:45;position:sticky}html:has(>body.sw-page){scroll-padding-top:calc(var(--header-h) + var(--localnav-h) + var(--space-4))}}.sw-verdict{background:var(--color-paper-2);padding-block:var(--space-10) var(--space-12)}.sw-verdict__head{justify-content:space-between;align-items:baseline;gap:var(--space-2) var(--space-6);padding-top:var(--space-4);border-top:var(--border-ink);margin-bottom:var(--space-8);flex-wrap:wrap;display:flex}.sw-verdict__head h2{font-size:var(--text-h2)}.sw-verdict__head .link-arrow{font-size:var(--text-ui)}.sw-verdict__grid{gap:var(--space-8);display:grid}@media (width>=1024px){.sw-verdict__grid{gap:var(--space-12);grid-template-columns:16rem minmax(0,1fr);align-items:start}.sw-verdict__grid.is-empty{grid-template-columns:minmax(0,36rem)}}@media (width<=1023px){.sw-verdict .score__meta{column-gap:var(--space-6);grid-template-columns:repeat(2,minmax(0,1fr))}.sw-verdict .score__meta>div:first-child{grid-column:1/-1}}.dims{border-top:var(--border-hair);margin:0;padding:0;list-style:none}.dim{gap:var(--space-2);padding:var(--space-4) 0 var(--space-4) var(--space-4);border-bottom:var(--border-hair);border-left:3px solid var(--score-dim-none);grid-template-columns:minmax(0,1fr);display:grid}.dim--high{border-left-color:var(--score-dim-high)}.dim--mid{border-left-color:var(--score-dim-mid)}.dim--low{border-left-color:var(--score-dim-low)}.dim--min{border-left-color:var(--score-dim-min)}.dim__name{font-size:var(--text-ui);font-stretch:100%;font-weight:var(--weight-strong);line-height:1.3}.dim__score{align-items:center;gap:var(--space-1) var(--space-3);flex-wrap:wrap;display:flex}.dim__score .meter{width:6.5rem}.dim__value{font-family:var(--font-mono);font-size:var(--text-ui);font-variant-numeric:tabular-nums;font-weight:600}.dim__denom{color:var(--color-muted);font-weight:400}.dim__word{font-size:var(--text-small);color:var(--color-muted)}.dim__just{font-size:var(--text-ui);color:var(--color-ink-2);max-width:70ch;line-height:1.55}@media (width>=768px){.dim{column-gap:var(--space-6);grid-template-columns:12.5rem 9.5rem minmax(0,1fr);align-items:baseline}.dim__score{gap:var(--space-1) var(--space-2);grid-template-columns:auto 1fr;display:grid}.dim__word{grid-column:1/-1}}.sw-layout{gap:var(--space-12);padding-block:var(--space-10) var(--section-y);grid-template-columns:minmax(0,1fr);display:grid}@media (width>=1024px){.sw-layout{column-gap:var(--space-16);grid-template-columns:minmax(0,1fr) 22rem;grid-template-areas:"main aside";align-items:start;row-gap:0}.sw-main{grid-area:main}.sw-aside{grid-area:aside}}@media (width>=48rem) and (width<=63.9375rem){.sw-aside{column-gap:var(--space-8);grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;display:grid}.sw-aside .sw-aside__block+.sw-aside__block{margin-top:0}}.sw-main>.sw-section:first-child{padding-top:0}.sw-section{padding-top:var(--space-12);gap:var(--space-4);grid-template-columns:minmax(0,1fr);display:grid}.sw-section>h2{font-size:var(--text-h3);font-stretch:var(--stretch-h3);padding-top:var(--space-3);border-top:var(--border-ink)}.sw-two{gap:var(--space-6);display:grid}@media (width>=768px){.sw-two{gap:var(--space-10);grid-template-columns:repeat(2,minmax(0,1fr))}}.sw-two h3{font-size:var(--text-h4);margin-bottom:var(--space-2)}.sw-list-plain{gap:var(--space-2);font-size:var(--text-ui);grid-template-columns:minmax(0,1fr);padding-left:1.1em;display:grid}.sw-aside__block{border-top:var(--rule-top);padding-top:var(--space-4)}.sw-aside__block+.sw-aside__block{margin-top:var(--space-10)}.sw-aside__block>h2{font-size:var(--text-h4);margin-bottom:var(--space-3);font-stretch:100%}.sw-aside__sub{margin-top:var(--space-6);padding-top:var(--space-4);border-top:var(--border-hair)}.sw-aside__sub>h3{font-size:var(--text-ui);font-stretch:100%;font-weight:var(--weight-strong);margin-bottom:var(--space-2)}.score-cards{gap:var(--space-4);display:grid}@media (width>=768px){.score-cards{gap:var(--space-5) var(--space-6);grid-template-columns:repeat(2,minmax(0,1fr))}}.score-card{gap:var(--space-3);border:var(--border-ink);min-width:0;padding:var(--space-5);align-content:start;display:grid}.score-card__name{font-size:var(--text-h4);overflow-wrap:anywhere}.score-card__score{align-items:baseline;gap:var(--space-2) var(--space-3);flex-wrap:wrap;display:flex}.score-card__value{font-family:var(--font-mono);font-size:2rem;font-weight:var(--weight-strong);font-variant-numeric:tabular-nums;letter-spacing:-.02em;line-height:1}.score-card__denom{font-family:var(--font-mono);font-size:var(--text-h4);color:var(--color-muted)}.score-card__value.is-none{font-family:var(--font-sans);font-size:var(--text-h4);font-weight:var(--weight-strong);color:var(--color-muted)}.score-card__word{font-size:var(--text-ui);color:var(--color-muted)}.score-card__just{font-size:var(--text-body);line-height:var(--leading-body);color:var(--color-ink-2)}.score-card__explain{border-top:var(--border-hair);padding-top:var(--space-2);font-size:var(--text-small)}.score-card__explain>summary{align-items:center;gap:var(--space-2);min-height:var(--control-h-sm);cursor:pointer;font-weight:var(--weight-strong);list-style:none;display:inline-flex}.score-card__explain>summary::-webkit-details-marker{display:none}.score-card__explain>summary svg{width:18px;height:18px;transition:transform var(--duration-fast) var(--ease-out)}.score-card__explain[open]>summary svg{transform:rotate(180deg)}.score-card__explain>p{margin-top:var(--space-2);color:var(--color-ink-2);line-height:1.5}.cost-grid{gap:var(--space-4);display:grid}@media (width>=768px){.cost-grid{gap:var(--space-8);grid-template-columns:repeat(2,minmax(0,1fr))}}.cost-grid>div{border-top:var(--border-ink);padding-top:var(--space-3)}.cost-grid h3{font-size:var(--text-h4);margin-bottom:var(--space-2)}.review-meta{gap:var(--space-2) var(--space-8);font-size:var(--text-ui);flex-wrap:wrap;display:flex}.review-meta dt{color:var(--color-muted);font-size:var(--text-small)}.review-meta dd{font-weight:var(--weight-medium);margin:0}.compare-controls{justify-content:space-between;align-items:center;gap:var(--space-3) var(--space-6);padding-block:var(--space-6) var(--space-4);flex-wrap:wrap;display:flex}.compare-picked{gap:var(--space-2);flex-wrap:wrap;display:flex}.compare-main{padding-bottom:var(--section-y)}.compare-explain{margin-top:var(--space-10);gap:var(--space-6);display:grid}@media (width>=1024px){.compare-explain{gap:var(--space-12);grid-template-columns:repeat(2,minmax(0,1fr))}}.planner-wrap{padding-block:var(--space-8) var(--section-y)}.planner-head{gap:var(--space-6);margin-bottom:var(--space-8);display:grid}.knowledge{padding-block:var(--space-8) var(--section-y)}.knowledge__bar{justify-content:space-between;align-items:center;gap:var(--space-3) var(--space-6);padding-bottom:var(--space-5);border-bottom:var(--border-ink);flex-wrap:wrap;display:flex}.knowledge-list{display:grid}.article-entry{gap:var(--space-3);padding-block:var(--space-6) var(--space-7);border-bottom:var(--border-hair);display:grid;position:relative}.article-entry__meta{align-items:center;gap:var(--space-2) var(--space-4);font-size:var(--text-small);color:var(--color-muted);flex-wrap:wrap;display:flex}.article-entry__meta time{font-variant-numeric:tabular-nums}.article-entry__title{font-size:clamp(1.5rem,1.25rem + 1vw,2rem);font-stretch:var(--stretch-h2);max-width:28ch;line-height:1.12}.article-entry__title a{text-decoration:none}.article-entry__title a:after{content:"";position:absolute;inset:0}@media (hover:hover) and (pointer:fine){.article-entry:hover .article-entry__title a{text-decoration:underline 2px}}.article-entry__body p{margin-top:var(--space-3);color:var(--color-ink-2);max-width:62ch}@media (width>=1024px){.article-entry{column-gap:var(--grid-gap);grid-template-columns:repeat(12,minmax(0,1fr))}.article-entry__meta{flex-direction:column;grid-column:1/span 3;align-items:flex-start;padding-top:.5em}.article-entry__body{grid-column:4/span 8}}.knowledge__start{justify-content:space-between;align-items:center;gap:var(--space-5) var(--space-8);margin-top:var(--space-16);padding:var(--space-6);background:var(--color-paper-2);border-top:var(--rule-top);flex-wrap:wrap;display:flex}.knowledge__start p{margin-top:var(--space-2);max-width:54ch;color:var(--color-ink-2)}.related{padding-block:var(--space-12);border-top:var(--border-ink)}.related>h2{margin-bottom:var(--space-6)}.next-step{margin-top:var(--space-12)}.lead-grid{gap:var(--space-8);display:grid}@media (width>=1024px){.lead-grid{gap:var(--grid-gap);grid-template-columns:repeat(12,minmax(0,1fr))}.lead-grid>:first-child{grid-column:1/span 5}.lead-grid>:last-child{grid-column:7/-1}}.principles{border-top:var(--border-ink);gap:0;display:grid}.principles>div{gap:var(--space-2);padding-block:var(--space-6);border-bottom:var(--border-hair);display:grid}@media (width>=768px){.principles>div{gap:var(--space-8);grid-template-columns:16rem minmax(0,1fr)}}.principles h3{font-size:var(--text-h4)}.principles p{color:var(--color-ink-2);max-width:62ch}.placeholder{font-family:var(--font-mono);font-size:var(--text-meta);background:var(--color-paper-2);padding:.1em .35em}.contact-layout{gap:var(--space-12);padding-block:var(--space-10) var(--section-y);display:grid}@media (width>=1024px){.contact-layout{gap:var(--space-16);grid-template-columns:minmax(0,7fr) minmax(0,4fr)}}.contact-aside{gap:var(--space-8);align-content:start;display:grid}@media (width>=1024px){.contact-aside{top:calc(var(--header-h) + var(--space-6));align-self:start;position:sticky}}.contact-aside>div{border-top:var(--rule-top);padding-top:var(--space-4);gap:var(--space-2);font-size:var(--text-ui);display:grid}.article-kicker{gap:var(--space-2);flex-wrap:wrap;display:flex}.article-header .article-kicker+.t-h1{margin-top:var(--space-4)}.article-body{gap:var(--space-12);grid-template-columns:minmax(0,1fr);min-width:0;display:grid}.article-body .prose{max-width:var(--measure-read);font-size:var(--text-read);line-height:var(--leading-read)}.article-body .prose h2{font-size:clamp(1.5rem,1.3rem + .8vw,1.875rem)}.article-body .prose h3{font-size:var(--text-h3)}.article-body .prose blockquote{padding-left:var(--space-5);border-left:3px solid var(--color-ink);font-size:var(--text-lead);color:var(--color-ink-2)}.article-body .article-next{max-width:var(--measure-read)}.article-body .prose section+section{margin-top:var(--space-12)}.article-body .prose .callout,.article-body .prose .table-figure{margin-block:var(--space-6)}.sources{border-top:var(--border-ink);padding-top:var(--space-5);gap:var(--space-3);display:grid}.article-tools>h2{margin-bottom:var(--space-5)}.article-next .cluster{margin-top:var(--space-2)}.related__grid{gap:0 var(--grid-gap);display:grid}@media (width>=768px){.related__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.article-body .prose section>*+*{margin-top:var(--space-5)}.article-body .prose section>h2+*{margin-top:var(--space-4)}.tool-links{border-top:var(--border-ink);margin:0;padding:0;list-style:none}.tool-links li{gap:var(--space-1);padding-block:var(--space-4);border-bottom:var(--border-hair);display:grid}.tool-links__name{font-weight:var(--weight-heading);font-stretch:var(--stretch-h3);font-size:var(--text-h4)}.tool-links__name a{text-decoration:none}@media (hover:hover) and (pointer:fine){.tool-links__name a:hover{text-decoration:underline}}.tool-links__desc{font-size:var(--text-ui);color:var(--color-ink-2);max-width:60ch}.form-row{gap:var(--space-6);display:grid}@media (width>=600px){.form-row{grid-template-columns:repeat(2,minmax(0,1fr))}}.form-actions{align-items:center;gap:var(--space-3) var(--space-5);flex-wrap:wrap;display:flex}.form-success{gap:var(--space-6);max-width:40rem;display:grid}.form-success:focus{outline:none}.error-summary:focus{outline:3px solid var(--color-focus);outline-offset:3px}.contact-aside p+p{margin-top:var(--space-2)}.page-toc{padding-block:var(--space-5);border-bottom:var(--border-hair)}.page-toc ul{gap:var(--space-2) var(--space-6);font-size:var(--text-ui);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.page-toc a{align-items:center;min-height:2.25rem;display:inline-flex}.method{gap:var(--space-12);display:grid}.method>section{gap:var(--space-4);max-width:var(--measure);display:grid}.rating-explain{margin:0}.rating-explain__row{padding-block:var(--space-4);border-top:var(--border-hair)}.rating-explain__row:last-child{border-bottom:var(--border-hair)}.rating-explain dt{gap:var(--space-4);grid-template-columns:5.25rem minmax(0,1fr);align-items:center;display:grid}.rating-explain__w{gap:.35rem;display:grid}.rating-explain__pct{font-family:var(--font-mono);color:var(--color-ink);font-variant-numeric:tabular-nums;font-size:1.35rem;font-weight:700;line-height:1}.rating-explain__pct span{color:var(--color-muted);margin-left:.1rem;font-size:.8rem;font-weight:600}.rating-explain__bar{background:var(--color-line);height:3px}.rating-explain__bar i{background:var(--color-signal);height:100%;width:calc(var(--w) * 4%);display:block}.rating-explain__name{font-size:var(--text-ui);font-weight:var(--weight-strong);line-height:1.3}.rating-explain dd{margin:.45rem 0 0 calc(5.25rem + var(--space-4));max-width:62ch;color:var(--color-ink-2);font-size:var(--text-small);line-height:1.55}@media (width<=40rem){.rating-explain dt{gap:var(--space-3);grid-template-columns:3.75rem minmax(0,1fr)}.rating-explain dd{margin-left:0}}.scale-legend{border-top:var(--border-hair);margin:0;padding:0;list-style:none}.scale-legend li{gap:var(--space-4);padding-block:var(--space-3);border-bottom:var(--border-hair);font-size:var(--text-ui);grid-template-columns:6.5rem minmax(0,1fr);align-items:center;display:grid}.scale-legend strong{margin-right:var(--space-2)}.verify-list{padding-left:0;list-style:none}.verify-list li{display:block}.facts--about{border-top:var(--border-ink)}.section .lead-grid .prose h3{margin-top:var(--space-8)}.section .lead-grid .prose h3:first-child{margin-top:0}.score{gap:var(--space-2);align-content:start;display:grid}.score__label{font-family:var(--font-mono);font-size:var(--text-kicker);letter-spacing:var(--tracking-kicker);text-transform:uppercase;color:var(--color-muted);font-weight:500}.score__value{align-items:baseline;gap:3px;margin:0;line-height:1;display:flex}.score__num{font-family:var(--font-mono);letter-spacing:-.03em;font-variant-numeric:tabular-nums;font-size:2.25rem;font-weight:600}.score__denom{font-family:var(--font-mono);font-size:var(--text-small);color:var(--color-muted)}.score__bar{background:var(--score-bar-track);max-width:12rem;height:4px;display:block}.score__bar>span{background:var(--score-bar-high);height:100%;display:block}.is-mid>.score__bar>span{background:var(--score-bar-mid)}.is-low>.score__bar>span{background:var(--score-bar-low)}.score__status{font-size:var(--text-small);color:var(--color-ink-2);line-height:1.35}.score__none{font-weight:var(--weight-strong);font-size:var(--text-ui);line-height:1.3}.score__note{font-size:var(--text-small);color:var(--color-muted);line-height:1.5}.score.is-none{padding:var(--space-3);border:1px dashed var(--color-line-strong);gap:var(--space-1)}.score.is-none .score__status{color:var(--color-muted)}.score__meta{gap:var(--space-2);padding-top:var(--space-3);border-top:var(--border-hair);font-size:var(--text-ui);display:grid}.score__meta dt{font-size:var(--text-small);color:var(--color-muted)}.score__meta dd{font-weight:var(--weight-medium);margin:0}.score--lg{gap:var(--space-3)}.score--lg .score__num{letter-spacing:-.04em;font-size:clamp(3.75rem,3rem + 2.5vw,5rem)}.score--lg .score__denom{font-size:var(--text-h4)}.score--lg .score__bar{max-width:none;height:6px}.score--lg.is-none{padding:var(--space-5)}.score-line{align-items:center;gap:var(--space-2) var(--space-5);padding:var(--space-3) 0;border-top:var(--border-ink);border-bottom:var(--border-hair);grid-template-columns:minmax(0,1fr) auto;display:grid}.score-line__text{align-items:baseline;gap:0 var(--space-2);flex-wrap:wrap;line-height:1.2;display:flex}.score-line__label{font-family:var(--font-mono);font-size:var(--text-kicker);letter-spacing:var(--tracking-kicker);text-transform:uppercase;color:var(--color-muted);align-self:center;font-weight:500}.score-line__num{font-family:var(--font-mono);letter-spacing:-.03em;font-variant-numeric:tabular-nums;font-size:1.75rem;font-weight:600}.score-line__denom{font-family:var(--font-mono);font-size:var(--text-small);color:var(--color-muted);margin-left:-.35rem}.score-line__status{font-size:var(--text-small);color:var(--color-ink-2)}.score-line .score__bar{grid-column:1;max-width:16rem}.score-line__go{justify-self:end;align-items:center;gap:var(--space-2);font-size:var(--text-ui);font-weight:var(--weight-strong);grid-area:1/2/span 2;text-decoration:none;display:inline-flex}.score-line__go svg{width:1.1em;height:1.1em}@media (hover:hover) and (pointer:fine){.score-line__go:hover{text-underline-offset:.22em;text-decoration:underline}}.score-line.is-none .score-line__text strong{font-size:var(--text-ui)}.score-box{border:var(--border-ink);padding:var(--space-4);gap:var(--space-3);display:grid}.score-box__value{align-items:baseline;gap:var(--space-2);display:flex}.score-box .score-box__num{font-family:var(--font-mono);font-size:4rem;font-weight:var(--weight-strong);font-variant-numeric:tabular-nums;letter-spacing:-.02em;line-height:1}.score-box .score-box__denom{font-family:var(--font-mono);font-size:var(--text-h4);color:var(--color-muted)}.score-box__status{margin:0}.score-box__meta{gap:var(--space-2);font-size:var(--text-ui);border-top:var(--border-hair);padding-top:var(--space-3);display:grid}.score-box__meta dt{color:var(--color-muted);font-size:var(--text-small)}.score-box__meta dd{font-weight:var(--weight-medium);margin:0}.score-box.is-none{border-style:dashed}.score-box.is-none .score-box__status{font-weight:var(--weight-medium)}.project-meta__trend{font-size:var(--text-small);color:var(--color-data);font-variant-numeric:tabular-nums}.project-meta__trend.is-none{color:var(--color-muted)}.project-meta__src{align-items:center;gap:var(--space-1);font-size:var(--text-ui);display:inline-flex}.project-meta__src .icon{width:1em;height:1em}.source-list__items{gap:var(--space-3);margin:0;padding:0;list-style:none;display:grid}.source-list__item{border-top:var(--border-hair);padding-top:var(--space-2);gap:2px;display:grid}.source-list__item a{font-weight:var(--weight-medium)}.media-section{gap:var(--space-6);display:grid}.media-logo{gap:var(--space-2);justify-items:start;display:grid}.media-logo img{border:var(--border-hair);max-width:12rem;height:auto}.media-gallery ul,.video-list ul{gap:var(--space-4);margin:0;padding:0;list-style:none;display:grid}.media-gallery__hint{margin:0 0 var(--space-4)}@media (width>=40rem){.media-gallery__swipe{display:none}}.media-gallery figure{gap:var(--space-2);margin:0;display:grid}.media-gallery img{aspect-ratio:16/9;object-fit:cover;object-position:top left;border:var(--border-hair);background:var(--color-paper-2);width:100%;height:auto;display:block}.media-gallery__item{display:block}.media-gallery__item:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}html.js .media-gallery__item{cursor:zoom-in}@media (width<=39.99rem){.media-gallery ul[role=list]{gap:var(--space-3);scroll-snap-type:x mandatory;scrollbar-width:thin;margin-inline:calc(-1 * var(--gutter));padding:0 var(--gutter) var(--space-3);scroll-padding-inline:var(--gutter);display:flex;overflow-x:auto}.media-gallery li{scroll-snap-align:start;flex:0 0 82%}}@media (width>=40rem){.media-gallery ul{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=64rem){.media-gallery ul{grid-template-columns:repeat(4,minmax(0,1fr))}}.video-list li{gap:2px;display:grid}.video-list a{font-weight:var(--weight-medium)}.lightbox{border:1px solid var(--color-dark-line);padding:var(--space-2);background:var(--color-dark-2);-webkit-user-select:none;user-select:none;width:fit-content;max-width:96vw;max-height:96vh;margin:auto}.lightbox::backdrop{background:#0a0b0de0}.lightbox__bar{align-items:center;gap:var(--space-2);margin-bottom:var(--space-2);color:var(--color-on-dark);display:flex}.lightbox__counter{font-family:var(--font-mono);color:var(--color-on-dark-muted);margin:0 auto 0 0}.lightbox__btn{border:1px solid var(--color-dark-line);background:var(--color-dark);width:2.5rem;height:2.5rem;color:var(--color-on-dark);cursor:pointer;justify-content:center;align-items:center;padding:0;display:inline-flex}.lightbox__btn:hover{background:var(--color-dark-module)}.lightbox__btn:focus-visible{outline:2px solid var(--color-focus-on-dark);outline-offset:2px}.lightbox__figure{gap:var(--space-2);margin:0;display:grid}.lightbox__figure img{object-fit:contain;background:var(--color-viewer-surface);border:1px solid var(--color-dark-line);-webkit-user-drag:none;-webkit-user-select:none;user-select:none;width:auto;max-width:100%;height:auto;max-height:calc(96vh - 7rem);margin-inline:auto;display:block}.lightbox__caption{color:var(--color-on-dark-muted);margin:0}.lightbox__caption:empty{display:none}.score-num{font-family:var(--font-mono);font-size:var(--text-h4);font-variant-numeric:tabular-nums;font-weight:var(--weight-strong)}@media (width>=40rem){.score-box .score-box__num{font-size:4.75rem}}.score-box.is-high{background:var(--score-band-high-bg)}.score-box.is-mid{background:var(--score-band-mid-bg)}.score-box.is-low{background:var(--score-band-low-bg)}.score-box.is-none{background:var(--score-band-none-bg)}.score-num--high,.score-num--mid,.score-num--low{border-bottom:3px solid;padding-bottom:2px}.score-num--high{border-bottom-color:var(--score-bar-high)}.score-num--mid{border-bottom-color:var(--score-bar-mid)}.score-num--low{border-bottom-color:var(--score-bar-low)}.sw-row__meta{align-items:center;gap:var(--space-2) var(--space-4);flex-wrap:wrap;display:flex}.star-badge{align-items:center;gap:var(--space-1);font-size:var(--text-small);color:var(--color-data);line-height:1.2;display:inline-flex}.star-badge .icon{width:1em;height:1em;color:var(--color-data-muted)}.star-badge__num{font-family:var(--font-sans);font-weight:var(--weight-strong);font-variant-numeric:tabular-nums}.star-badge__label,.star-badge[data-stale] .icon{color:var(--color-muted)}.tech-badges{gap:var(--space-1);flex-wrap:wrap;display:inline-flex}.tech-badge{align-items:baseline;gap:var(--space-1);border:1px solid var(--color-line);background:var(--color-paper);padding:2px var(--space-2);font-family:var(--font-mono);color:var(--color-ink-2);font-size:.75rem;font-weight:500;line-height:1.4;display:inline-flex}.tech-badge small{color:var(--color-muted);font-weight:var(--weight-body)}.tech-badge.is-match{border-color:var(--color-ink);background:var(--color-ink);color:var(--color-on-dark);font-weight:600}[data-tip]{cursor:help}.badge-tip{z-index:70;max-width:min(20rem,100vw - 1.5rem);padding:var(--space-2) var(--space-3);border:1px solid var(--color-dark-line);background:var(--color-dark);color:var(--color-paper);font-family:var(--font-body);font-size:var(--text-small);font-weight:var(--weight-body);text-align:left;opacity:0;visibility:hidden;pointer-events:none;line-height:1.45;transition:opacity .12s,transform .12s;position:fixed;top:0;left:0;transform:translateY(-.25rem);box-shadow:0 8px 20px #0003}.badge-tip.is-visible{opacity:1;visibility:visible;transform:translateY(0)}@media (prefers-reduced-motion:reduce){.badge-tip{transition:none}}.project-meta{gap:var(--space-2);display:grid}.project-meta__head{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.project-meta__stars{align-items:center;gap:var(--space-2);font-size:var(--text-ui);color:var(--color-data);display:flex}.project-meta__stars .icon{width:1.1em;height:1.1em;color:var(--color-data-muted)}.project-meta__stars strong{font-family:var(--font-sans);font-size:2rem;font-weight:var(--weight-strong);letter-spacing:-.01em;font-variant-numeric:tabular-nums}.project-meta__forks{font-family:var(--font-sans);font-size:var(--text-small);color:var(--color-muted);font-variant-numeric:tabular-nums}.project-meta__kind{border-left:3px solid var(--color-line-strong);padding-left:var(--space-2)}.score-box__stars{align-items:center;gap:var(--space-2);font-size:var(--text-ui);border-top:var(--border-hair);padding-top:var(--space-3);display:flex}.score-box__stars .icon{width:1.1em;height:1.1em;color:var(--color-signal)}.score-box__stars .num{font-family:var(--font-mono);font-weight:var(--weight-strong);font-variant-numeric:tabular-nums}.score-box__stars-label{color:var(--color-muted)}.score-box__stars-src{margin-left:auto;display:inline-flex}.tech-note{margin-top:var(--space-1);max-width:var(--measure)}.tech-resources{border-top:var(--border-hair);gap:0;margin:0;padding:0;list-style:none;display:grid}.tech-resource{align-items:center;gap:var(--space-3);min-height:var(--control-h);padding:var(--space-2) 0;border-bottom:var(--border-hair);flex-wrap:wrap;display:flex}.tech-resource__type{min-width:8.5rem;font-size:var(--text-small);font-weight:var(--weight-strong);color:var(--color-muted);flex:none}.tech-resource a{font-weight:var(--weight-strong)}.tech-resource .tag{margin-left:auto}.ai-copy .icon{width:1.1em;height:1.1em}.ai-copy.is-copied{--btn-bg:var(--color-paper-2)}.score-card--high{border-left:4px solid var(--score-dim-high)}.score-card--mid{border-left:4px solid var(--score-dim-mid)}.score-card--low{border-left:4px solid var(--score-dim-low)}.score-card--min{border-left:4px solid var(--score-dim-min)}.score-card--none{border-left:4px solid var(--score-dim-none)}.about-program{max-width:var(--measure);gap:var(--space-4);display:grid}.about-program p{font-size:var(--text-body);line-height:var(--leading-body);color:var(--color-ink-2);margin:0}.api-mcp{gap:var(--space-2);margin-top:var(--space-4);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.api-mcp-mark{min-width:0}.api-mcp-mark>summary{align-items:center;gap:var(--space-2);min-height:var(--control-h-sm);padding:4px var(--space-3);border:var(--border-control);background:var(--color-paper);cursor:pointer;font-size:var(--text-small);font-weight:var(--weight-medium);width:100%;list-style:none;display:inline-flex}.api-mcp-mark>summary::-webkit-details-marker{display:none}.api-mcp-mark>summary:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.api-mcp-mark__ico{flex:none;align-items:center;display:inline-flex}.api-mcp-mark__ico .icon{width:16px;height:16px}.api-mcp-mark__label{align-items:baseline;gap:var(--space-1);min-width:0;display:inline-flex}.api-mcp-mark__status{color:var(--color-muted)}.api-mcp-mark__chevron{width:16px;height:16px;color:var(--color-muted);transition:transform var(--duration-fast) var(--ease-out);flex:none;margin-left:auto}.api-mcp-mark[open]>summary .api-mcp-mark__chevron{transform:rotate(180deg)}.api-mcp-mark.is-official .api-mcp-mark__ico{color:var(--color-success)}.api-mcp-mark.is-third_party .api-mcp-mark__ico{color:var(--score-dim-mid)}.api-mcp-mark.is-not_found .api-mcp-mark__ico,.api-mcp-mark.is-not_checked .api-mcp-mark__ico{color:var(--color-muted)}.mark__dot{background:currentColor;border-radius:50%;width:10px;height:10px}.api-mcp-mark__body{margin-top:var(--space-2);padding:var(--space-4);border:var(--border-ink);background:var(--color-paper);overflow-wrap:anywhere;width:100%;max-width:none}.api-mcp-mark__panel{gap:var(--space-2);display:grid}.api-mcp-mark__panel p{margin:0}.api-mcp-mark__explain{font-size:var(--text-small);line-height:1.5}.api-mcp-mark__meta{font-size:var(--text-small);font-weight:var(--weight-medium)}.api-mcp-mark__link{margin-top:var(--space-1)}.api-mcp-mark__alt{border-top:var(--border-hair);margin-top:var(--space-3);padding-top:var(--space-2);gap:var(--space-1);display:grid}.api-mcp-mark__alt p{margin:0}.verif-details{margin-top:var(--space-1)}.verif-details>summary{align-items:center;gap:var(--space-2);cursor:pointer;font-size:var(--text-small);font-weight:var(--weight-medium);color:var(--color-muted);min-height:var(--control-h-sm);list-style:none;display:inline-flex}.verif-details>summary::-webkit-details-marker{display:none}.verif-details>summary:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.verif-details__chevron{width:16px;height:16px;transition:transform var(--duration-fast) var(--ease-out)}.verif-details[open]>summary .verif-details__chevron{transform:rotate(180deg)}.verif-details>p{margin:var(--space-2) 0 0;font-size:var(--text-small);color:var(--color-ink-2);line-height:1.5}.activity{gap:var(--space-2);display:grid}.activity__meta{justify-content:flex-end;display:flex}.activity__total{align-items:baseline;gap:var(--space-2);margin:0;display:flex}.activity__total .num{font-family:var(--font-sans);font-size:2rem;font-weight:var(--weight-strong);font-variant-numeric:tabular-nums;letter-spacing:-.01em}.activity__period{text-transform:none;margin:-.25rem 0 0}.activity-chart{width:100%;height:3.5rem;margin-block:var(--space-2)}.activity-chart svg{width:100%;height:100%;display:block}.activity__src,.activity__note{margin:0}.trend{font-size:var(--text-small);color:var(--color-data);align-items:center;gap:.45em;line-height:1;display:inline-flex}.trend .icon{flex:none;width:1em;height:1em}.trend__label{font-weight:var(--weight-medium)}.trend--flat{color:var(--color-muted)}.activity-count{font-size:var(--text-small);color:var(--color-data);align-items:baseline;gap:.35em;line-height:1.2;display:inline-flex}.activity-count .num{font-family:var(--font-sans);font-weight:var(--weight-strong);font-variant-numeric:tabular-nums}.activity-count__label,.activity-count--missing{color:var(--color-muted)}.activity-missing-head{margin:var(--space-4) 0 var(--space-1);padding-top:var(--space-4);border-top:var(--border-hair);font-size:var(--text-small);font-weight:var(--weight-medium);color:var(--color-muted);text-transform:none;letter-spacing:var(--tracking-meta);grid-column:1/-1}.top-activity{padding-block:var(--section-y-tight)}.top-activity__list{border-top:var(--rule-top);margin:0;padding:0;list-style:none}.top-activity__item{align-items:center;gap:var(--space-4);padding-block:var(--space-3);border-bottom:var(--border-hair);display:flex}.top-activity__name{font-weight:var(--weight-strong)}.top-activity__commits{font-size:var(--text-small);color:var(--color-muted);margin-left:auto}.top-activity__commits .num{font-family:var(--font-mono);font-weight:var(--weight-strong);color:var(--color-ink);font-variant-numeric:tabular-nums}.search{position:relative}.quick-search{z-index:var(--z-dropdown);margin-top:var(--space-1);background:var(--color-paper);max-height:min(24rem,100dvh - 8rem);color:var(--color-ink);border:var(--border-control);border-top:var(--rule-top);box-shadow:var(--shadow-dropdown);position:absolute;top:100%;left:0;right:0;overflow-y:auto}.quick-search[hidden]{display:none}.surface-dark .quick-search a:not(.btn){color:var(--color-ink)}.surface-dark .quick-search :focus-visible,.on-dark .quick-search :focus-visible{outline-color:var(--color-focus)}@media (width>=1280px){.site-search__form .quick-search{width:24rem;left:auto;right:0}}.quick-search__status{padding:var(--space-3) var(--space-4);font-size:var(--text-small);color:var(--color-muted);border-bottom:var(--border-hair)}.quick-search__status:empty{border-bottom:0;padding:0}.quick-search__list{margin:0;padding:0}.quick-search__option{align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-4);color:var(--color-ink);border-bottom:var(--border-hair);text-decoration:none;display:flex}.quick-search__option[aria-selected=true],.quick-search__option:hover{background:var(--color-paper-2)}.quick-search__option:focus-visible{outline:3px solid var(--color-focus);outline-offset:-3px}.quick-search__logo{object-fit:contain;flex:none;width:2rem;height:2rem}.quick-search__logo--fallback{background:var(--color-paper-2);border:1px solid var(--color-line);width:2rem;height:2rem;color:var(--color-muted);font-size:var(--text-meta);font-weight:var(--weight-strong);flex:none;justify-content:center;align-items:center;display:inline-flex}.quick-search__body{gap:var(--space-1);min-width:0;display:grid}.quick-search__name{font-weight:var(--weight-strong);font-size:var(--text-ui);line-height:1.25}.quick-search__name mark,.quick-search__desc mark{background:var(--color-signal-soft);color:inherit;font-weight:inherit}.quick-search__meta{font-size:var(--text-meta);color:var(--color-muted)}.quick-search__desc{font-size:var(--text-small);color:var(--color-muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.4;display:-webkit-box;overflow:hidden}.quick-search__all{padding:var(--space-3) var(--space-4);font-size:var(--text-small);font-weight:var(--weight-strong);border-top:var(--border-ink);text-decoration:none;display:block}.quick-search__all:hover{background:var(--color-paper-2)}.license-badge{width:fit-content;padding:3px var(--space-2);border:1px solid var(--color-line-strong);background:var(--color-paper);color:var(--color-ink);font-size:var(--text-small);font-weight:var(--weight-medium);white-space:nowrap;align-items:center;line-height:1.3;text-decoration:none;display:inline-flex}@media (hover:hover) and (pointer:fine){.license-badge:hover{border-color:var(--color-ink)}}.license-badge.is-perpetual{background:var(--color-paper-2);border-color:var(--color-ink-2)}.license-badge.is-osi{background:var(--green-700);border-color:var(--green-700);color:var(--white)}.license-badge.is-open-core{border-color:var(--green-700);background:var(--green-50);color:var(--green-700)}.license-badge.is-source-available,.license-badge.is-proprietary{color:var(--color-ink-2);border-style:dashed}@media (width<=40rem){.api-mcp{grid-template-columns:1fr}}.emdash-image-media[data-astro-cid-6depetnu]{max-width:100%;height:auto}:where(:root.dark) .emdash-image--light,:where(:root.light) .emdash-image--dark{display:none}@media (prefers-color-scheme:dark){:where(:root:not(.light)) .emdash-image--light{display:none}}@media (prefers-color-scheme:light){:where(:root:not(.dark)) .emdash-image--dark{display:none}}.has-text-align-center[data-astro-cid-44ocxh3s]{text-align:center}.has-text-align-right[data-astro-cid-44ocxh3s]{text-align:right}.has-text-align-justify[data-astro-cid-44ocxh3s]{text-align:justify}.emdash-image[data-astro-cid-nzlefzml]{margin:1.5rem 0}.emdash-image[data-astro-cid-nzlefzml] img[data-astro-cid-nzlefzml]{max-width:100%;height:auto}.emdash-image[data-astro-cid-nzlefzml] figcaption[data-astro-cid-nzlefzml]{color:var(--emdash-caption-color,var(--color-muted,#666));text-align:center;margin-top:.5rem;font-size:.875rem}.emdash-image--align-left[data-astro-cid-nzlefzml],.emdash-image--align-right[data-astro-cid-nzlefzml]{width:fit-content;max-width:50%}.emdash-image--align-left[data-astro-cid-nzlefzml]{float:left;margin:0 1.5rem 1rem 0}.emdash-image--align-right[data-astro-cid-nzlefzml]{float:right;margin:0 0 1rem 1.5rem}.emdash-image--align-center[data-astro-cid-nzlefzml]{width:fit-content;margin-inline:auto}.emdash-image--align-wide[data-astro-cid-nzlefzml],.emdash-image--align-full[data-astro-cid-nzlefzml]{width:100%}@media (width<=640px){.emdash-image--align-left[data-astro-cid-nzlefzml],.emdash-image--align-right[data-astro-cid-nzlefzml]{float:none;width:100%;max-width:100%;margin-inline:0}}.emdash-code[data-astro-cid-dgremz56]{margin:1.5rem 0}.emdash-code-filename[data-astro-cid-dgremz56]{color:#ccc;background:#2d2d2d;border-radius:.5rem .5rem 0 0;padding:.5rem 1rem;font-family:monospace;font-size:.75rem}.emdash-code[data-astro-cid-dgremz56] pre[data-astro-cid-dgremz56]{background:#1e1e1e;border-radius:.5rem;margin:0;padding:1rem;overflow-x:auto}.emdash-code-filename[data-astro-cid-dgremz56]+pre[data-astro-cid-dgremz56]{border-radius:0 0 .5rem .5rem}.emdash-code[data-astro-cid-dgremz56] code[data-astro-cid-dgremz56]{color:#e0e0e0;font-family:Fira Code,Consolas,monospace;font-size:.875rem}.emdash-embed[data-astro-cid-n4v2ghzc]{margin:1.5rem 0}.emdash-embed-video[data-astro-cid-n4v2ghzc]{height:0;padding-bottom:56.25%;position:relative;overflow:hidden}.emdash-embed-video[data-astro-cid-n4v2ghzc] iframe[data-astro-cid-n4v2ghzc],.emdash-embed-video[data-astro-cid-n4v2ghzc] video[data-astro-cid-n4v2ghzc]{border:0;width:100%;height:100%;position:absolute;top:0;left:0}.emdash-embed-audio[data-astro-cid-n4v2ghzc],.emdash-embed-audio[data-astro-cid-n4v2ghzc] audio[data-astro-cid-n4v2ghzc]{width:100%}.emdash-embed[data-astro-cid-n4v2ghzc] figcaption[data-astro-cid-n4v2ghzc]{color:var(--emdash-caption-color,var(--color-muted,#666));text-align:center;margin-top:.5rem;font-size:.875rem}.emdash-gallery[data-astro-cid-d6nmylgu]{grid-template-columns:repeat(var(--columns,3), 1fr);gap:1rem;margin:1.5rem 0;display:grid}.emdash-gallery-item[data-astro-cid-d6nmylgu]{margin:0}.emdash-gallery-item[data-astro-cid-d6nmylgu] img[data-astro-cid-d6nmylgu]{object-fit:cover;aspect-ratio:1;width:100%;height:auto}.emdash-gallery-item[data-astro-cid-d6nmylgu] figcaption[data-astro-cid-d6nmylgu]{color:var(--emdash-caption-color,var(--color-muted,#666));text-align:center;margin-top:.25rem;font-size:.75rem}@media (width<=640px){.emdash-gallery[data-astro-cid-d6nmylgu]{grid-template-columns:repeat(2,1fr)}}.emdash-columns[data-astro-cid-sjaxkm7w]{gap:2rem;margin:1.5rem 0;display:flex}.emdash-column[data-astro-cid-sjaxkm7w]{flex:1;min-width:0}@media (width<=768px){.emdash-columns[data-astro-cid-sjaxkm7w]{flex-direction:column;gap:1rem}}.emdash-break[data-astro-cid-gvovdxls]{margin:2rem 0}.emdash-break-line[data-astro-cid-gvovdxls]{border:none;border-top:1px solid var(--emdash-break-color,var(--color-border,#e0e0e0))}.emdash-break-dots[data-astro-cid-gvovdxls]{text-align:center;color:var(--emdash-break-dots-color,var(--color-muted,#999));letter-spacing:.5em}.emdash-break-space[data-astro-cid-gvovdxls]{height:2rem}iframe[data-emdash-html-block]{border:0;width:100%;margin:1.5rem 0;display:block}.emdash-html-block[data-astro-cid-7hlqo6bn]{margin:1.5rem 0}.emdash-iframe[data-astro-cid-fhxykd76]{aspect-ratio:16/9;width:100%;margin:1.5rem 0}.emdash-iframe[data-astro-cid-fhxykd76] iframe{border:0;width:100%;height:100%;display:block}.emdash-video[data-astro-cid-ymu5gvpn]{margin:1.5rem 0}.emdash-video[data-astro-cid-ymu5gvpn] video[data-astro-cid-ymu5gvpn]{width:100%;height:auto;max-height:70vh;display:block}.emdash-video[data-astro-cid-ymu5gvpn] figcaption[data-astro-cid-ymu5gvpn]{color:var(--emdash-caption-color,var(--color-muted,#666));text-align:center;margin-top:.5rem;font-size:.875rem}.emdash-table-wrapper[data-astro-cid-7uypp5bz]{overscroll-behavior-inline:contain;max-inline-size:100%;margin-block:1.5rem;overflow-x:auto}.emdash-table[data-astro-cid-7uypp5bz]{border-collapse:collapse;inline-size:100%;font-size:.9rem}.emdash-table[data-astro-cid-7uypp5bz] th[data-astro-cid-7uypp5bz],.emdash-table[data-astro-cid-7uypp5bz] td[data-astro-cid-7uypp5bz]{border:1px solid var(--color-border,#ddd);text-align:start;vertical-align:top;padding:.75rem;position:relative}.emdash-table[data-astro-cid-7uypp5bz] th[data-astro-cid-7uypp5bz] p,.emdash-table[data-astro-cid-7uypp5bz] td[data-astro-cid-7uypp5bz] p{margin:0}.emdash-table[data-astro-cid-7uypp5bz] th[data-astro-cid-7uypp5bz]{background:var(--color-surface,#f5f5f5);font-weight:600}.emdash-table[data-astro-cid-7uypp5bz] tbody[data-astro-cid-7uypp5bz] tr[data-astro-cid-7uypp5bz]:nth-child(2n){background:var(--color-bg-subtle,#fafafa)}.emdash-table[data-astro-cid-7uypp5bz] tbody[data-astro-cid-7uypp5bz] tr[data-astro-cid-7uypp5bz]:hover{background:var(--color-surface,#f0f0f0)}.emdash-button[data-astro-cid-i644adhy]{cursor:pointer;border-radius:4px;padding:.75em 1.5em;font-weight:500;text-decoration:none;transition:background-color .2s,border-color .2s,color .2s;display:inline-block}.emdash-button--default[data-astro-cid-i644adhy],.emdash-button--fill[data-astro-cid-i644adhy]{background-color:var(--emdash-button-bg,#0073aa);color:var(--emdash-button-color,#fff);border:2px solid var(--emdash-button-bg,#0073aa)}.emdash-button--default[data-astro-cid-i644adhy]:hover,.emdash-button--fill[data-astro-cid-i644adhy]:hover{background-color:var(--emdash-button-bg-hover,#005177);border-color:var(--emdash-button-bg-hover,#005177)}.emdash-button--outline[data-astro-cid-i644adhy]{color:var(--emdash-button-bg,#0073aa);border:2px solid var(--emdash-button-bg,#0073aa);background-color:#0000}.emdash-button--outline[data-astro-cid-i644adhy]:hover{background-color:var(--emdash-button-bg,#0073aa);color:var(--emdash-button-color,#fff)}.emdash-buttons[data-astro-cid-pxkpowas]{flex-wrap:wrap;gap:.75rem;margin:1.5rem 0;display:flex}.emdash-buttons--vertical[data-astro-cid-pxkpowas]{flex-direction:column;align-items:flex-start}.emdash-buttons--horizontal[data-astro-cid-pxkpowas]{flex-direction:row;align-items:center}.emdash-cover[data-astro-cid-g6rigryn]{background-color:var(--emdash-cover-fallback-bg,#333);border-radius:4px;align-items:center;margin:1.5rem 0;padding:2rem;display:flex;position:relative;overflow:hidden}.emdash-cover__background[data-astro-cid-g6rigryn]{object-fit:cover;z-index:0;width:100%;height:100%;position:absolute;inset:0}.emdash-cover__video[data-astro-cid-g6rigryn]{object-fit:cover}.emdash-cover__overlay[data-astro-cid-g6rigryn]{z-index:1;position:absolute;inset:0}.emdash-cover__content[data-astro-cid-g6rigryn]{z-index:2;width:100%;color:var(--emdash-cover-text-color,#fff);position:relative}.emdash-cover--align-left[data-astro-cid-g6rigryn]{text-align:left;justify-content:flex-start}.emdash-cover--align-center[data-astro-cid-g6rigryn]{text-align:center;justify-content:center}.emdash-cover--align-right[data-astro-cid-g6rigryn]{text-align:right;justify-content:flex-end}.emdash-cover__content[data-astro-cid-g6rigryn] h1,.emdash-cover__content[data-astro-cid-g6rigryn] h2,.emdash-cover__content[data-astro-cid-g6rigryn] h3,.emdash-cover__content[data-astro-cid-g6rigryn] h4,.emdash-cover__content[data-astro-cid-g6rigryn] p{color:inherit}.emdash-file[data-astro-cid-dsnn5jk3]{background-color:var(--emdash-file-bg,#f5f5f5);border:1px solid var(--emdash-file-border,#e0e0e0);border-radius:4px;align-items:center;gap:.75rem;margin:1rem 0;padding:1rem;display:flex}.emdash-file__link[data-astro-cid-dsnn5jk3]{color:var(--emdash-file-color,#333);flex:1;align-items:center;gap:.5rem;text-decoration:none;display:flex}.emdash-file__link[data-astro-cid-dsnn5jk3]:hover{text-decoration:underline}.emdash-file__icon[data-astro-cid-dsnn5jk3]{width:1.5rem;height:1.5rem;color:var(--emdash-file-icon-color,#666);flex-shrink:0}.emdash-file__name[data-astro-cid-dsnn5jk3]{word-break:break-all;font-weight:500}.emdash-file__download[data-astro-cid-dsnn5jk3]{background-color:var(--emdash-button-bg,#0073aa);width:2.5rem;height:2.5rem;color:var(--emdash-button-color,#fff);border-radius:4px;justify-content:center;align-items:center;transition:background-color .2s;display:flex}.emdash-file__download[data-astro-cid-dsnn5jk3]:hover{background-color:var(--emdash-button-bg-hover,#005177)}.emdash-file__download[data-astro-cid-dsnn5jk3] svg[data-astro-cid-dsnn5jk3]{width:1.25rem;height:1.25rem}.emdash-pullquote[data-astro-cid-mtrxdgkr]{border-top:4px solid var(--emdash-pullquote-border,#0073aa);border-bottom:4px solid var(--emdash-pullquote-border,#0073aa);text-align:center;margin:2rem 0;padding:1.5rem 2rem}.emdash-pullquote__text[data-astro-cid-mtrxdgkr]{color:var(--emdash-pullquote-color,#333);margin:0;font-size:1.5rem;font-style:italic;line-height:1.4}.emdash-pullquote__citation[data-astro-cid-mtrxdgkr]{color:var(--emdash-pullquote-citation-color,#666);margin-top:1rem;font-size:.9rem;font-style:normal}
