:root{--color-primary:#6366f1;--color-primary-light:#818cf8;--color-primary-dark:#4f46e5;--color-secondary:#06b6d4;--color-accent:#f59e0b;--color-bg:#fff;--color-bg-rgb:255,255,255;--color-bg-secondary:#f8fafc;--color-bg-secondary-rgb:248,250,252;--color-bg-card:#fff;--color-text:#1e293b;--color-text-secondary:#64748b;--color-text-muted:#94a3b8;--color-border:#e2e8f0;--shadow-sm:0 1px 2px 0 #0000000d;--shadow-md:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--font-family:"Inter",system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;--font-size-sm:1rem;--font-size-base:1rem;--font-size-lg:1.125rem;--font-size-xl:1.25rem;--font-size-2xl:1.5rem;--font-size-3xl:1.875rem;--font-size-4xl:2.25rem;--spacing-xs:.25rem;--spacing-sm:.5rem;--spacing-md:1rem;--spacing-lg:1.5rem;--spacing-xl:2rem;--spacing-2xl:3rem;--radius-sm:.375rem;--radius-md:.5rem;--radius-lg:.75rem;--radius-xl:1rem;--transition-fast:.15s ease;--transition-base:.25s ease;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--color-bg:#0f172a;--color-bg-rgb:15,23,42;--color-bg-secondary:#1e293b;--color-bg-secondary-rgb:30,41,59;--color-bg-card:#1e293b;--color-text:#f1f5f9;--color-text-secondary:#cbd5e1;--color-text-muted:#64748b;--color-border:#334155;--shadow-sm:0 1px 2px 0 #0000004d;--shadow-md:0 4px 6px -1px #0006,0 2px 4px -2px #0000004d;--shadow-lg:0 10px 15px -3px #0006,0 4px 6px -4px #0000004d}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;font-size:16px}body{font-family:var(--font-family);font-size:var(--font-size-base);color:var(--color-text);background-color:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;line-height:1.6}#root{flex-direction:column;min-height:100vh;display:flex}h1,h2,h3,h4,h5,h6{color:var(--color-text);font-weight:700;line-height:1.2}h1{font-size:var(--font-size-4xl)}h2{font-size:var(--font-size-2xl)}h3{font-size:var(--font-size-xl)}p{color:var(--color-text-secondary)}a{color:var(--color-primary);transition:color var(--transition-fast);text-decoration:none}a:hover{color:var(--color-primary-light)}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}::selection{background-color:var(--color-primary);color:#fff}img{max-width:100%;height:auto;display:block}.container{width:100%;max-width:1200px;padding:0 var(--spacing-lg);margin:0 auto}@media (max-width:768px){html{font-size:14px}h1{font-size:var(--font-size-3xl)}h2{font-size:var(--font-size-xl)}}@scope(.navbar){:scope{z-index:100;background:var(--color-bg);border-bottom:1px solid var(--color-border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:rgba(var(--color-bg-rgb),.8);position:sticky;top:0}.navbar-container{max-width:1200px;padding:var(--spacing-md)var(--spacing-lg);justify-content:space-between;align-items:center;margin:0 auto;display:flex}.navbar-links{gap:var(--spacing-lg);display:flex}.navbar-link{color:var(--color-text);transition:color var(--transition-base);font-weight:500;font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.05em;text-decoration:none}.navbar-link:hover{color:var(--color-primary)}.navbar-socials{gap:var(--spacing-md);align-items:center;display:flex}.navbar-social-link{color:var(--color-text-secondary);transition:all var(--transition-base);align-items:center;display:flex}.navbar-social-link:hover{color:var(--color-primary);transform:translateY(-2px)}.navbar-social-link.huggingface{filter:grayscale();opacity:.7}.navbar-social-link.huggingface:hover{filter:grayscale(0%);opacity:1}.navbar-social-link svg{width:20px;height:20px}}@media (max-width:768px){@scope(.navbar){.navbar-container{padding:var(--spacing-sm)var(--spacing-md)}}}@scope(.home){:scope{gap:var(--spacing-sm);flex-direction:column;display:flex}.hero{text-align:center;padding:var(--spacing-md)0 var(--spacing-md)}.hero h1{background:linear-gradient(135deg,var(--color-primary)0%,var(--color-secondary)100%);-webkit-text-fill-color:transparent;margin-bottom:var(--spacing-lg);-webkit-background-clip:text;background-clip:text;font-size:clamp(2.5rem,5vw,4rem)}.strapline{font-size:var(--font-size-xl);color:var(--color-text-secondary);max-width:600px;margin:0 auto var(--spacing-lg);line-height:1.7}.hero-description{max-width:700px;margin:0 auto var(--spacing-xs);color:var(--color-text-secondary);line-height:1.6;font-size:var(--font-size-base)}.hero-description p{margin-bottom:var(--spacing-md)}.hero-description p:last-child{margin-bottom:0}.hero-quote{padding:var(--spacing-lg);background:var(--color-bg-secondary);border-left:4px solid var(--color-primary);border-radius:0 var(--radius-lg)var(--radius-lg)0;text-align:left;max-width:800px;margin:0 auto;font-style:italic}.skills{margin:var(--spacing-lg)auto;width:100%;max-width:800px;position:relative;overflow:hidden}.skills:before,.skills:after{content:"";z-index:1;pointer-events:none;width:60px;position:absolute;top:0;bottom:0}.skills:before{background:linear-gradient(to right,var(--color-bg)0%,transparent 100%);left:0}.skills:after{background:linear-gradient(to left,var(--color-bg)0%,transparent 100%);right:0}.skills-track{gap:var(--spacing-sm);width:max-content;animation:30s linear infinite scroll-skills;display:flex}.skills-track>div{background:var(--color-bg-card);padding:var(--spacing-xs)var(--spacing-md);border-radius:var(--radius-md);white-space:nowrap;flex-shrink:0}@keyframes scroll-skills{0%{transform:translate(0)}to{transform:translate(-50%)}}.testimonial-section{margin:var(--spacing-lg)0}.hero-quote p{margin-bottom:var(--spacing-sm);color:var(--color-text);font-size:var(--font-size-base);line-height:1.6}.hero-quote cite{font-style:normal;font-weight:600;font-size:var(--font-size-sm);color:var(--color-text-secondary);display:block}.projects-section{width:100%;max-width:1000px;margin:0 auto}.section-title{font-size:var(--font-size-2xl);color:var(--color-text);margin-bottom:var(--spacing-lg);text-align:center;position:relative}.section-title:after{content:"";background:linear-gradient(90deg,var(--color-primary),var(--color-secondary));width:60px;height:4px;margin:var(--spacing-md)auto 0;border-radius:var(--radius-sm);display:block}.projects-list{gap:var(--spacing-lg);grid-template-columns:repeat(2,1fr);margin:0;padding:0;list-style:none;display:grid}.project-item{flex-direction:column;margin:0;display:flex}.project-link{align-items:flex-start;gap:var(--spacing-md);padding:var(--spacing-lg);background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);transition:all var(--transition-base);flex-direction:column;flex:1;width:100%;text-decoration:none;display:flex;position:relative;overflow:hidden}.project-link:before{content:"";background:var(--color-primary);width:4px;transition:transform var(--transition-base);position:absolute;top:0;bottom:0;left:0;transform:scaleY(0)}.project-link:hover{box-shadow:var(--shadow-md);border-color:var(--color-primary);transform:translateY(-4px)}.project-link:hover:before{transform:scaleY(1)}.project-type-data:before{background:linear-gradient(180deg,var(--color-primary),#6366f1)}.project-type-web:before{background:linear-gradient(180deg,var(--color-secondary),#10b981)}.project-type-article:before{background:linear-gradient(#f59e0b,#ef4444)}.project-type-data:hover{border-color:var(--color-primary)}.project-type-web:hover{border-color:var(--color-secondary)}.project-type-article:hover{border-color:#f59e0b}.project-icon{flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.project-icon svg{width:1rem;height:1rem}.project-content{flex:1;min-width:0;height:100%;display:block}.project-title{color:var(--color-text);margin:0 0 var(--spacing-sm);align-items:center;font-size:1.4rem;font-weight:600;display:flex}.project-description{font-size:var(--font-size-base);color:var(--color-text-secondary);margin:0;line-height:1.5;position:relative}.project-footer{color:var(--color-text-muted);align-items:center;gap:var(--spacing-xs);margin-top:10px;font-family:monospace;display:flex}.project-arrow{font-size:var(--font-size-xl);color:var(--color-text-secondary);transition:all var(--transition-base);margin-left:auto;line-height:1}.project-link:hover .project-arrow{color:var(--color-primary);transform:translate(4px)}@scope(.affiliations){:scope{justify-content:center;gap:20px;display:flex}.affiliation{font-size:var(--font-size-lg);background:var(--color-bg-card);border-radius:15px;align-items:center;gap:10px;padding:10px 20px;font-weight:500;display:flex}.logo{height:40px}}}@media (max-width:768px){@scope(.home){.hero{padding:var(--spacing-md)0}.strapline{font-size:var(--font-size-lg)}.hero-description{font-size:var(--font-size-sm)}.hero-quote{padding:var(--spacing-md);margin-top:var(--spacing-lg)}.hero-quote p{font-size:var(--font-size-sm)}.projects-list{gap:var(--spacing-md);flex-direction:column;display:flex}.project-link{padding:var(--spacing-md);align-items:center;gap:var(--spacing-md);flex-direction:row}.project-title{font-size:1.25rem}.project-description{font-size:var(--font-size-sm)}.project-arrow{display:none}}}.markdown-body{--base-size-4:.25rem;--base-size-8:.5rem;--base-size-16:1rem;--base-size-24:1.5rem;--base-size-40:2.5rem;--base-text-weight-normal:400;--base-text-weight-medium:500;--base-text-weight-semibold:600;--fontStack-monospace:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;--fgColor-accent:Highlight}@media (prefers-color-scheme:dark){.markdown-body,[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--focus-outlineColor:#1f6feb;--fgColor-default:#f0f6fc;--fgColor-muted:#9198a1;--fgColor-accent:#4493f8;--fgColor-success:#3fb950;--fgColor-attention:#d29922;--fgColor-danger:#f85149;--fgColor-done:#ab7df8;--bgColor-default:#0d1117;--bgColor-muted:#151b23;--bgColor-neutral-muted:#656c7633;--bgColor-attention-muted:#bb800926;--borderColor-default:#3d444d;--borderColor-muted:#3d444db3;--borderColor-neutral-muted:#3d444db3;--borderColor-accent-emphasis:#1f6feb;--borderColor-success-emphasis:#238636;--borderColor-attention-emphasis:#9e6a03;--borderColor-danger-emphasis:#da3633;--borderColor-done-emphasis:#8957e5;--color-prettylights-syntax-comment:#9198a1;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-constant-other-reference-link:#a5d6ff;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-storage-modifier-import:#f0f6fc;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-variable:#ffa657;--color-prettylights-syntax-brackethighlighter-unmatched:#f85149;--color-prettylights-syntax-brackethighlighter-angle:#9198a1;--color-prettylights-syntax-invalid-illegal-text:#f0f6fc;--color-prettylights-syntax-invalid-illegal-bg:#8e1519;--color-prettylights-syntax-carriage-return-text:#f0f6fc;--color-prettylights-syntax-carriage-return-bg:#b62324;--color-prettylights-syntax-string-regexp:#7ee787;--color-prettylights-syntax-markup-list:#f2cc60;--color-prettylights-syntax-markup-heading:#1f6feb;--color-prettylights-syntax-markup-italic:#f0f6fc;--color-prettylights-syntax-markup-bold:#f0f6fc;--color-prettylights-syntax-markup-deleted-text:#ffdcd7;--color-prettylights-syntax-markup-deleted-bg:#67060c;--color-prettylights-syntax-markup-inserted-text:#aff5b4;--color-prettylights-syntax-markup-inserted-bg:#033a16;--color-prettylights-syntax-markup-changed-text:#ffdfb6;--color-prettylights-syntax-markup-changed-bg:#5a1e02;--color-prettylights-syntax-markup-ignored-text:#f0f6fc;--color-prettylights-syntax-markup-ignored-bg:#1158c7;--color-prettylights-syntax-meta-diff-range:#d2a8ff;--color-prettylights-syntax-sublimelinter-gutter-mark:#3d444d}}@media (prefers-color-scheme:light){.markdown-body,[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--focus-outlineColor:#0969da;--fgColor-default:#1f2328;--fgColor-muted:#59636e;--fgColor-accent:#0969da;--fgColor-success:#1a7f37;--fgColor-attention:#9a6700;--fgColor-danger:#d1242f;--fgColor-done:#8250df;--bgColor-default:#fff;--bgColor-muted:#f6f8fa;--bgColor-neutral-muted:#818b981f;--bgColor-attention-muted:#fff8c5;--borderColor-default:#d1d9e0;--borderColor-muted:#d1d9e0b3;--borderColor-neutral-muted:#d1d9e0b3;--borderColor-accent-emphasis:#0969da;--borderColor-success-emphasis:#1a7f37;--borderColor-attention-emphasis:#9a6700;--borderColor-danger-emphasis:#cf222e;--borderColor-done-emphasis:#8250df;--color-prettylights-syntax-comment:#59636e;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-constant-other-reference-link:#0a3069;--color-prettylights-syntax-entity:#6639ba;--color-prettylights-syntax-storage-modifier-import:#1f2328;--color-prettylights-syntax-entity-tag:#0550ae;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-variable:#953800;--color-prettylights-syntax-brackethighlighter-unmatched:#82071e;--color-prettylights-syntax-brackethighlighter-angle:#59636e;--color-prettylights-syntax-invalid-illegal-text:#f6f8fa;--color-prettylights-syntax-invalid-illegal-bg:#82071e;--color-prettylights-syntax-carriage-return-text:#f6f8fa;--color-prettylights-syntax-carriage-return-bg:#cf222e;--color-prettylights-syntax-string-regexp:#116329;--color-prettylights-syntax-markup-list:#3b2300;--color-prettylights-syntax-markup-heading:#0550ae;--color-prettylights-syntax-markup-italic:#1f2328;--color-prettylights-syntax-markup-bold:#1f2328;--color-prettylights-syntax-markup-deleted-text:#82071e;--color-prettylights-syntax-markup-deleted-bg:#ffebe9;--color-prettylights-syntax-markup-inserted-text:#116329;--color-prettylights-syntax-markup-inserted-bg:#dafbe1;--color-prettylights-syntax-markup-changed-text:#953800;--color-prettylights-syntax-markup-changed-bg:#ffd8b5;--color-prettylights-syntax-markup-ignored-text:#d1d9e0;--color-prettylights-syntax-markup-ignored-bg:#0550ae;--color-prettylights-syntax-meta-diff-range:#8250df;--color-prettylights-syntax-sublimelinter-gutter-mark:#818b98}}.markdown-body{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;color:var(--fgColor-default);background-color:var(--bgColor-default);word-wrap:break-word;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;font-size:16px;line-height:1.5}.markdown-body .octicon{fill:currentColor;vertical-align:text-bottom;display:inline-block}.markdown-body h1:hover .anchor .octicon-link:before,.markdown-body h2:hover .anchor .octicon-link:before,.markdown-body h3:hover .anchor .octicon-link:before,.markdown-body h4:hover .anchor .octicon-link:before,.markdown-body h5:hover .anchor .octicon-link:before,.markdown-body h6:hover .anchor .octicon-link:before{content:" ";background-color:currentColor;width:16px;height:16px;display:inline-block;-webkit-mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg>");mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg>")}.markdown-body details,.markdown-body figcaption,.markdown-body figure{display:block}.markdown-body summary{display:list-item}.markdown-body [hidden]{display:none!important}.markdown-body a{color:var(--fgColor-accent);background-color:#0000;text-decoration:none}.markdown-body abbr[title]{border-bottom:none;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.markdown-body b,.markdown-body strong{font-weight:var(--base-text-weight-semibold,600)}.markdown-body dfn{font-style:italic}.markdown-body h1{font-weight:var(--base-text-weight-semibold,600);border-bottom:1px solid var(--borderColor-muted);margin:.67em 0;padding-bottom:.3em;font-size:2em}.markdown-body mark{background-color:var(--bgColor-attention-muted);color:var(--fgColor-default)}.markdown-body small{font-size:90%}.markdown-body sub,.markdown-body sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}.markdown-body sub{bottom:-.25em}.markdown-body sup{top:-.5em}.markdown-body img{box-sizing:content-box;border-style:none;max-width:100%}.markdown-body code,.markdown-body kbd,.markdown-body pre,.markdown-body samp{font-family:monospace;font-size:1em}.markdown-body figure{margin:1em var(--base-size-40)}.markdown-body hr{box-sizing:content-box;border-bottom:1px solid var(--borderColor-muted);height:.25em;margin:var(--base-size-24)0;background:0 0;background-color:var(--borderColor-default);border:0;padding:0;overflow:hidden}.markdown-body input{font:inherit;font-family:inherit;font-size:inherit;line-height:inherit;margin:0;overflow:visible}.markdown-body [type=button],.markdown-body [type=reset],.markdown-body [type=submit]{appearance:button}.markdown-body [type=checkbox],.markdown-body [type=radio]{box-sizing:border-box;padding:0}.markdown-body [type=number]::-webkit-inner-spin-button{height:auto}.markdown-body [type=number]::-webkit-outer-spin-button{height:auto}.markdown-body [type=search]::-webkit-search-cancel-button{appearance:none}.markdown-body [type=search]::-webkit-search-decoration{appearance:none}.markdown-body ::-webkit-input-placeholder{color:inherit;opacity:.54}.markdown-body ::-webkit-file-upload-button{appearance:button;font:inherit}.markdown-body a:hover{text-decoration:underline}.markdown-body ::placeholder{color:var(--fgColor-muted);opacity:1}.markdown-body hr:before{content:"";display:table}.markdown-body hr:after{clear:both;content:"";display:table}.markdown-body table{border-spacing:0;border-collapse:collapse;font-variant:tabular-nums;width:max-content;max-width:100%;display:block;overflow:auto}.markdown-body td,.markdown-body th{padding:0}.markdown-body details summary{cursor:pointer}.markdown-body a:focus,.markdown-body [role=button]:focus,.markdown-body input[type=radio]:focus,.markdown-body input[type=checkbox]:focus{outline:2px solid var(--focus-outlineColor);outline-offset:-2px;box-shadow:none}.markdown-body a:focus:not(:focus-visible),.markdown-body [role=button]:focus:not(:focus-visible),.markdown-body input[type=radio]:focus:not(:focus-visible),.markdown-body input[type=checkbox]:focus:not(:focus-visible){outline:1px solid #0000}.markdown-body a:focus-visible,.markdown-body [role=button]:focus-visible,.markdown-body input[type=radio]:focus-visible,.markdown-body input[type=checkbox]:focus-visible{outline:2px solid var(--focus-outlineColor);outline-offset:-2px;box-shadow:none}.markdown-body a:not([class]):focus,.markdown-body a:not([class]):focus-visible,.markdown-body input[type=radio]:focus,.markdown-body input[type=radio]:focus-visible,.markdown-body input[type=checkbox]:focus,.markdown-body input[type=checkbox]:focus-visible{outline-offset:0}.markdown-body kbd{padding:var(--base-size-4);font:11px var(--fontStack-monospace,ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace);color:var(--fgColor-default);vertical-align:middle;background-color:var(--bgColor-muted);border:solid 1px var(--borderColor-neutral-muted);border-bottom-color:var(--borderColor-neutral-muted);box-shadow:inset 0 -1px 0 var(--borderColor-neutral-muted);border-radius:6px;line-height:10px;display:inline-block}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:var(--base-size-24);margin-bottom:var(--base-size-16);font-weight:var(--base-text-weight-semibold,600);line-height:1.25}.markdown-body h2{font-weight:var(--base-text-weight-semibold,600);border-bottom:1px solid var(--borderColor-muted);padding-bottom:.3em;font-size:1.5em}.markdown-body h3{font-weight:var(--base-text-weight-semibold,600);font-size:1.25em}.markdown-body h4{font-weight:var(--base-text-weight-semibold,600);font-size:1em}.markdown-body h5{font-weight:var(--base-text-weight-semibold,600);font-size:.875em}.markdown-body h6{font-weight:var(--base-text-weight-semibold,600);color:var(--fgColor-muted);font-size:.85em}.markdown-body p{margin-top:0;margin-bottom:10px}.markdown-body blockquote{color:var(--fgColor-muted);border-left:.25em solid var(--borderColor-default);margin:0;padding:0 1em}.markdown-body ul,.markdown-body ol{margin-top:0;margin-bottom:0;padding-left:2em}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ul ul ol,.markdown-body ul ol ol,.markdown-body ol ul ol,.markdown-body ol ol ol{list-style-type:lower-alpha}.markdown-body dd{margin-left:0}.markdown-body tt,.markdown-body code,.markdown-body samp{font-family:var(--fontStack-monospace,ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace);font-size:12px}.markdown-body pre{font-family:var(--fontStack-monospace,ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace);word-wrap:normal;margin-top:0;margin-bottom:0;font-size:12px}.markdown-body .octicon{vertical-align:text-bottom;fill:currentColor;display:inline-block;overflow:visible!important}.markdown-body input::-webkit-outer-spin-button{appearance:none;margin:0}.markdown-body input::-webkit-inner-spin-button{appearance:none;margin:0}.markdown-body .mr-2{margin-right:var(--base-size-8,8px)!important}.markdown-body:before{content:"";display:table}.markdown-body:after{clear:both;content:"";display:table}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a:not([href]){color:inherit;text-decoration:none}.markdown-body .absent{color:var(--fgColor-danger)}.markdown-body .anchor{float:left;padding-right:var(--base-size-4);margin-left:-20px;line-height:1}.markdown-body .anchor:focus{outline:none}.markdown-body p,.markdown-body blockquote,.markdown-body ul,.markdown-body ol,.markdown-body dl,.markdown-body table,.markdown-body pre,.markdown-body details{margin-top:0;margin-bottom:var(--base-size-16)}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{color:var(--fgColor-default);vertical-align:middle;visibility:hidden}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{visibility:visible}.markdown-body h1 tt,.markdown-body h1 code,.markdown-body h2 tt,.markdown-body h2 code,.markdown-body h3 tt,.markdown-body h3 code,.markdown-body h4 tt,.markdown-body h4 code,.markdown-body h5 tt,.markdown-body h5 code,.markdown-body h6 tt,.markdown-body h6 code{font-size:inherit;padding:0 .2em}.markdown-body summary h1,.markdown-body summary h2,.markdown-body summary h3,.markdown-body summary h4,.markdown-body summary h5,.markdown-body summary h6{display:inline-block}.markdown-body summary h1 .anchor,.markdown-body summary h2 .anchor,.markdown-body summary h3 .anchor,.markdown-body summary h4 .anchor,.markdown-body summary h5 .anchor,.markdown-body summary h6 .anchor{margin-left:-40px}.markdown-body summary h1,.markdown-body summary h2{border-bottom:0;padding-bottom:0}.markdown-body ul.no-list,.markdown-body ol.no-list{padding:0;list-style-type:none}.markdown-body ol[type=a\ s]{list-style-type:lower-alpha}.markdown-body ol[type=A\ s]{list-style-type:upper-alpha}.markdown-body ol[type=i\ s]{list-style-type:lower-roman}.markdown-body ol[type=I\ s]{list-style-type:upper-roman}.markdown-body ol[type="1"],.markdown-body div>ol:not([type]){list-style-type:decimal}.markdown-body ul ul,.markdown-body ul ol,.markdown-body ol ol,.markdown-body ol ul{margin-top:0;margin-bottom:0}.markdown-body li>p{margin-top:var(--base-size-16)}.markdown-body li+li{margin-top:.25em}.markdown-body dl{padding:0}.markdown-body dl dt{margin-top:var(--base-size-16);font-size:1em;font-style:italic;font-weight:var(--base-text-weight-semibold,600);padding:0}.markdown-body dl dd{padding:0 var(--base-size-16);margin-bottom:var(--base-size-16)}.markdown-body table th{font-weight:var(--base-text-weight-semibold,600)}.markdown-body table th,.markdown-body table td{border:1px solid var(--borderColor-default);padding:6px 13px}.markdown-body table td>:last-child{margin-bottom:0}.markdown-body table tr{background-color:var(--bgColor-default);border-top:1px solid var(--borderColor-muted)}.markdown-body table tr:nth-child(2n){background-color:var(--bgColor-muted)}.markdown-body table img{background-color:#0000}.markdown-body img[align=right]{padding-left:20px}.markdown-body img[align=left]{padding-right:20px}.markdown-body .emoji{vertical-align:text-top;background-color:#0000;max-width:none}.markdown-body span.frame{display:block;overflow:hidden}.markdown-body span.frame>span{float:left;border:1px solid var(--borderColor-default);width:auto;margin:13px 0 0;padding:7px;display:block;overflow:hidden}.markdown-body span.frame span img{float:left;display:block}.markdown-body span.frame span span{clear:both;color:var(--fgColor-default);padding:5px 0 0;display:block}.markdown-body span.align-center{clear:both;display:block;overflow:hidden}.markdown-body span.align-center>span{text-align:center;margin:13px auto 0;display:block;overflow:hidden}.markdown-body span.align-center span img{text-align:center;margin:0 auto}.markdown-body span.align-right{clear:both;display:block;overflow:hidden}.markdown-body span.align-right>span{text-align:right;margin:13px 0 0;display:block;overflow:hidden}.markdown-body span.align-right span img{text-align:right;margin:0}.markdown-body span.float-left{float:left;margin-right:13px;display:block;overflow:hidden}.markdown-body span.float-left span{margin:13px 0 0}.markdown-body span.float-right{float:right;margin-left:13px;display:block;overflow:hidden}.markdown-body span.float-right>span{text-align:right;margin:13px auto 0;display:block;overflow:hidden}.markdown-body code,.markdown-body tt{white-space:break-spaces;background-color:var(--bgColor-neutral-muted);border-radius:6px;margin:0;padding:.2em .4em;font-size:85%}.markdown-body code br,.markdown-body tt br{display:none}.markdown-body del code{-webkit-text-decoration:inherit;text-decoration:inherit}.markdown-body samp{font-size:85%}.markdown-body pre code{font-size:100%}.markdown-body pre>code{word-break:normal;white-space:pre;background:0 0;border:0;margin:0;padding:0}.markdown-body .highlight{margin-bottom:var(--base-size-16)}.markdown-body .highlight pre{word-break:normal;margin-bottom:0}.markdown-body .highlight pre,.markdown-body pre{padding:var(--base-size-16);color:var(--fgColor-default);background-color:var(--bgColor-muted);border-radius:6px;font-size:85%;line-height:1.45;overflow:auto}.markdown-body pre code,.markdown-body pre tt{max-width:auto;line-height:inherit;word-wrap:normal;background-color:#0000;border:0;margin:0;padding:0;display:inline;overflow:visible}.markdown-body .csv-data td,.markdown-body .csv-data th{text-align:left;white-space:nowrap;padding:5px;font-size:12px;line-height:1;overflow:hidden}.markdown-body .csv-data .blob-num{padding:10px var(--base-size-8)9px;text-align:right;background:var(--bgColor-default);border:0}.markdown-body .csv-data tr{border-top:0}.markdown-body .csv-data th{font-weight:var(--base-text-weight-semibold,600);background:var(--bgColor-muted);border-top:0}.markdown-body [data-footnote-ref]:before{content:"["}.markdown-body [data-footnote-ref]:after{content:"]"}.markdown-body .footnotes{color:var(--fgColor-muted);border-top:1px solid var(--borderColor-default);font-size:12px}.markdown-body .footnotes ol{padding-left:var(--base-size-16)}.markdown-body .footnotes ol ul{padding-left:var(--base-size-16);margin-top:var(--base-size-16);display:inline-block}.markdown-body .footnotes li{position:relative}.markdown-body .footnotes li:target:before{top:calc(var(--base-size-8)*-1);right:calc(var(--base-size-8)*-1);bottom:calc(var(--base-size-8)*-1);left:calc(var(--base-size-24)*-1);pointer-events:none;content:"";border:2px solid var(--borderColor-accent-emphasis);border-radius:6px;position:absolute}.markdown-body .footnotes li:target{color:var(--fgColor-default)}.markdown-body .footnotes .data-footnote-backref g-emoji{font-family:monospace}.markdown-body body:has(:modal){padding-right:var(--dialog-scrollgutter)!important}.markdown-body .pl-c{color:var(--color-prettylights-syntax-comment)}.markdown-body .pl-c1,.markdown-body .pl-s .pl-v{color:var(--color-prettylights-syntax-constant)}.markdown-body .pl-e,.markdown-body .pl-en{color:var(--color-prettylights-syntax-entity)}.markdown-body .pl-smi,.markdown-body .pl-s .pl-s1{color:var(--color-prettylights-syntax-storage-modifier-import)}.markdown-body .pl-ent{color:var(--color-prettylights-syntax-entity-tag)}.markdown-body .pl-k{color:var(--color-prettylights-syntax-keyword)}.markdown-body .pl-s,.markdown-body .pl-pds,.markdown-body .pl-s .pl-pse .pl-s1,.markdown-body .pl-sr,.markdown-body .pl-sr .pl-cce,.markdown-body .pl-sr .pl-sre,.markdown-body .pl-sr .pl-sra{color:var(--color-prettylights-syntax-string)}.markdown-body .pl-v,.markdown-body .pl-smw{color:var(--color-prettylights-syntax-variable)}.markdown-body .pl-bu{color:var(--color-prettylights-syntax-brackethighlighter-unmatched)}.markdown-body .pl-ii{color:var(--color-prettylights-syntax-invalid-illegal-text);background-color:var(--color-prettylights-syntax-invalid-illegal-bg)}.markdown-body .pl-c2{color:var(--color-prettylights-syntax-carriage-return-text);background-color:var(--color-prettylights-syntax-carriage-return-bg)}.markdown-body .pl-sr .pl-cce{color:var(--color-prettylights-syntax-string-regexp);font-weight:700}.markdown-body .pl-ml{color:var(--color-prettylights-syntax-markup-list)}.markdown-body .pl-mh,.markdown-body .pl-mh .pl-en,.markdown-body .pl-ms{color:var(--color-prettylights-syntax-markup-heading);font-weight:700}.markdown-body .pl-mi{color:var(--color-prettylights-syntax-markup-italic);font-style:italic}.markdown-body .pl-mb{color:var(--color-prettylights-syntax-markup-bold);font-weight:700}.markdown-body .pl-md{color:var(--color-prettylights-syntax-markup-deleted-text);background-color:var(--color-prettylights-syntax-markup-deleted-bg)}.markdown-body .pl-mi1{color:var(--color-prettylights-syntax-markup-inserted-text);background-color:var(--color-prettylights-syntax-markup-inserted-bg)}.markdown-body .pl-mc{color:var(--color-prettylights-syntax-markup-changed-text);background-color:var(--color-prettylights-syntax-markup-changed-bg)}.markdown-body .pl-mi2{color:var(--color-prettylights-syntax-markup-ignored-text);background-color:var(--color-prettylights-syntax-markup-ignored-bg)}.markdown-body .pl-mdr{color:var(--color-prettylights-syntax-meta-diff-range);font-weight:700}.markdown-body .pl-ba{color:var(--color-prettylights-syntax-brackethighlighter-angle)}.markdown-body .pl-sg{color:var(--color-prettylights-syntax-sublimelinter-gutter-mark)}.markdown-body .pl-corl{color:var(--color-prettylights-syntax-constant-other-reference-link);text-decoration:underline}.markdown-body [role=button]:focus:not(:focus-visible),.markdown-body [role=tabpanel][tabindex="0"]:focus:not(:focus-visible),.markdown-body button:focus:not(:focus-visible),.markdown-body summary:focus:not(:focus-visible),.markdown-body a:focus:not(:focus-visible){box-shadow:none;outline:none}.markdown-body [tabindex="0"]:focus:not(:focus-visible),.markdown-body details-dialog:focus:not(:focus-visible){outline:none}.markdown-body g-emoji{min-width:1ch;font-family:Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:1em;font-weight:var(--base-text-weight-normal,400);vertical-align:-.075em;line-height:1;display:inline-block;font-style:normal!important}.markdown-body g-emoji img{width:1em;height:1em}.markdown-body .task-list-item{list-style-type:none}.markdown-body .task-list-item label{font-weight:var(--base-text-weight-normal,400)}.markdown-body .task-list-item.enabled label{cursor:pointer}.markdown-body .task-list-item+.task-list-item{margin-top:var(--base-size-4)}.markdown-body .task-list-item .handle{display:none}.markdown-body .task-list-item-checkbox{vertical-align:middle;margin:0 .2em .25em -1.4em}.markdown-body ul:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .task-list-item-checkbox,.markdown-body ol:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .task-list-item-checkbox{margin:0 -1.6em .25em .2em}.markdown-body .contains-task-list:hover .task-list-item-convert-container,.markdown-body .contains-task-list:focus-within .task-list-item-convert-container{clip:auto;width:auto;height:24px;display:block;overflow:visible}.markdown-body ::-webkit-calendar-picker-indicator{filter:invert(50%)}.markdown-body .markdown-alert{padding:var(--base-size-8)var(--base-size-16);margin-bottom:var(--base-size-16);color:inherit;border-left:.25em solid var(--borderColor-default)}.markdown-body .markdown-alert>:first-child{margin-top:0}.markdown-body .markdown-alert>:last-child{margin-bottom:0}.markdown-body .markdown-alert .markdown-alert-title{font-weight:var(--base-text-weight-medium,500);align-items:center;line-height:1;display:flex}.markdown-body .markdown-alert.markdown-alert-note{border-left-color:var(--borderColor-accent-emphasis)}.markdown-body .markdown-alert.markdown-alert-note .markdown-alert-title{color:var(--fgColor-accent)}.markdown-body .markdown-alert.markdown-alert-important{border-left-color:var(--borderColor-done-emphasis)}.markdown-body .markdown-alert.markdown-alert-important .markdown-alert-title{color:var(--fgColor-done)}.markdown-body .markdown-alert.markdown-alert-warning{border-left-color:var(--borderColor-attention-emphasis)}.markdown-body .markdown-alert.markdown-alert-warning .markdown-alert-title{color:var(--fgColor-attention)}.markdown-body .markdown-alert.markdown-alert-tip{border-left-color:var(--borderColor-success-emphasis)}.markdown-body .markdown-alert.markdown-alert-tip .markdown-alert-title{color:var(--fgColor-success)}.markdown-body .markdown-alert.markdown-alert-caution{border-left-color:var(--borderColor-danger-emphasis)}.markdown-body .markdown-alert.markdown-alert-caution .markdown-alert-title{color:var(--fgColor-danger)}.markdown-body>:first-child>.heading-element:first-child{margin-top:0!important}.markdown-body .highlight pre:has(+.zeroclipboard-container){min-height:52px}@scope(.github-project-page,.github-project-container){.header{background-color:var(--color-bg);border-bottom:1px solid var(--color-border);width:100%;padding:var(--spacing-md)0;margin-bottom:var(--spacing-xl)}.back-link{align-items:center;gap:var(--spacing-xs);color:var(--color-text-secondary);font-weight:500;display:flex}.back-link:hover{color:var(--color-primary)}.github-button{align-items:center;gap:var(--spacing-sm);background-color:var(--color-bg-secondary);color:var(--color-text);padding:var(--spacing-sm)var(--spacing-md);border-radius:var(--radius-md);border:1px solid var(--color-border);font-weight:600;font-size:var(--font-size-sm);transition:all var(--transition-base);display:inline-flex}.github-button:hover{background-color:var(--color-border);box-shadow:var(--shadow-sm);color:var(--color-text);transform:translateY(-1px)}}@scope(.github-project-page){:scope{flex-direction:column;min-height:100vh;display:flex}.header-content{max-width:900px;padding:0 var(--spacing-lg);justify-content:space-between;align-items:center;margin:0 auto;display:flex}.content{padding-bottom:var(--spacing-2xl);flex:1}.markdown-wrapper{max-width:900px;padding:0 var(--spacing-lg);margin:0 auto}.github-project-footer{margin-top:var(--spacing-2xl);padding-top:var(--spacing-xl);border-top:1px solid var(--color-border);justify-content:center;display:flex}.markdown-body{color:var(--color-text)!important;font-family:var(--font-family)!important;background-color:#0000!important}.markdown-body a:has(>img[src*=shields\.io]){margin-right:var(--spacing-xs);display:inline-block}}@media (prefers-color-scheme:dark){@scope(.github-project-page){.markdown-body{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}}@scope(.github-project-container){:scope{padding:var(--spacing-2xl);text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;display:flex}.loading-spinner{font-size:var(--font-size-xl);color:var(--color-text-secondary)}.error-message h2{color:var(--color-accent);margin-bottom:var(--spacing-md)}.error-message p{margin-bottom:var(--spacing-lg);max-width:500px}.back-link{justify-content:center}}@media (max-width:768px){@scope(.github-project-page){.header-content,.markdown-wrapper{padding:0 var(--spacing-md)}}}@scope(.site-footer){:scope{padding:var(--spacing-xl)var(--spacing-lg);background:var(--color-bg-secondary);border-top:1px solid var(--color-border);text-align:center;margin-top:auto}p{font-size:var(--font-size-sm);color:var(--color-text-muted);align-items:center;gap:var(--spacing-xs);margin:0;display:inline-flex}p:before{content:"❤️";font-size:1rem}p:after{content:"🤖";font-size:1rem}}@scope(.app){:scope{flex-direction:column;min-height:100vh;display:flex}.main-content{width:100%;max-width:1200px;padding:0 var(--spacing-lg)var(--spacing-xl);flex:1;margin:0 auto}}@media (max-width:768px){@scope(.app){.main-content{padding:0 var(--spacing-md)var(--spacing-lg)}}}
