﻿:root{color-scheme:light;--bg:#f4f1ea;--bg-elev:#faf8f3;--surface:#fffdf9;--ink:#17161a;--ink-2:#45434c;--muted:#7b7884;--rule:#ddd8cc;--rule-strong:#c6c0b2;--accent:#b5461f;--accent-ink:#8f3616;--accent-soft:rgba(181,70,31,0.1);--logo-well:#fff;--shadow:0 1px 2px rgba(23,22,26,0.04),0 10px 30px rgba(23,22,26,0.06);--tint:rgba(181,70,31,0.055);--tint-strong:rgba(181,70,31,0.095);--rail-bg:#faf8f3;--row-hover:rgba(23,22,26,0.045);--row-active:rgba(23,22,26,0.075);--font-display:"Source Serif 4","Iowan Old Style","Palatino Linotype",Georgia,serif;--font-body:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;--font-mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;--global-bg-color:var(--bg);--global-code-bg-color:rgba(181,70,31,0.06);--global-text-color:var(--ink);--global-text-color-light:var(--muted);--global-theme-color:var(--accent);--global-hover-color:var(--accent-ink);--global-hover-text-color:#fff;--global-footer-bg-color:var(--bg);--global-footer-text-color:var(--muted);--global-footer-link-color:var(--ink);--global-distill-app-color:var(--muted);--global-divider-color:var(--rule);--global-card-bg-color:var(--surface);--global-tint-color:var(--accent-soft);--global-card-shadow:var(--shadow);--global-card-shadow-hover:var(--shadow);--global-navbar-bg:rgba(244,241,234,0.85);--global-highlight-color:var(--accent);--global-back-to-top-bg-color:rgba(23,22,26,0.55);--global-back-to-top-text-color:#fff;--global-newsletter-bg-color:var(--surface);--global-newsletter-text-color:var(--ink);--global-tip-block:#42b983;--global-tip-block-bg:#e2f5ec;--global-tip-block-text:#215d42;--global-tip-block-title:#359469;--global-warning-block:#e7c000;--global-warning-block-bg:#fff8d8;--global-warning-block-text:#6b5900;--global-warning-block-title:#b29400;--global-danger-block:#c00;--global-danger-block-bg:#ffe0e0;--global-danger-block-text:#600;--global-danger-block-title:#c00}:root #light-toggle-system{display:inline-block}:root #light-toggle-dark{display:none}:root #light-toggle-light{display:none}:root .only-light{display:block}:root .only-dark{display:none}:root #back-to-top{color:var(--global-back-to-top-text-color);background:var(--global-back-to-top-bg-color);bottom:30px;right:30px;height:40px;width:40px;z-index:10}html[data-theme=dark]{color-scheme:dark;--bg:#131316;--bg-elev:#18181c;--surface:#1c1c21;--ink:#ebe8e0;--ink-2:#bfbcb4;--muted:#8a8791;--rule:#2a2a31;--rule-strong:#3b3b44;--accent:#e8794a;--accent-ink:#f09a74;--accent-soft:rgba(232,121,74,0.14);--logo-well:#f4f1ea;--shadow:0 1px 2px rgba(0,0,0,0.3),0 12px 32px rgba(0,0,0,0.4);--tint:rgba(232,121,74,0.08);--tint-strong:rgba(232,121,74,0.15);--rail-bg:#18181c;--row-hover:rgba(235,232,224,0.06);--row-active:rgba(235,232,224,0.1);--global-code-bg-color:#26262c;--global-navbar-bg:rgba(19,19,22,0.85);--global-back-to-top-bg-color:rgba(235,232,224,0.5);--global-back-to-top-text-color:#131316;--global-tip-block:#42b983;--global-tip-block-bg:#215d42;--global-tip-block-text:#beffe2;--global-tip-block-title:#e2f5ec;--global-warning-block:#e7c000;--global-warning-block-bg:#6b5900;--global-warning-block-text:#fff2af;--global-warning-block-title:#fff8d8;--global-danger-block:#c00;--global-danger-block-bg:#600;--global-danger-block-text:#ffb9b9;--global-danger-block-title:#ffe0e0}html[data-theme=dark] .only-light{display:none}html[data-theme=dark] .only-dark{display:block}html[data-theme-setting=dark] #light-toggle-system{display:none}html[data-theme-setting=dark] #light-toggle-dark{display:inline-block}html[data-theme-setting=dark] #light-toggle-light{display:none}html[data-theme-setting=light] #light-toggle-system{display:none}html[data-theme-setting=light] #light-toggle-dark{display:none}html[data-theme-setting=light] #light-toggle-light{display:inline-block}.fa-half-sun-moon{position:relative;display:inline-block;--fa-font:var(--fa-font-solid);speak:none;font-style:normal;font-variant:normal;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:1em;height:1em}.fa-half-sun-moon::before,.fa-half-sun-moon::after{content:"";position:absolute;inset:0;top:-0.5px;bottom:-0.5px;text-align:center;line-height:1em;font:var(--fa-font);color:currentColor}.fa-half-sun-moon::before{content:"";clip-path:polygon(0 0,calc(50% - 0.5px) 0,calc(50% - 0.5px) 100%,0 100%)}.fa-half-sun-moon::after{content:"";clip-path:polygon(calc(50% + 0.5px) 0,100% 0,100% 100%,calc(50% + 0.5px) 100%);right:-1.5px;transform:translateX(-1px)}html{scroll-behavior:smooth}body.site-body{margin:0;padding:0;color:var(--ink);background-color:var(--bg);font-family:var(--font-body);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-feature-settings:"kern" 1,"liga" 1}body.site-body h1,body.site-body h2,body.site-body h3,body.site-body h4,body.site-body h5,body.site-body h6{scroll-margin-top:1.5rem}:root{--rail-w:264px}html[data-rail=collapsed]{--rail-w:64px}.site-rail{position:fixed;top:0;left:0;bottom:0;width:var(--rail-w);padding:18px 12px 14px;display:flex;flex-direction:column;border-right:1px solid var(--rule);background-color:var(--rail-bg);z-index:20;overflow-y:auto;scrollbar-width:none;font-family:var(--font-body)}.site-rail::-webkit-scrollbar{display:none}html.rail-animating .site-rail,html.rail-animating .site-main{transition:width .22s cubic-bezier(0.32,0.72,0,1),margin-left .22s cubic-bezier(0.32,0.72,0,1)}.rail-collapse{position:absolute;top:18px;right:10px;width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:7px;background:0;color:var(--muted);font-size:13px;cursor:pointer;opacity:0;transition:opacity .14s ease,background-color .14s ease,color .14s ease}.rail-collapse:hover{color:var(--ink);background-color:var(--row-hover)}.site-rail:hover .rail-collapse,.rail-collapse:focus-visible,html[data-rail=collapsed] .rail-collapse{opacity:1}.rail-identity{display:grid;grid-template-columns:40px minmax(0,1fr);align-items:center;gap:11px;padding:6px 8px 6px 6px;border-radius:10px;text-decoration:none;color:inherit;transition:background-color .16s ease}.rail-identity:hover{text-decoration:none;color:inherit;background-color:var(--row-hover)}.rail-avatar{display:block;width:40px;height:40px;object-fit:cover;border-radius:50%;box-shadow:0 0 0 1px var(--rule-strong)}.rail-id-text{display:flex;flex-direction:column;min-width:0}.rail-name{font-family:var(--font-display);font-weight:600;font-size:1.02rem;line-height:1.2;letter-spacing:-0.012em;color:var(--ink);white-space:nowrap}.rail-role{margin-top:2px;font-size:11.5px;line-height:1.35;letter-spacing:0;color:var(--muted)}.rail-group{margin-top:18px}.rail-group ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1px}.rail-group li{margin:0}.rail-group a{position:relative;display:grid;grid-template-columns:16px minmax(0,1fr) auto;align-items:center;gap:10px;height:34px;padding:0 10px;border-radius:7px;font-size:13.5px;font-weight:500;letter-spacing:-0.004em;color:var(--ink-2);text-decoration:none;transition:background-color .14s ease,color .14s ease}.rail-group a i{font-size:13px;text-align:center;color:var(--muted);transition:color .14s ease}.rail-group a span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rail-group a .rail-ext{font-size:9px;opacity:0;transform:translateX(-2px);transition:opacity .14s ease,transform .14s ease}.rail-group a:hover{text-decoration:none;color:var(--ink);background-color:var(--row-hover)}.rail-group a:hover i{color:var(--ink-2)}.rail-group a:hover .rail-ext{opacity:1;transform:none}.rail-group a:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.rail-group li.active a{color:var(--ink);font-weight:600;background-color:var(--row-active)}.rail-group li.active a i{color:var(--accent)}.rail-label{margin:0 0 6px;padding:0 10px;font-size:10.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.rail-nav{margin-top:22px}.rail-foot{margin-top:auto;padding-top:14px;border-top:1px solid var(--rule)}.rail-tools{display:flex;align-items:center;gap:6px}.rail-tool{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:32px;min-width:32px;padding:0 8px;border:1px solid var(--rule);border-radius:8px;background:var(--surface);color:var(--ink-2);font-family:var(--font-body);font-size:12.5px;font-weight:500;cursor:pointer;transition:background-color .14s ease,border-color .14s ease,color .14s ease}.rail-tool i{font-size:12.5px;color:var(--muted);transition:color .14s ease}.rail-tool .mono,.rail-tool kbd{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.02em;color:var(--muted);background:0;border:0;padding:0}.rail-tool:hover{color:var(--ink);border-color:var(--rule-strong);background-color:var(--row-hover)}.rail-tool:hover i{color:var(--ink)}.rail-tool:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.rail-tool-search{flex:1;justify-content:flex-start;padding:0 10px;color:var(--muted);font-weight:400}.rail-tool-search span{flex:1;text-align:left}.rail-colophon{margin:12px 0 0;padding:0 4px;font-size:11px;letter-spacing:0;color:var(--muted)}html[data-rail=collapsed] .site-rail{padding:14px 10px 12px;align-items:center}html[data-rail=collapsed] .rail-collapse{position:static;margin:0 0 6px}html[data-rail=collapsed] .rail-identity{grid-template-columns:40px;padding:2px;margin-bottom:4px}html[data-rail=collapsed] .rail-id-text,html[data-rail=collapsed] .rail-label,html[data-rail=collapsed] .rail-group a span,html[data-rail=collapsed] .rail-ext,html[data-rail=collapsed] .rail-tool-search span,html[data-rail=collapsed] .rail-tool-search kbd,html[data-rail=collapsed] .lang-current,html[data-rail=collapsed] .rail-colophon{display:none}html[data-rail=collapsed] .rail-group{width:100%;margin-top:10px;padding-top:10px;border-top:1px solid var(--rule)}html[data-rail=collapsed] .rail-group a{grid-template-columns:1fr;justify-items:center;width:44px;height:40px;margin:0 auto;padding:0;border-radius:9px}html[data-rail=collapsed] .rail-group a i{font-size:15px}html[data-rail=collapsed] .rail-nav{border-top:0;padding-top:0;margin-top:2px}html[data-rail=collapsed] .rail-foot{width:100%;padding-top:10px}html[data-rail=collapsed] .rail-tools{flex-direction:column;gap:6px;align-items:center}html[data-rail=collapsed] .rail-tool{width:40px;min-width:0;padding:0;justify-content:center}html[data-rail=collapsed] .rail-tool-search{flex:none}html[data-rail=collapsed] .lang-menu{display:block}html[data-rail=collapsed] .lang-list{right:auto;left:0}.site-topbar{display:none;position:sticky;top:0;z-index:30;grid-template-columns:1fr auto 1fr;align-items:center;min-height:44px;padding:0 6px;padding-left:calc(6px + env(safe - area - inset - left, 0px));padding-right:calc(6px + env(safe - area - inset - right, 0px));border-bottom:.5px solid var(--rule-strong);background-color:var(--global-navbar-bg);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}.site-topbar .topbar-name{grid-column:2;justify-self:center;font-family:var(--font-body);font-weight:600;font-size:17px;line-height:22px;letter-spacing:-0.43px;color:var(--ink);text-decoration:none}.site-topbar .topbar-tools{grid-column:3;justify-self:end}.site-topbar .topbar-search{border:0;background:0;color:var(--ink-2);font-size:.95rem;padding:.3rem;cursor:pointer}.site-main{margin-left:var(--rail-w);min-height:100vh;display:flex;flex-direction:column}.site-content{flex:1;width:100%;max-width:1320px;margin:0 auto;padding:4.2rem 3rem 3rem}.mono{font-family:var(--font-mono);font-feature-settings:"tnum" 1}.eyebrow{margin:0 0 1rem;font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}.section{margin-top:4.25rem}.section:first-child{margin-top:0}.section-label{display:flex;align-items:baseline;gap:1rem;margin:0 0 1.4rem;font-size:.7rem;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.section-label>span:first-child{color:var(--ink)}.section-label::after{content:"";flex:1;height:1px;background:var(--rule);align-self:center;order:1}.section-label .section-more{order:2;color:var(--muted);text-decoration:none;letter-spacing:.08em;transition:color .18s ease}.section-label .section-more:hover{color:var(--accent);text-decoration:none}.page-head{margin-bottom:2.8rem;padding-bottom:2rem;border-bottom:1px solid var(--rule)}.page-title{margin:0;font-family:var(--font-display);font-weight:600;font-size:clamp(1.95rem,3vw,2.4rem);line-height:1.14;letter-spacing:-0.022em;color:var(--ink);text-wrap:balance}.page-desc{margin:.95rem 0 0;font-size:.98rem;line-height:1.62;color:var(--ink-2)}.prose{font-family:var(--font-display);font-size:1.055rem;line-height:1.72;color:var(--ink-2)}.prose p{margin:0 0 1.15rem}.prose strong{color:var(--ink);font-weight:600}.prose a{color:var(--accent);text-decoration:underline;text-decoration-color:rgba(181,70,31,.35);text-underline-offset:.16em;transition:text-decoration-color .18s ease}.prose a:hover{color:var(--accent);text-decoration-color:var(--accent)}.prose h2{margin:2.8rem 0 1rem;font-family:var(--font-display);font-weight:500;font-size:1.7rem;line-height:1.2;letter-spacing:-0.015em;color:var(--ink)}.prose h3{margin:2rem 0 .7rem;font-family:var(--font-body);font-size:.82rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink)}.prose ul,.prose ol{padding-left:1.3rem;margin:0 0 1.15rem}.prose ul li,.prose ol li{margin-bottom:.35rem}.prose img,.prose video{max-width:100%}.prose table{width:100%;border-collapse:collapse;font-family:var(--font-mono);font-size:.78rem;line-height:1.45;margin:.6rem 0 1rem}.prose table th,.prose table td{padding:.45rem .7rem;border-bottom:1px solid var(--rule);text-align:left;color:var(--ink-2);vertical-align:top}.prose table th{font-weight:600;color:var(--ink);border-bottom:1px solid var(--rule-strong);letter-spacing:.02em}.prose table strong{color:var(--accent)}.prose small{display:block;margin-top:.4rem;font-family:var(--font-body);font-size:.78rem;color:var(--muted)}.prose .media-row>div>strong{display:block;margin-bottom:.4rem;font-family:var(--font-mono);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}@media(max-width:899.98px){:root{--font-body:-apple-system,BlinkMacSystemFont,"SF Pro Text","SF Pro Display","Segoe UI",Roboto,"Helvetica Neue",system-ui,Arial,sans-serif}.site-rail{display:none}.site-topbar{display:grid}.site-main{margin-left:0}body.site-body{font-size:17px;line-height:1.47;letter-spacing:-0.01em;padding-bottom:calc(92px + env(safe - area - inset - bottom, 0px))}.site-content{padding:1.25rem 16px 2rem;padding-left:calc(16px + env(safe - area - inset - left, 0px));padding-right:calc(16px + env(safe - area - inset - right, 0px))}.section{margin-top:2.75rem}.page-head{margin-bottom:1.6rem;padding-bottom:1.1rem;border-bottom-width:.5px}.page-title{font-size:34px;line-height:1.12;letter-spacing:-0.6px}.page-desc{margin-top:.7rem;font-family:var(--font-body);font-size:15px;line-height:1.4;letter-spacing:-0.01em;color:var(--muted)}.home-title{font-size:1.55rem;line-height:1.36}.prose{font-size:1.03rem;line-height:1.66}.eyebrow,.section-label{font-size:.66rem}.news-list li,.proj-row,.xp-entry{border-top-width:.5px}.news-list li:last-child,.proj-row:last-child,.xp-entry:last-child{border-bottom-width:.5px}.topbar-tool{min-width:44px;min-height:38px;justify-content:center;font-size:17px;color:var(--accent)}.lang-btn .lang-current{font-size:.62rem}.lang-list{min-width:13rem;padding:.3rem;border-radius:14px;border-color:var(--rule);box-shadow:0 12px 32px rgba(0,0,0,.18)}.lang-list button{font-family:var(--font-body);font-size:17px;letter-spacing:-0.01em;padding:.6rem .7rem;border-radius:10px}}html[data-i18n-pending] .site-main,html[data-i18n-pending] .site-rail,html[data-i18n-pending] .site-topbar{visibility:hidden}.lang-menu{position:relative;display:inline-flex}.lang-btn .lang-current{font-size:.66rem;letter-spacing:.06em}.lang-list{position:absolute;right:0;bottom:calc(100% + .5rem);z-index:50;min-width:11.5rem;margin:0;padding:.35rem;list-style:none;background:var(--surface);border:1px solid var(--rule-strong);border-radius:10px;box-shadow:var(--shadow)}.lang-list li{margin:0}.lang-list button{display:flex;align-items:center;gap:.7rem;width:100%;padding:.42rem .6rem;border:0;border-radius:6px;background:0;color:var(--ink-2);font-family:var(--font-body);font-size:.86rem;text-align:left;cursor:pointer}.lang-list button:hover{background:var(--accent-soft);color:var(--ink)}.lang-list button[aria-selected=true]{color:var(--ink);font-weight:600}.lang-list button[aria-selected=true] .lang-code{color:var(--accent)}.lang-list .lang-code{width:1.7rem;flex:none;font-size:.62rem;letter-spacing:.08em;color:var(--muted)}.site-topbar .lang-list{left:auto;right:0;top:calc(100% + .5rem);bottom:auto}.topbar-tools{display:flex;align-items:center;gap:.35rem}.topbar-tool{display:inline-flex;align-items:center;gap:.35rem;border:0;background:0;color:var(--ink-2);font-size:.95rem;padding:.35rem .45rem;cursor:pointer;border-radius:6px}.topbar-tool:hover{color:var(--accent);background:var(--accent-soft)}html[data-lang=zh]{--font-display:"Source Serif 4","Songti SC","Noto Serif SC","Source Han Serif SC","SimSun",serif;--font-body:"Inter",-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC",sans-serif}html[data-lang=zh] .home-title,html[data-lang=zh] .page-title,html[data-lang=zh] .rail-name,html[data-lang=zh] .proj-title,html[data-lang=zh] .work-title,html[data-lang=zh] .xp-title,html[data-lang=zh] .proj-stage-title,html[data-lang=zh] .home-contact-line,html[data-lang=zh] .home-quote{letter-spacing:0}html[data-lang=zh] .home-title{font-weight:500;line-height:1.25}html[data-lang=ru],html[data-lang=pl]{--font-display:"Source Serif 4","Iowan Old Style",Georgia,"Times New Roman",serif}@media(max-width:899.98px){html[data-lang=zh]{--font-body:-apple-system,BlinkMacSystemFont,"SF Pro Text","PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC","Helvetica Neue",system-ui,sans-serif}}.site-content{display:grid;grid-template-columns:minmax(0,880px) 192px;column-gap:4rem;justify-content:center;align-items:start}.site-content>.page,.site-content>.home{grid-column:1;min-width:0}.site-content>.pagenav{grid-column:2;grid-row:1;position:sticky;top:2.6rem;max-height:calc(100vh - 4rem);overflow-y:auto;scrollbar-width:none}.site-content>.pagenav::-webkit-scrollbar{display:none}.pagenav-toggle{display:flex;align-items:center;gap:.5rem;width:100%;margin:0 0 .55rem;padding:0;border:0;background:0;color:var(--muted);font-family:var(--font-body);font-size:10.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;text-align:left;cursor:default}.pagenav-toggle .pagenav-chevron{display:none}.pagenav-list{list-style:none;margin:0;padding:0;border-left:1px solid var(--rule)}.pagenav-list li{margin:0}.pagenav-list a{position:relative;display:block;padding:5px 0 5px 14px;margin-left:-1px;border-left:1px solid rgba(0,0,0,0);font-family:var(--font-body);font-size:12.5px;line-height:1.35;color:var(--muted);text-decoration:none;transition:color .14s ease,border-color .14s ease}.pagenav-list a:hover{color:var(--ink);text-decoration:none}.pagenav-list a.active{color:var(--ink);font-weight:600;border-left-color:var(--accent)}.pagenav-list .pagenav-top a{font-weight:500}.pagenav-list .pagenav-sub a{padding-left:26px;font-size:12px}.pagenav-list .pagenav-sub a.active{font-weight:500}@media(max-width:1199.98px)and (min-width:900px){.site-content{display:block}.pagenav{margin:-0.8rem 0 2rem}}@media(max-width:1199.98px){.site-content>.pagenav{position:static;max-height:none}.pagenav{margin:0 0 1.6rem;padding:.35rem 0;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}.pagenav-toggle{margin:0;min-height:40px;font-size:12px;letter-spacing:.06em;color:var(--ink-2);cursor:pointer}.pagenav-toggle .pagenav-chevron{display:inline-block;margin-left:auto;font-size:10px;color:var(--muted);transition:transform .2s ease}.pagenav-list{display:none;border-left:0;padding:.2rem 0 .6rem}.pagenav-list a{margin:0;padding:8px 0;border-left:0;font-size:15px;color:var(--ink-2)}.pagenav-list a.active{color:var(--accent);font-weight:600}.pagenav-list .pagenav-sub a{padding-left:18px;font-size:14px}.pagenav.open .pagenav-list{display:block}.pagenav.open .pagenav-chevron{transform:rotate(180deg)}}@media(max-width:899.98px){.site-content{display:block}.pagenav{border-top:0;border-bottom-width:.5px}}p,h1,h2,h3,h4,h5,h6,em,div,li,span,strong{color:inherit}h1,h2,h3,h4,h5,h6{font-weight:600;letter-spacing:-0.01em;color:var(--ink)}p{line-height:1.65}::selection{background:var(--accent-soft)}hr{border:0;border-top:1px solid var(--rule)}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-ink);text-decoration:underline;text-underline-offset:.16em}blockquote{margin:1.5em 0;padding:.2em 0 .2em 1.25em;border-left:2px solid var(--accent);font-family:var(--font-display);font-size:1.15rem;line-height:1.5;color:var(--ink-2)}blockquote p{margin-bottom:0}code{font-family:var(--font-mono);font-size:.88em;background:var(--global-code-bg-color);padding:.1em .35em;border-radius:3px}.mobile-bottom-nav{display:none;position:fixed;bottom:0;left:0;right:0;z-index:1040;padding:0 16px 12px;padding-bottom:calc(12px + env(safe - area - inset - bottom, 0px));pointer-events:none}@media(max-width:899.98px){.mobile-bottom-nav{display:block}#back-to-top{bottom:calc(92px + env(safe - area - inset - bottom, 0px))!important;right:16px!important}}.mobile-bottom-nav-bar{position:relative;isolation:isolate;display:flex;align-items:center;height:64px;padding:0 6px;border-radius:32px;pointer-events:auto;touch-action:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;background:radial-gradient(70% 60% at 50% 118%,rgba(255,255,255,0.26),transparent 70%),linear-gradient(180deg,rgba(255,255,255,0.3),rgba(255,255,255,0.06) 55%,rgba(255,255,255,0.16)),rgba(255,252,246,.18);-webkit-backdrop-filter:blur(22px) saturate(190%) brightness(1.05);backdrop-filter:blur(22px) saturate(190%) brightness(1.05);box-shadow:inset 1.5px 1.5px 1px -1px rgba(255,255,255,.9),inset -1.5px -1.5px 1px -1px rgba(60,50,40,.14),0 0 0 .5px rgba(60,50,40,.08),0 1px 1px rgba(0,0,0,.05),0 12px 32px rgba(23,22,26,.16),0 28px 60px -20px rgba(23,22,26,.25)}.mobile-bottom-nav-bar::before{content:"";position:absolute;top:0;left:12%;right:12%;height:1px;border-radius:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,0.95) 30%,rgba(255,255,255,0.95) 70%,transparent);pointer-events:none;z-index:3}.mobile-bottom-nav-bar::after{content:"";position:absolute;inset:0;border-radius:inherit;padding:1.5px;background:linear-gradient(135deg,rgba(255,255,255,0.95) 0%,rgba(255,255,255,0.35) 28%,rgba(255,255,255,0.08) 50%,rgba(255,255,255,0.3) 72%,rgba(255,255,255,0.85) 100%);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude;pointer-events:none;z-index:2}.mobile-bottom-nav-item{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1 0 0;min-width:56px;height:52px;padding:0 4px;color:var(--ink);opacity:.55;text-decoration:none;font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.02em;text-transform:uppercase;transition:color .25s ease,opacity .25s ease,transform .15s ease;background:0;border:0;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;touch-action:none;white-space:nowrap}.mobile-bottom-nav-item i{font-size:1.1rem;margin-bottom:3px;transition:transform .25s ease}.mobile-bottom-nav-item:hover,.mobile-bottom-nav-item:focus{text-decoration:none;color:var(--accent);opacity:.85}.mobile-bottom-nav-item:active{transform:scale(0.94)}.mobile-bottom-nav-item.active,.mobile-bottom-nav-item.drag-hover{color:var(--accent);opacity:1}.mobile-bottom-nav-item.active i,.mobile-bottom-nav-item.drag-hover i{transform:scale(1.06)}.mobile-bottom-nav-item.active::before{content:"";position:absolute;inset:0 1px;z-index:-1;border-radius:26px;background:linear-gradient(180deg,rgba(255,255,255,0.9),rgba(255,255,255,0.5) 60%,rgba(255,255,255,0.72));box-shadow:inset 0 0 0 1px rgba(255,255,255,.95),inset 2px 2px 2px -1px #fff,inset -2px -2.5px 2px -1px rgba(60,50,40,.16),0 0 0 .5px rgba(60,50,40,.06),0 1px 1px rgba(0,0,0,.04),0 6px 14px -2px rgba(23,22,26,.18);transition:opacity .18s ease}.mobile-bottom-nav-bar.dragging .mobile-bottom-nav-item.active::before{opacity:0}.mobile-nav-glass-indicator{position:absolute;top:6px;left:0;height:52px;width:64px;border-radius:26px;opacity:0;pointer-events:none;z-index:0;will-change:transform,width;background:linear-gradient(180deg,rgba(255,255,255,0.96),rgba(255,255,255,0.66) 60%,rgba(255,255,255,0.82));-webkit-backdrop-filter:blur(6px) saturate(160%);backdrop-filter:blur(6px) saturate(160%);box-shadow:inset 0 0 0 1px rgba(255,255,255,.9),inset 1.5px 1.5px 1px -1px #fff,inset -1.5px -2px 1px -1px rgba(60,50,40,.14),0 1px 1px rgba(0,0,0,.04),0 6px 14px -2px rgba(23,22,26,.16);transition:scale .22s cubic-bezier(0.32,0.72,0,1),box-shadow .22s ease,opacity .15s ease}.mobile-nav-glass-indicator.lifted{scale:1.06 1.14;box-shadow:inset 0 0 0 1px rgba(255,255,255,.95),inset 1.5px 1.5px 1px -1px #fff,inset -1.5px -2px 1px -1px rgba(60,50,40,.14),0 2px 2px rgba(0,0,0,.05),0 14px 28px -4px rgba(23,22,26,.28)}.mobile-bottom-nav-divider{width:1px;height:26px;margin:0 2px;background:linear-gradient(180deg,transparent,rgba(60,50,40,0.28),transparent);flex:0 0 auto}.mobile-bottom-nav-theme-btn{flex:0 0 auto;min-width:60px}html[data-theme=dark] .mobile-bottom-nav-bar{background:linear-gradient(180deg,rgba(255,255,255,0.12),rgba(255,255,255,0.03) 55%,rgba(255,255,255,0.07)),rgba(28,28,33,.5);-webkit-backdrop-filter:blur(28px) saturate(170%) brightness(0.9);backdrop-filter:blur(28px) saturate(170%) brightness(0.9);box-shadow:inset 1.5px 1.5px 1px -1px rgba(255,255,255,.35),inset -1.5px -1.5px 1px -1px rgba(0,0,0,.5),0 0 0 .5px rgba(0,0,0,.4),0 1px 1px rgba(0,0,0,.3),0 12px 32px rgba(0,0,0,.5),0 28px 60px -20px rgba(0,0,0,.6)}html[data-theme=dark] .mobile-bottom-nav-bar::before{background:linear-gradient(90deg,transparent,rgba(255,255,255,0.45) 30%,rgba(255,255,255,0.45) 70%,transparent)}html[data-theme=dark] .mobile-bottom-nav-bar::after{background:linear-gradient(135deg,rgba(255,255,255,0.5) 0%,rgba(255,255,255,0.16) 28%,rgba(255,255,255,0.04) 50%,rgba(255,255,255,0.14) 72%,rgba(255,255,255,0.42) 100%)}html[data-theme=dark] .mobile-bottom-nav-item.active::before,html[data-theme=dark] .mobile-nav-glass-indicator{background:linear-gradient(180deg,rgba(255,255,255,0.26),rgba(255,255,255,0.1) 60%,rgba(255,255,255,0.16));box-shadow:inset 0 0 0 1px rgba(255,255,255,.3),inset 1.5px 1.5px 1px -1px rgba(255,255,255,.55),inset -1.5px -2px 1px -1px rgba(0,0,0,.45),0 1px 1px rgba(0,0,0,.3),0 6px 14px -2px rgba(0,0,0,.5)}html[data-theme=dark] .mobile-nav-glass-indicator.lifted{box-shadow:inset 0 0 0 1px rgba(255,255,255,.35),inset 1.5px 1.5px 1px -1px rgba(255,255,255,.6),inset -1.5px -2px 1px -1px rgba(0,0,0,.45),0 2px 2px rgba(0,0,0,.3),0 14px 28px -4px rgba(0,0,0,.65)}html[data-theme=dark] .mobile-bottom-nav-divider{background:linear-gradient(180deg,transparent,rgba(255,255,255,0.22),transparent)}.site-footer{width:100%;max-width:1320px;margin:0 auto;padding:1.6rem 3rem 2.2rem;display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;border-top:1px solid var(--rule);font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.site-footer a{color:var(--ink-2);text-decoration:none}.site-footer a:hover{color:var(--accent);text-decoration:none}@media(max-width:899.98px){.site-footer{padding:1.4rem 1.25rem 1.6rem}}.header-bar{border-bottom:1px solid var(--global-divider-color);text-align:center;padding-top:2rem;padding-bottom:3rem}.header-bar h1{color:var(--global-theme-color);font-size:5rem}.post-title mjx-container[jax=CHTML][display=true]{display:unset}.post-list{margin:0;margin-bottom:40px;padding:0}.post-list li{border-bottom:1px solid var(--global-divider-color);list-style:none;padding-top:2rem;padding-bottom:2rem}.post-list li .post-meta{color:var(--global-text-color-light);font-size:.875rem;margin-bottom:0}.post-list li .post-tags{color:var(--global-text-color-light);font-size:.875rem;padding-top:.25rem;padding-bottom:0}.post-list li a{color:var(--global-text-color);text-decoration:none}.post-list li a:hover{color:var(--global-theme-color)}.post-list li mjx-container[jax=CHTML][display=true]{display:unset}.pagination .page-item .page-link{color:var(--global-text-color);padding:.75rem 1.15rem}.pagination .page-item .page-link:hover{color:#000}.pagination .page-item.active .page-link{color:#fff;background-color:var(--global-theme-color)}.pagination .page-item.active .page-link:hover{background-color:var(--global-theme-color)}.post .post-meta{color:var(--global-text-color-light);font-size:.875rem;margin-bottom:0}.post .post-tags{color:var(--global-text-color-light);font-size:.875rem;padding-top:.25rem;padding-bottom:1rem}.post .post-tags a{color:var(--global-text-color-light);text-decoration:none}.post .post-tags a:hover{color:var(--global-theme-color)}.publications{margin-top:0}.publications h2.bibliography{display:flex;align-items:baseline;gap:1rem;margin:2.6rem 0 .4rem;font-family:var(--font-display);font-weight:500;font-size:1.5rem;letter-spacing:-0.01em;color:var(--ink);border:0;padding:0}.publications h2.bibliography::after{content:"";flex:1;height:1px;background:var(--rule);align-self:center}.publications h2.bibliography:first-child{margin-top:0}.publications ol.bibliography{list-style:none;padding:0;margin:0;counter-reset:pub}.publications ol.bibliography li{counter-increment:pub;position:relative;padding:1.5rem 0;border-top:1px solid var(--rule)}.publications ol.bibliography li:last-child{border-bottom:1px solid var(--rule)}.publications ol.bibliography li .row{display:grid;grid-template-columns:13.5rem minmax(0,1fr);gap:0 1.8rem;margin:0}.publications ol.bibliography li .row>div{flex:none;max-width:none;width:auto;padding:0;min-width:0}.publications ol.bibliography li .pub-media{margin-top:.85rem;aspect-ratio:16/9;overflow:hidden;border-radius:4px;background:var(--rule)}.publications ol.bibliography li .pub-media video,.publications ol.bibliography li .pub-media img{display:block;width:100%;height:100%;object-fit:cover}.publications ol.bibliography li .abstract.hidden figure{margin:.8rem 0 0}.publications ol.bibliography li .abstract.hidden figure video{width:100%;border-radius:4px}.publications ol.bibliography li .pub-head{margin-bottom:.55rem}.publications ol.bibliography li .title{font-family:var(--font-display);font-weight:500;font-size:1.3rem;line-height:1.3;letter-spacing:-0.01em;color:var(--ink);text-wrap:pretty}.publications ol.bibliography li .author{margin-top:.4rem;font-family:var(--font-body);font-size:.88rem;line-height:1.5;color:var(--ink-2)}.publications ol.bibliography li .author a{color:var(--ink-2);border-bottom:1px dashed var(--rule-strong)}.publications ol.bibliography li .author a:hover{color:var(--accent);border-bottom-style:solid;text-decoration:none}.publications ol.bibliography li .author>em{font-style:normal;color:var(--ink);border-bottom:1.5px solid var(--accent)}.publications ol.bibliography li .author>span.more-authors{color:var(--muted);border-bottom:1px dashed var(--muted);cursor:pointer}.publications ol.bibliography li .author>span.more-authors:hover{color:var(--ink)}.publications ol.bibliography li .periodical{margin-top:.2rem;font-family:var(--font-body);font-size:.82rem;line-height:1.5;color:var(--muted)}.publications ol.bibliography li .periodical em{font-style:normal}.publications ol.bibliography li .periodical:empty{display:none}.publications ol.bibliography li .links{margin-top:.75rem;display:flex;align-items:baseline;flex-wrap:wrap;gap:.35rem 1.25rem}.publications ol.bibliography li .links a.btn{margin:0;padding:0;border:0;border-radius:0;background:0;box-shadow:none;font-family:var(--font-mono);font-size:.68rem;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);line-height:1.6;border-bottom:1px solid rgba(0,0,0,0);transition:border-color .18s ease}.publications ol.bibliography li .links a.btn:hover,.publications ol.bibliography li .links a.btn:focus{color:var(--accent);background:0;border-bottom-color:var(--accent);text-decoration:none}.publications ol.bibliography li .links a.award.btn{color:var(--ink)}.publications ol.bibliography li .badges:empty{display:none}.publications ol.bibliography li .title{font-family:var(--font-display);font-weight:500;font-size:1.3rem;line-height:1.3;letter-spacing:-0.01em;color:var(--ink);text-wrap:pretty}.publications ol.bibliography li .author{margin-top:.4rem;font-family:var(--font-body);font-size:.88rem;line-height:1.5;color:var(--ink-2)}.publications ol.bibliography li .author a{color:var(--ink-2);border-bottom:1px dashed var(--rule-strong)}.publications ol.bibliography li .author a:hover{color:var(--accent);border-bottom-style:solid;text-decoration:none}.publications ol.bibliography li .author>em{font-style:normal;color:var(--ink);border-bottom:1.5px solid var(--accent)}.publications ol.bibliography li .author>span.more-authors{color:var(--muted);border-bottom:1px dashed var(--muted);cursor:pointer}.publications ol.bibliography li .author>span.more-authors:hover{color:var(--ink)}.publications ol.bibliography li .periodical{margin-top:.2rem;font-family:var(--font-body);font-size:.82rem;line-height:1.5;color:var(--muted)}.publications ol.bibliography li .periodical em{font-style:normal}.publications ol.bibliography li .periodical:empty{display:none}.publications ol.bibliography li .links{margin-top:.75rem;display:flex;flex-wrap:wrap;gap:.35rem 1.25rem}.publications ol.bibliography li .links a.btn{margin:0;padding:0;border:0;border-radius:0;background:0;box-shadow:none;font-family:var(--font-mono);font-size:.68rem;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);line-height:1.6;border-bottom:1px solid rgba(0,0,0,0);transition:border-color .18s ease}.publications ol.bibliography li .links a.btn:hover,.publications ol.bibliography li .links a.btn:focus{color:var(--accent);background:0;border-bottom-color:var(--accent);text-decoration:none}.publications ol.bibliography li .links a.award.btn{color:var(--ink)}.publications ol.bibliography li .badges:empty{display:none}.publications ol.bibliography li .pub-cites{display:inline-flex;align-items:baseline;gap:.4rem;font-family:var(--font-mono);font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);text-decoration:none;border:1px solid var(--rule);border-radius:999px;padding:.28em .75em .28em .6em;transition:color .18s ease,border-color .18s ease}.publications ol.bibliography li .pub-cites i{font-size:.85rem;align-self:center;color:var(--accent)}.publications ol.bibliography li .pub-cites .pub-cites-n{font-weight:600;color:var(--ink);font-size:.78rem;letter-spacing:0}.publications ol.bibliography li .pub-cites:hover{color:var(--accent);border-color:var(--accent);text-decoration:none}.publications ol.bibliography li .hidden{font-size:.9rem;line-height:1.6;max-height:0;overflow:hidden;transition:all .2s ease;color:var(--ink-2)}.publications ol.bibliography li .hidden p{margin:.9rem 0 .2rem}.publications ol.bibliography li .hidden pre{font-size:.8em;line-height:1.45;padding:10px}.publications ol.bibliography li .hidden.open{max-height:100em}.publications ol.bibliography li div.abstract.hidden.open{margin-top:.4rem;padding-left:1rem;border-left:2px solid var(--rule-strong)}.citation,.citation-number{color:var(--accent)}@media(max-width:575.98px){.publications ol.bibliography li .row{grid-template-columns:1fr;gap:.6rem 0}}.pub-head,.proj-head{display:flex;flex-wrap:wrap;align-items:center;gap:.45rem .7rem;margin:0 0 .5rem}.pub-venue,.venue-badge{display:inline-flex;align-items:center;height:1.45rem;padding:0 .6rem;border-radius:5px;background:var(--accent);color:#fff!important;font-family:var(--font-mono);font-size:.66rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;text-decoration:none;white-space:nowrap;line-height:1}.pub-venue:hover,.venue-badge:hover{color:#fff;background:var(--accent-ink);text-decoration:none}.pub-cites{display:inline-flex;align-items:center;gap:.4rem;height:1.45rem;padding:0 .65rem 0 .55rem;border:1px solid var(--rule-strong);border-radius:5px;background:var(--surface);font-family:var(--font-mono);font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);text-decoration:none;white-space:nowrap;line-height:1;transition:color .18s ease,border-color .18s ease}.pub-cites i{font-size:.85rem;color:var(--accent)}.pub-cites .pub-cites-n{font-weight:700;font-size:.8rem;letter-spacing:0;color:var(--ink)}.pub-cites:hover{color:var(--accent);border-color:var(--accent);text-decoration:none}.proj-head .proj-meta,.proj-head .work-meta{margin:0}.home-opening{margin-bottom:2.6rem}.home-title{margin:0;font-family:var(--font-display);font-weight:400;font-size:clamp(1.6rem,2.55vw,2.05rem);line-height:1.34;letter-spacing:-0.012em;color:var(--ink);text-wrap:pretty}.home-title em{font-style:italic;color:var(--accent)}.home-banner{position:relative;margin:0 0 3.6rem;aspect-ratio:21/9;overflow:hidden;border-radius:6px;background:var(--rule)}.home-banner img{display:block;width:100%;height:100%;object-fit:cover;object-position:center 32%}.home-banner figcaption{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:flex-end;padding:1.6rem 1.8rem;background:linear-gradient(180deg,rgba(10,12,20,0) 40%,rgba(10,12,20,0.62) 100%)}.home-banner .home-quote{margin:0;font-family:var(--font-display);font-style:italic;font-weight:400;font-size:clamp(1.15rem,2vw,1.55rem);line-height:1.35;color:#fff;text-shadow:0 1px 12px rgba(0,0,0,.4);max-width:30ch}.home-banner .home-credit{position:absolute;right:1rem;top:.8rem;font-size:.56rem;letter-spacing:.06em;text-transform:uppercase;color:rgba(255,255,255,.7);text-shadow:0 1px 6px rgba(0,0,0,.5)}html[data-theme=dark] .home-banner img{filter:brightness(0.82) saturate(0.9)}.home-contact-line{margin:0;font-family:var(--font-display);font-size:1.3rem;line-height:1.45;color:var(--ink)}.home-contact-line a{color:var(--accent);text-decoration:underline;text-decoration-color:rgba(181,70,31,.35);text-underline-offset:.14em}.home-contact-line a:hover{text-decoration-color:var(--accent)}.work-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2.2rem 2rem}.work-tile{display:flex;flex-direction:column;color:inherit;text-decoration:none}.work-tile:hover{text-decoration:none;color:inherit}.work-tile:hover .work-title{color:var(--accent)}.work-tile:hover .work-media img,.work-tile:hover .work-media video{transform:scale(1.02)}.work-media{display:block;aspect-ratio:16/9;overflow:hidden;border-radius:4px;background:var(--rule);margin-bottom:.95rem}.work-media img,.work-media video{display:block;width:100%;height:100%;object-fit:cover;transition:transform .5s cubic-bezier(0.2,0.7,0.2,1)}.work-meta{font-size:.64rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:.4rem}.work-title{font-family:var(--font-display);font-weight:500;font-size:1.25rem;line-height:1.25;letter-spacing:-0.01em;color:var(--ink);transition:color .18s ease;margin-bottom:.4rem}.work-desc{font-size:.88rem;line-height:1.55;color:var(--ink-2);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.news-list{list-style:none;margin:0;padding:0}.news-list li{display:grid;grid-template-columns:7.5rem minmax(0,1fr);gap:0 1.6rem;padding:.85rem 0;border-top:1px solid var(--rule)}.news-list li:last-child{border-bottom:1px solid var(--rule)}.news-list .news-date{font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding-top:.25rem;white-space:nowrap}.news-list .news-body{font-size:.95rem;line-height:1.6;color:var(--ink-2)}.news-list .news-body strong{color:var(--ink)}.news-list .news-body a{color:var(--accent)}.proj-stage{margin-bottom:4.5rem}.proj-stage:last-child{margin-bottom:0}.proj-stage-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;margin-bottom:1.6rem;padding-bottom:.8rem;border-bottom:1px solid var(--rule-strong)}.proj-stage-title{margin:0;font-family:var(--font-display);font-weight:500;font-size:2rem;line-height:1;letter-spacing:-0.02em;color:var(--ink)}.proj-stage-period{font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.proj-group{margin-top:2.4rem}.proj-group:first-of-type{margin-top:0}.proj-group-title{display:flex;align-items:baseline;flex-wrap:wrap;gap:.3rem 1rem;margin:0 0 .4rem;font-size:.72rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--ink)}.proj-group-title .proj-group-note{font-weight:400;color:var(--muted);letter-spacing:.06em}.proj-group-title .proj-group-note::before{content:"— "}.proj-row{display:grid;grid-template-columns:240px minmax(0,1fr);gap:1.9rem;padding:1.7rem 0;border-top:1px solid var(--rule)}.proj-row:last-child{border-bottom:1px solid var(--rule)}.proj-row:hover .proj-title a{color:var(--accent)}.proj-row:hover .proj-media img,.proj-row:hover .proj-media video{transform:scale(1.02)}.proj-media{display:block;aspect-ratio:16/9;overflow:hidden;border-radius:4px;background:var(--rule);align-self:start}.proj-media img,.proj-media video,.proj-media iframe{display:block;width:100%;height:100%;object-fit:cover;border:0;transition:transform .5s cubic-bezier(0.2,0.7,0.2,1)}.proj-meta{margin:0 0 .45rem;font-size:.64rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.proj-title{margin:0 0 .5rem;font-family:var(--font-display);font-weight:500;font-size:1.45rem;line-height:1.2;letter-spacing:-0.012em}.proj-title a{color:var(--ink);text-decoration:none;transition:color .18s ease}.proj-title a:hover{text-decoration:none}.proj-desc{margin:0 0 .8rem;font-family:var(--font-body);font-size:.9rem;line-height:1.6;color:var(--ink-2)}.proj-links{margin:0;display:flex;align-items:baseline;gap:1.4rem;font-family:var(--font-mono);font-size:.68rem;letter-spacing:.1em;text-transform:uppercase}.proj-links a{color:var(--accent);text-decoration:none;border-bottom:1px solid rgba(0,0,0,0);transition:border-color .18s ease}.proj-links a:hover{text-decoration:none;border-bottom-color:var(--accent)}.proj-links .proj-paper,.proj-links .proj-code{color:var(--ink-2)}.proj-links .proj-paper i,.proj-links .proj-code i{margin-right:.3rem}.proj-links .proj-paper:hover,.proj-links .proj-code:hover{color:var(--ink);border-bottom-color:var(--ink)}.xp-section{margin-bottom:3.6rem}.xp-section:last-child{margin-bottom:0}.xp-entry{display:grid;grid-template-columns:7.5rem 48px minmax(0,1fr);gap:1.5rem;padding:1.5rem 0;border-top:1px solid var(--rule)}.xp-entry:last-child{border-bottom:1px solid var(--rule)}.xp-when{font-size:.7rem;line-height:1.7;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding-top:.35rem}.xp-logo{width:48px;height:48px;display:flex;align-items:center;justify-content:center;border-radius:10px;border:1px solid var(--rule);background:var(--logo-well);overflow:hidden}.xp-logo img{width:100%;height:100%;object-fit:contain;padding:6px}.xp-logo i{color:var(--accent);font-size:1.1rem}.xp-title{margin:0;font-family:var(--font-display);font-weight:500;font-size:1.3rem;line-height:1.25;letter-spacing:-0.01em;color:var(--ink)}.xp-title .xp-area{color:var(--ink-2);font-style:italic;font-weight:400}.xp-org{margin:.3rem 0 0;font-size:.95rem;color:var(--ink-2);display:flex;align-items:baseline;flex-wrap:wrap;gap:.3rem .9rem}.xp-org a{color:var(--ink-2);text-decoration:none;border-bottom:1px dashed var(--rule-strong)}.xp-org a:hover{color:var(--accent);border-bottom-style:solid;text-decoration:none}.xp-org .xp-loc{font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.xp-highlights{margin:.8rem 0 0;padding-left:1.1rem;font-size:.9rem;line-height:1.6;color:var(--ink-2)}.xp-highlights li{margin-bottom:.3rem}.xp-highlights li::marker{color:var(--rule-strong)}.project-links{display:flex;align-items:center;flex-wrap:wrap;gap:.6rem 1.4rem;margin:-1.2rem 0 2rem;font-family:var(--font-mono);font-size:.7rem;letter-spacing:.08em;text-transform:uppercase}.project-links a{color:var(--accent);text-decoration:none;border-bottom:1px solid rgba(0,0,0,0)}.project-links a:hover{text-decoration:none;border-bottom-color:var(--accent)}.project-links a i{margin-right:.3rem}.project-links>span:not(.venue-badge){color:var(--muted)}.media-row{display:flex;align-items:stretch;gap:1.25rem;margin:1.5rem 0}.media-row>div{flex:1;min-width:0}.media-row>div:has(>img),.media-row>div:has(>video){aspect-ratio:16/9;overflow:hidden;border-radius:4px;background:var(--row-hover)}.media-row video,.media-row img{display:block;width:100%;height:100%;object-fit:contain;border-radius:4px}.media-row .ratio-16x9 video{object-fit:cover}.ratio-16x9{position:relative;width:100%;aspect-ratio:16/9;overflow:hidden;border-radius:4px;background:var(--rule)}.ratio-16x9 iframe,.ratio-16x9 video{position:absolute;inset:0;width:100%;height:100%;border:0}.video-container{position:relative;max-width:100%;width:70%;padding-bottom:39.375%;height:0;overflow:hidden;margin-bottom:1.5rem;border-radius:4px}.video-container iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:0}.caption{font-size:.85rem;margin-top:.75rem;margin-bottom:1.5rem;text-align:center;color:var(--muted)}.equation{margin-bottom:1rem;text-align:center}@media(max-width:767.98px){.work-grid{grid-template-columns:1fr;gap:2rem}.proj-row{grid-template-columns:1fr;gap:1rem;padding:1.4rem 0}.proj-media{max-width:100%}.xp-entry{grid-template-columns:44px minmax(0,1fr);gap:1rem}.xp-when{grid-column:1/-1;padding-top:0;line-height:1.4}.xp-when br{display:none}.xp-logo{width:44px;height:44px}.news-list li{grid-template-columns:1fr;gap:.25rem}.media-row{flex-direction:column;gap:1rem}.media-row>div{width:100%;flex:none}.video-container{width:100%;padding-bottom:56.25%}.home-banner{aspect-ratio:16/10;margin-bottom:2.6rem}.home-banner figcaption{padding:1.1rem 1.2rem}.proj-stage-title{font-size:1.7rem}}@media(min-width:768px){.repo{max-width:50%}}.distill a:hover{border-bottom-color:var(--accent);text-decoration:none}.d2h-diff-table{position:relative}.likes-row{margin:2.4rem 0 0;padding-top:1.2rem;border-top:1px solid var(--rule)}.like-btn{display:inline-flex;align-items:center;gap:.45rem;height:2rem;padding:0 .85rem 0 .7rem;border:1px solid var(--rule-strong);border-radius:999px;background:var(--surface);color:var(--ink-2);font-family:var(--font-body);font-size:.82rem;font-weight:500;cursor:pointer;transition:color .15s ease,border-color .15s ease,background-color .15s ease}.like-btn i{font-size:.9rem;color:var(--accent)}.like-btn .like-count{font-family:var(--font-mono);font-size:.8rem;font-weight:600;color:var(--ink)}.like-btn:hover{border-color:var(--accent);color:var(--ink)}.like-btn.liked{background:var(--accent-soft);border-color:var(--accent)}.like-btn:disabled{opacity:.6;cursor:default}.like-note-btn{display:inline-flex;align-items:center;gap:.4rem;height:2rem;margin-left:.5rem;padding:0 .8rem;border:1px solid rgba(0,0,0,0);border-radius:999px;background:0;color:var(--muted);font-family:var(--font-body);font-size:.82rem;font-weight:500;cursor:pointer}.like-note-btn:hover{color:var(--ink);background:var(--row-hover)}.likes-inline .like-note-btn{display:none}.likes-inline .like-btn{height:auto;padding:0;border:0;border-radius:0;background:0;gap:.35rem;align-items:baseline;font-family:var(--font-mono);font-size:.68rem;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);line-height:1.6;border-bottom:1px solid rgba(0,0,0,0);transition:border-color .18s ease}.likes-inline .like-btn i{font-size:.72rem;align-self:center}.likes-inline .like-btn .like-count{font-size:.68rem;font-weight:600;letter-spacing:0;color:var(--ink)}.likes-inline .like-btn .like-label{display:none}.likes-inline .like-btn:hover{border-bottom-color:var(--accent)}.likes-inline .like-btn.liked{background:0;border-color:rgba(0,0,0,0)}.like-form{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.8rem}.like-form input{flex:1 1 12rem;height:2rem;padding:0 .7rem;border:1px solid var(--rule-strong);border-radius:7px;background:var(--surface);color:var(--ink);font-family:var(--font-body);font-size:.85rem}.like-form input:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}.like-form .like-text{flex:3 1 18rem}.like-form .like-send{height:2rem;padding:0 .9rem;border:0;border-radius:7px;background:var(--accent);color:#fff;font-family:var(--font-body);font-size:.82rem;font-weight:600;cursor:pointer}.like-form .like-send:hover{background:var(--accent-ink)}.likes-inline .like-form{flex-basis:100%}.like-form.invalid input:invalid,.like-form.invalid input:placeholder-shown{border-color:var(--accent)}.like-thanks{margin:.6rem 0 0;font-size:.85rem;color:var(--accent)}.like-notes{list-style:none;margin:1.2rem 0 0;padding:0;display:grid;gap:.5rem}.like-notes li{display:flex;flex-wrap:wrap;align-items:baseline;gap:.4rem .7rem;padding:.55rem .8rem;border-radius:8px;background:var(--row-hover);font-size:.88rem;color:var(--ink)}.like-notes .like-note-who{font-size:.74rem;color:var(--muted)}.proj-head .proj-meta[data-i18n]::before,.proj-head .work-meta[data-i18n]::before{content:"· ";color:var(--muted)}figure.highlight{margin:0 0 1rem;overflow-x:auto;-webkit-overflow-scrolling:touch}figure.highlight pre{white-space:pre;word-wrap:normal;overflow-x:auto;-webkit-overflow-scrolling:touch}pre{color:var(--global-theme-color);background-color:var(--global-code-bg-color);border-radius:6px;padding:6px 12px;overflow-x:auto;-webkit-overflow-scrolling:touch;white-space:pre;word-wrap:normal}pre pre,pre code{background-color:rgba(0,0,0,0);border-radius:0;margin-bottom:0;padding:0;white-space:inherit}code{color:var(--global-theme-color);background-color:var(--global-code-bg-color);border-radius:3px;padding:3px 3px;white-space:normal;word-wrap:break-word}progress{position:fixed;left:0;top:56px;z-index:10;width:100%;height:1px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background-color:rgba(0,0,0,0);color:var(--global-theme-color)}progress::-webkit-progress-bar{background-color:rgba(0,0,0,0)}progress::-webkit-progress-value{background-color:var(--global-theme-color)}progress::-moz-progress-bar{background-color:var(--global-theme-color)}.progress-container{width:100%;background-color:rgba(0,0,0,0);position:fixed;top:56px;left:0;height:5px;display:block}html.transition,html.transition *,html.transition *:before,html.transition *:after{transition:all 750ms!important;transition-delay:0!important}.code-display-wrapper{position:relative}.code-display-wrapper .copy{background:var(--global-card-bg-color);border-color:var(--global-bg-color);border-radius:.3rem;border-style:none;color:var(--global-text-color);font-size:medium;opacity:0;position:absolute;right:.2rem;top:.2rem}.code-display-wrapper:active .copy,.code-display-wrapper:focus .copy,.code-display-wrapper:hover .copy{color:var(--global-hover-color);opacity:1}.btn-group.dropdown .btn{box-shadow:none;-webkit-box-shadow:none}.btn-group.dropdown .btn-secondary.dropdown-toggle .page-size{color:inherit}nav[data-toggle=toc]{top:5rem}nav[data-toggle=toc] .nav .nav>li>a{font-size:.75rem}nav[data-toggle=toc] .nav>li>a{color:var(--global-text-color);font-size:.75rem}nav[data-toggle=toc] .nav>li>a:hover{color:var(--global-hover-color);border-left-color:var(--global-hover-color)}nav[data-toggle=toc] .nav-link.active{color:var(--global-theme-color);border-left-color:var(--global-theme-color);font-size:.75rem}nav[data-toggle=toc] .nav-link.active:hover{color:var(--global-hover-color);border-left-color:var(--global-hover-color)}@media(max-width:576px){nav[data-toggle=toc]{visibility:hidden;height:0;top:0}pre{font-size:.875rem;padding:8px 10px;margin:.5rem 0}figure.highlight{margin:.5rem 0}figure.highlight pre{font-size:.875rem;padding:8px 10px}code{font-size:.875rem;padding:2px 4px}}@media(max-width:400px){pre{font-size:.8rem;padding:6px 8px}figure.highlight pre{font-size:.8rem;padding:6px 8px}code{font-size:.8rem;padding:1px 3px}}@media(min-width:577px)and (max-width:768px){pre{font-size:.9rem;padding:8px 12px}figure.highlight pre{font-size:.9rem;padding:8px 12px}}.newsletter-form-container{margin-bottom:20px}.newsletter-form{display:flex;flex-direction:row;align-items:center;width:100%}.newsletter-form-input{color:var(--global-newsletter-text-color);background:var(--global-newsletter-bg-color);border:1px solid var(--global-newsletter-text-color);outline:0;margin:0 10px 0 0;width:100%;max-width:350px;min-width:100px;box-sizing:border-box;box-shadow:rgba(0,0,0,.05) 0px 1px 2px;border-radius:6px;padding:8px 12px}.newsletter-form-input:focus{border-color:var(--global-theme-color)!important}.newsletter-form-button{background:var(--global-theme-color);color:var(--global-bg-color);display:flex;width:min-content;max-width:200px;white-space:nowrap;height:38px;align-items:center;flex-direction:row;padding:9px 17px;box-shadow:rgba(0,0,0,.05) 0px 1px 2px;border-radius:6px;text-align:center;font-style:normal;font-weight:500;line-height:20px;border:0;cursor:pointer}.newsletter-loading-button{background:var(--global-theme-color);color:var(--global-bg-color);display:none;width:min-content;max-width:300px;white-space:nowrap;height:38px;align-items:center;flex-direction:row;padding:9px 17px;box-shadow:rgba(0,0,0,.05) 0px 1px 2px;border-radius:6px;text-align:center;font-style:normal;font-weight:500;line-height:20px;border:0;cursor:pointer;margin-right:20px}.newsletter-success{color:var(--global-text-color);display:none;align-items:center;width:100%}.newsletter-error{color:var(--global-theme-color);display:none;align-items:center;width:100%}.newsletter-back-button{color:var(--global-theme-color);margin:10px auto;text-align:center;display:none;background:rgba(0,0,0,0);border:0;cursor:pointer}@media(max-width:575px){.newsletter-form-input,.newsletter-form-button,.newsletter-loading-button,.newsletter-success,.newsletter-error{font-size:16px!important}.newsletter-form-container{margin-right:20px;margin-left:20px}}.popover{background-color:var(--global-bg-color);border-color:var(--global-divider-color)}.popover .popover-header{color:var(--global-text-color);border-bottom:1px solid var(--global-divider-color)}.popover .popover-body{color:var(--global-text-color)}::highlight(search){background-color:var(--global-theme-color);color:var(--global-text-color)}.unloaded{display:none!important}.medium-zoom-overlay,.medium-zoom-image--opened{z-index:999}#toc-sidebar{z-index:1}.echarts{height:400px;width:100%}.map{height:400px;width:100%}swiper-container{--swiper-navigation-color:var(--global-theme-color);--swiper-pagination-color:var(--global-theme-color);--swiper-pagination-bullet-inactive-color:var(--global-text-color)}ninja-keys{--ninja-accent-color:var(--global-theme-color);--ninja-icon-size:0;--ninja-modal-background:var(--global-bg-color);--ninja-z-index:1031}ninja-keys::part(ninja-input){color:var(--ninja-selected-text-color)}ninja-keys::part(ninja-input-wrapper){background:var(--global-bg-color)}figure.cover{display:inline-block;text-align:center;margin:.5rem}figure.cover img{vertical-align:bottom}figure.cover figcaption.abandoned{font-family:monospace;color:#23212d;text-transform:uppercase;background-color:#ee5f5b}figure.cover figcaption.finished{font-family:monospace;color:#23212d;text-transform:uppercase;background-color:#62c462}figure.cover figcaption.paused{font-family:monospace;color:#23212d;text-transform:uppercase;background-color:#bdac7e}figure.cover figcaption.queued{font-family:monospace;color:#23212d;text-transform:uppercase;background-color:#9e76b5}figure.cover figcaption.reading{font-family:monospace;color:#23212d;text-transform:uppercase;background-color:#f89406}.calendar-toggle-btn{background-color:#007acc;color:#fff;padding:.5em 1em;border:0;border-radius:6px;font-size:1em;cursor:pointer;transition:background-color .3s}.calendar-toggle-btn:hover{background-color:#005fa3}mjx-container[jax=CHTML][display=true]{overflow-x:auto}d-byline{border-top-color:var(--global-divider-color)!important}d-byline h3{color:var(--global-text-color)!important}d-byline a,d-article d-byline a{color:var(--global-text-color)!important}d-byline a:hover,d-article d-byline a:hover{color:var(--global-hover-color)!important}d-article{border-top-color:var(--global-divider-color)!important}d-article p,d-article h1,d-article h2,d-article h3,d-article h4,d-article h5,d-article h6,d-article li,d-article table{color:var(--global-text-color)!important}d-article h1,d-article h2,d-article hr,d-article table,d-article table th,d-article table td{border-bottom-color:var(--global-divider-color)!important}d-article a{color:var(--global-theme-color)!important}d-article a:hover{color:var(--global-theme-color)!important}d-article b i{display:inline}d-article blockquote{border-left:2px solid var(--global-theme-color)!important}d-article details{color:var(--global-text-color);background-color:var(--global-code-bg-color);margin-top:0;padding:8px 12px;position:relative;border-radius:6px;display:block;margin-bottom:20px;grid-column:text;overflow:auto;max-width:100%}d-article details summary{color:var(--global-theme-color)}d-article details p{margin-top:.5rem;margin-bottom:.5rem}d-article d-footnote{scroll-margin-top:66px;color:var(--global-theme-color)!important}d-article d-footnote:hover{color:var(--global-hover-color)!important}d-article d-cite a,d-article a.citation{color:var(--global-theme-color)!important}d-article d-cite a:hover,d-article a.citation:hover{color:var(--global-hover-color)!important}d-appendix{border-top-color:var(--global-divider-color)!important;color:var(--global-distill-app-color)!important}d-appendix h3,d-appendix li,d-appendix span{color:var(--global-distill-app-color)!important}d-appendix a,d-appendix a.footnote-backlink{color:var(--global-distill-app-color)!important}d-appendix a:hover,d-appendix a.footnote-backlink:hover{color:var(--global-hover-color)!important}p.location{font-size:.7rem;white-space:nowrap}div.list-group{display:flex;flex-wrap:wrap;flex-direction:column;align-items:flex-start;margin-bottom:2rem}a.anchor{display:block;position:relative;top:-50px;visibility:hidden}ul.timeline{margin-top:2rem;margin-bottom:2rem}ul.timeline li{position:relative;min-height:2.2rem;color:var(--global-text-color);list-style-position:inside}ul.timeline li::before{content:"";min-height:2.5rem;width:1px;background:var(--global-text-color);margin:0;padding:0;position:absolute;left:2px;top:-0.5rem}.tab{display:flex;flex-wrap:wrap;margin-left:-20px;padding:0;list-style:none;position:relative}.tab>*{flex:none;padding-left:20px;position:relative}.tab>*>a{display:block;text-align:center;padding:9px 20px;color:var(--global-text-color-light);border-bottom:2px solid rgba(0,0,0,0);border-bottom-color:rgba(0,0,0,0);font-size:12px;text-transform:uppercase;transition:color .1s ease-in-out;line-height:20px}.tab>.active>a{color:var(--global-text-color);border-color:var(--global-theme-color)}.tab>li>a{text-decoration:none;cursor:pointer}.tab-content{padding:0}.tab-content>li{display:none}.tab-content>li.active{display:block}.courses{margin-top:30px}.year{margin-top:40px;margin-bottom:20px;border-bottom:1px solid var(--global-divider-color);padding-bottom:10px}.typogram .diagram{display:block}.typogram .diagram line,.typogram .diagram circle,.typogram .diagram rect{stroke:var(--global-text-color)}.typogram .diagram line{stroke-width:2}.typogram .diagram circle{r:3.5}.typogram .diagram rect{width:6px;height:6px}.typogram .diagram text,.typogram .glyph,.typogram .debug text{font-family:Iosevka Fixed,monospace;font-size:3em;text-anchor:middle;alignment-baseline:central;white-space:pre;fill:var(--global-text-color)}.typogram .reserved{fill:rgba(0,0,0,0);white-space:pre}.typogram .debug[debug=true] .reserved{fill:var(--global-text-color);opacity:.5}.typogram .debug[debug=true] line.grid{stroke:var(--global-text-color);stroke-width:.2;stroke-linecap:butt;fill:var(--global-text-color);opacity:1%}.typogram polygon{stroke-width:0}.typogram .debug[debug=true] polygon.inner{fill:var(--global-text-color);stroke:var(--global-text-color);opacity:5%}.typogram polygon{stroke:var(--global-text-color);stroke-linecap:butt;fill:var(--global-text-color)}.typogram .debug[debug=true] polygon,.typogram .debug[debug=true] line.grid{opacity:10%}.typogram .debug[debug=true] polygon,.typogram .debug[debug=true] path,.typogram .debug[debug=true] circle{opacity:50%}.typogram .debug[debug=true] polygon{fill:red;stroke:red}.typogram .debug[debug=true] circle,.typogram .debug[debug=true] path{opacity:50%;fill:red}.typogram .debug[debug=true] circle{stroke:red}.typogram .debug[debug=true] .inner{stroke-width:.2}.typogram line.part{stroke-width:6;stroke-linecap:butt;stroke:var(--global-text-color)}.typogram .debug[debug=true] line.part{opacity:50%;stroke:red}.typogram .debug[debug=true] line.center{stroke-width:3;stroke-linecap:butt;opacity:10%;stroke:var(--global-text-color)}.typogram text::selection{fill:HighlightText;background-color:Highlight}/*!
 * Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com
 * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
 * Copyright 2025 Fonticons, Inc.
 */.fa-solid,.fa-regular,.fa-brands,.fas,.far,.fab,.fa{--_fa-family:var(--fa-family,var(--fa-style-family,'Font Awesome 7 Free'));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:var(--fa-display,inline-block);font-family:var(--_fa-family);font-feature-settings:normal;font-style:normal;font-synthesis:none;font-variant:normal;font-weight:var(--fa-style,900);line-height:1;text-align:center;text-rendering:auto;width:var(--fa-width,1.25em)}:is(.fas,.far,.fab,.fa-solid,.fa-regular,.fa-brands,.fa)::before{content:var(--fa);content:var(--fa)/""}.fa-sm{font-size:calc(14 / 16 * 1em);line-height:calc(1 / 14 * 1em);vertical-align:calc((6 / 14 - .375)*1em)}@keyframes fa-beat{0%,90%{transform:scale(1)}45%{transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-bounce{0%{transform:scale(1,1) translateY(0)}10%{transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,0.9)) translateY(0)}30%{transform:scale(var(--fa-bounce-jump-scale-x,0.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-0.5em))}50%{transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,0.95)) translateY(0)}57%{transform:scale(1,1) translateY(var(--fa-bounce-rebound,-0.125em))}64%{transform:scale(1,1) translateY(0)}100%{transform:scale(1,1) translateY(0)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,0.4)}}@keyframes fa-beat-fade{0%,100%{opacity:var(--fa-beat-fade-opacity,0.4);transform:scale(1)}50%{opacity:1;transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-flip{50%{transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-shake{0%{transform:rotate(-15deg)}4%{transform:rotate(15deg)}8%,24%{transform:rotate(-18deg)}12%,28%{transform:rotate(18deg)}16%{transform:rotate(-22deg)}20%{transform:rotate(22deg)}32%{transform:rotate(-12deg)}36%{transform:rotate(12deg)}40%,100%{transform:rotate(0)}}@keyframes fa-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.fa-plus{--fa:"\+"}.fa-trailer{--fa:""}.fa-home-user{--fa:""}.fa-home-lg{--fa:""}.fa-section{--fa:""}.fa-magnifying-glass{--fa:""}.fa-search{--fa:""}.fa-heart{--fa:""}.fa-th-list{--fa:""}.fa-house{--fa:""}.fa-home-alt{--fa:""}.fa-home-lg-alt{--fa:""}.fa-sync{--fa:""}.fa-book{--fa:""}.fa-circle-half-stroke{--fa:""}.fa-plus-circle{--fa:""}.fa-minus-circle{--fa:""}.fa-minus{--fa:""}.fa-calendar-alt{--fa:""}.fa-comment{--fa:""}.fa-chevron-down{--fa:""}.fa-folder-open{--fa:""}.fa-arrow-up-right-from-square{--fa:""}.fa-globe{--fa:""}.fa-arrows-alt{--fa:""}.fa-table-columns{--fa:""}.fa-envelope{--fa:""}.fa-angle-right{--fa:""}.fa-calendar{--fa:""}.fa-caret-square-down{--fa:""}.fa-caret-square-up{--fa:""}.fa-file-lines{--fa:""}.fa-sun{--fa:""}.fa-moon{--fa:""}.fa-newspaper{--fa:""}.fa-trash{--fa:""}.fa-toggle-off{--fa:""}.fa-toggle-on{--fa:""}.fa-braille{--fa:""}.fa-envelope-open{--fa:""}.fa-clipboard{--fa:""}.fa-lock-open{--fa:""}.fa-clipboard-check{--fa:""}.fa-box-open{--fa:""}.fa-book-open{--fa:""}.fa-door-open{--fa:""}.fa-diagram-project{--fa:""}.fa-file-arrow-down{--fa:""}.fa-face-frown-open{--fa:""}.fa-frown-open{--fa:""}.fa-book-open-reader{--fa:""}.fa-teeth-open{--fa:""}.fa-envelope-open-text{--fa:""}.fa-network-wired{--fa:""}/*!
 * Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com
 * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
 * Copyright 2025 Fonticons, Inc.
 */:root{--fa-family-brands:'Font Awesome 7 Brands';--fa-font-brands:normal 400 1em/1 var(--fa-family-brands)}@font-face{font-family:"Font Awesome 7 Brands";font-style:normal;font-weight:400;font-display:block;src:url("../webfonts/fa-brands-400.woff2")}.fab,.fa-brands{--fa-family:var(--fa-family-brands);--fa-style:400}.fa-opensuse{--fa:""}.fa-openai{--fa:""}.fa-github{--fa:""}.fa-linkedin-in{--fa:""}.fa-openid{--fa:""}.fa-hacker-news{--fa:""}.fa-opencart{--fa:""}.fa-square-hacker-news{--fa:""}.fa-hacker-news-square{--fa:""}/*!
 * Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com
 * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
 * Copyright 2025 Fonticons, Inc.
 */:root{--fa-family-classic:'Font Awesome 7 Free';--fa-font-solid:normal 900 1em/1 var(--fa-family-classic);--fa-style-family-classic:var(--fa-family-classic)}@font-face{font-family:"Font Awesome 7 Free";font-style:normal;font-weight:900;font-display:block;src:url("../webfonts/fa-solid-900.woff2")}.fas{--fa-family:var(--fa-family-classic);--fa-style:900}.fa-solid{--fa-style:900}/*!
 * Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com
 * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
 * Copyright 2025 Fonticons, Inc.
 */:root{--fa-family-classic:'Font Awesome 7 Free';--fa-font-regular:normal 400 1em/1 var(--fa-family-classic);--fa-style-family-classic:var(--fa-family-classic)}@font-face{font-family:"Font Awesome 7 Free";font-style:normal;font-weight:400;font-display:block;src:url("../webfonts/fa-regular-400.woff2")}.far{--fa-family:var(--fa-family-classic);--fa-style:400}.fa-regular{--fa-style:400}