:root[data-bs-theme=light]{--tw-body-bg:#ffffff;--tw-body-color:#222;--tw-nav-bg:#ffffff;--tw-nav-link:#000000;--tw-link:#0065bd;--tw-link-hover:#BD5800;--tw-muted:#999;--tw-card-bg:#ffffff;--tw-footer-bg:#ffffff;--tw-border:#ccc;--tw-code-bg:#f8f9fb;--tw-code-border:#e2e6ea;--tw-copy-btn-bg:rgba(255, 255, 255, 0.9);--tw-copy-btn-border:#d0d7de;--tw-copy-btn-hover-bg:#ffffff;--tw-copy-btn-active-bg:#eef1f4;--tw-copy-btn-success-bg:#d1e7dd;--tw-copy-btn-success-border:#9ac7b3;--tw-icon-shadow:rgba(0,0,0,0.2);--tw-sep:#e5e7eb;--tw-project-heading:#000000c9;--tw-project-subheading:#000000c9;--tw-project-code-bg:#f3f4f7;--tw-project-code-border:#c1ccff;--tw-project-code-color:#000000}:root[data-bs-theme=dark]{--tw-body-bg:#1f2227;--tw-body-color:#e8e9eb;--tw-nav-bg:#2a2f36;--tw-nav-link:#e8e9eb;--tw-link:#66b3ff;--tw-link-hover:#99ccff;--tw-muted:#bbb;--tw-card-bg:#24272d;--tw-footer-bg:#24272d;--tw-border:#3a3f46;--tw-code-bg:#25292f;--tw-code-border:#32363c;--tw-copy-btn-bg:rgba(37, 41, 47, 0.85);--tw-copy-btn-border:#3a3f46;--tw-copy-btn-hover-bg:#31363c;--tw-copy-btn-active-bg:#2a2e33;--tw-copy-btn-success-bg:#244d3b;--tw-copy-btn-success-border:#2d6f52;--tw-icon-shadow:rgba(255,255,255,0.15);--tw-sep:#3a3f46;--tw-project-heading:#e8e9eb;--tw-project-subheading:#7fa6ff;--tw-project-code-bg:#343942;--tw-project-code-border:#394156;--tw-project-code-color:#f2f6ff}html{scroll-behavior:smooth}body{background:var(--tw-body-bg);color:var(--tw-body-color)}a{color:var(--tw-link);text-decoration:none;transition:color .15s ease,text-decoration-color .15s ease}a:hover{color:var(--tw-link-hover);text-underline-offset:3px;text-decoration-thickness:2px}div>h1{font-size:36px}div>h2{font-size:30px}div>h3{font-size:24px;font-weight:700}ul{margin:16px 0;padding-left:40px}li{list-style:disc}#navbar-wrapper{height:70px}#navbar-main{height:70px;background:var(--tw-nav-bg);box-shadow:0 2px 10px rgba(0,0,0,.2);font-size:16px;position:fixed;top:0;right:0;left:0;z-index:1030}#navbar-main .container{padding:0 24px}#navbar-main .columns{margin:0}#navbar-main .column{padding:0}#navbar-main .section-links{display:inline-flex;align-items:center;gap:10px;vertical-align:bottom}#navbar-main a{color:var(--tw-nav-link);line-height:70px;margin-right:10px;transition:all .3s}#navbar-main a:hover,#navbar-main a.active{color:var(--tw-link)}#navbar-main .home-link{font-size:30px;font-weight:700;color:var(--tw-nav-link);margin-right:20px}#navbar-main .columns>.column:last-child{display:flex;align-items:center}.theme-toggle-wrapper{display:inline-flex;align-items:center;margin-left:auto;line-height:1;user-select:none}.theme-switch{--tw-switch-w:56px;--tw-switch-h:28px;--tw-knob-pad:2px;position:relative;width:var(--tw-switch-w);height:var(--tw-switch-h)}.theme-switch input{opacity:0;width:0;height:0;position:absolute}.switch-slider{position:absolute;inset:0;cursor:pointer;border-radius:999px;background:linear-gradient(90deg,#3070b3,#243b55);border:1px solid rgba(0,0,0,.25);transition:background .4s,border-color .2s;display:grid;grid-template-columns:1fr 1fr;align-items:center;justify-items:center;padding:0;line-height:1}:root[data-bs-theme=dark] .switch-slider{background:linear-gradient(90deg,#243b55,#141e30);color:#eee;border-color:rgba(255,255,255,.25)}.switch-slider .icon{width:calc(var(--tw-switch-h) - (var(--tw-knob-pad) * 2));height:calc(var(--tw-switch-h) - (var(--tw-knob-pad) * 2));display:flex;align-items:center;justify-content:center;pointer-events:none;opacity:.9}.switch-slider .icon i{line-height:1;vertical-align:middle;font-size:.95rem}.switch-slider::before{content:"";position:absolute;top:var(--tw-knob-pad);left:var(--tw-knob-pad);width:calc(var(--tw-switch-h) - (var(--tw-knob-pad) * 2));height:calc(var(--tw-switch-h) - (var(--tw-knob-pad) * 2));background:#fff;border-radius:50%;box-shadow:0 2px 5px rgba(0,0,0,.35);transition:transform .35s cubic-bezier(.55,.09,.68,.53),background .35s;z-index:2}:root[data-bs-theme=dark] .switch-slider::before{background:#f5f5f5}.theme-switch input:checked+.switch-slider::before{transform:translateX(calc(var(--tw-switch-w) - var(--tw-switch-h)))}.theme-switch input:checked+.switch-slider .sun{opacity:.45}.theme-switch input:not(:checked)+.switch-slider .moon{opacity:.45}.section-about{background-color:var(--tw-card-bg)}.title-me{margin-top:-15px}.profile-picture img{border-radius:10px;box-shadow:2px 2px 5px rgba(0,0,0,.5)}.profile-picture-column{display:inline-block}#social-media-icons{text-align:center;margin-top:8px}.social-icon img{width:30px;height:auto;transition:transform .2s ease,opacity .2s ease;vertical-align:middle;background:0 0 !important;border:none;box-shadow:none;filter:drop-shadow(0 2px 3px var(--tw-icon-shadow))}.social-icon img:hover{transform:scale(1.1);opacity:.8}.social-icon{margin:0 1px;display:inline-block}:root[data-bs-theme=dark] #social-media-icons .social-icon.github{position:relative}:root[data-bs-theme=dark] #social-media-icons .social-icon.github img{background:0 0 !important;position:relative;z-index:1}:root[data-bs-theme=dark] #social-media-icons .social-icon.github::before{--gh-badge-size:30px;content:"";position:absolute;top:50%;left:50%;width:var(--gh-badge-size);height:var(--gh-badge-size);transform:translate(-50%,-50%);background:#fff;border-radius:50%;border:1px solid var(--tw-border);box-shadow:0 1px 2px var(--tw-icon-shadow);pointer-events:none;z-index:0;transition:transform .2s ease}:root[data-bs-theme=dark] #social-media-icons .social-icon.github:hover::before{transform:translate(-50%,-50%)scale(1.1)}.tooltip{position:relative;display:inline-block}.tooltip .tooltiptext{visibility:hidden;background-color:#000;color:#fff;text-align:center;border-radius:4px;padding:0 6px;z-index:1;position:absolute;top:125%;left:50%;transform:translate(-50%,0);display:inline-block}.tooltip .tooltiptext::after{content:"";position:absolute;bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:transparent transparent #000 transparent}.tooltip:hover .tooltiptext{visibility:visible}.tooltip:hover .svg-icon{fill:#0065bd}.section-header{font-size:30px;text-align:center;margin-bottom:30px}div.publication{margin-top:20px;border:1px solid rgba(0,0,0,.1);border-radius:10px}.publication:hover{border:2px solid var(--tw-border);box-shadow:2px 2px 5px rgba(0,0,0,.1)}.publication-cover-column{text-align:center}.publication-cover{position:relative;overflow:hidden;display:inline-block}.publication-cover .hover-1{position:relative;transition:all .3s}.publication-cover .hover-2{opacity:0;transition:all .3s;position:absolute;left:0}.publication:hover .hover-1{opacity:0}.publication:hover .hover-2{opacity:1}.publication .hover-single{transition:all .3s;max-width:96%;margin:0 auto;display:block;padding-bottom:2%}.publication:hover .hover-single{max-width:100%;padding-bottom:0}.publication-cover img.theme-dark{display:none}:root[data-bs-theme=dark] .publication-cover img.theme-light{display:none}:root[data-bs-theme=dark] .publication-cover img.theme-dark{display:inline}.publication-title{font-size:24px;font-weight:700}.publication-title a{color:inherit;text-decoration:none}.publication-title a:hover{color:var(--tw-link)}.publication-conference{margin-top:-5px;color:var(--tw-link)}.publication-conference .bonus{font-weight:700;color:#ef2d56}.publication-description{margin:10px 0}.publication-authors{margin:10px 0;font-style:italic;color:var(--tw-muted)}.publication .author-me{font-weight:700;color:#666}.publication-links a{display:inline-block;height:32px;line-height:30px;padding:0 12px;border-radius:8px;background:var(--tw-card-bg);border:1px solid var(--tw-border);color:var(--tw-body-color);transition:background .2s,border-color .2s,color .2s;filter:drop-shadow(0 1px 1px rgba(0,0,0,.1))}.publication-link:hover a{background:var(--tw-link);color:#fff;border-color:var(--tw-link)}.publication-links a:focus-visible{outline:2px solid var(--tw-link);outline-offset:2px}.teaching-title a{color:#0065bd}.teaching-title a:hover{color:#222}.teaching-category{color:#999;font-weight:700}.teaching-semester{color:#999}.teaching-role{color:#0065bd}.hr{width:100%;border-top:2px solid var(--tw-sep);position:relative;margin:1.5rem 0}.modal .modal-background{background-color:rgba(0,0,0,.35)}.modal-card{width:min(760px,calc(100vw - 2rem));border:1px solid var(--tw-border);border-radius:10px;overflow:hidden;box-shadow:0 12px 34px rgba(0,0,0,.35);margin:0 auto;transition:opacity .3s;background:var(--tw-card-bg);color:var(--tw-body-color)}.projects-hero{padding-top:120px;padding-bottom:40px}.projects-eyebrow{font-size:.9rem;letter-spacing:.15em;text-transform:uppercase;color:var(--tw-muted);margin-bottom:10px}.projects-catalog{padding-top:0;padding-bottom:60px}.project-card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:28px}.project-card{background:var(--tw-card-bg);border:1px solid var(--tw-border);border-radius:16px;padding:24px;display:flex;flex-direction:row;gap:18px;align-items:center;transition:border-color .2s ease,transform .2s ease}.project-card-media{flex:none;max-width:220px;margin:0}.project-card-media img{display:block;max-width:100%;border-radius:12px;border:1px solid var(--tw-border)}.project-card-media img.theme-dark{display:none}:root[data-bs-theme=dark] .project-card-media img.theme-light{display:none}:root[data-bs-theme=dark] .project-card-media img.theme-dark{display:block}.project-card-media--empty{border-style:dashed}.project-card-media-placeholder{font-size:.9rem;color:var(--tw-muted)}.project-card-content{flex:1;display:flex;flex-direction:column;gap:12px}.project-card:hover{border-color:var(--tw-link);transform:translateY(-4px)}.project-card-header{display:flex;align-items:center;gap:10px;font-size:.9rem}.project-year{font-weight:700;color:var(--tw-link)}.project-status{padding:2px 10px;border-radius:999px;background:rgba(0,101,189,.1);color:var(--tw-link);font-size:.8rem;text-transform:uppercase;letter-spacing:.05em}:root[data-bs-theme=dark] .project-status{background:rgba(102,179,255,.12)}.project-stack-label{margin:0;font-size:.9rem;color:var(--tw-muted)}.project-stack-label span{color:var(--tw-body-color);font-weight:600}.project-highlights{margin:0;padding-left:18px;color:var(--tw-body-color)}.project-links{display:flex;flex-wrap:wrap;gap:10px;margin-top:auto}.project-link{border:1px solid var(--tw-border);border-radius:999px;padding:6px 14px;font-size:.9rem;color:var(--tw-body-color);transition:background .2s ease,color .2s ease,border-color .2s ease}.project-link:hover{border-color:var(--tw-link);color:#fff;background:var(--tw-link)}.project-link-primary{font-weight:600}.project-empty-state{margin-top:40px;border:2px dashed var(--tw-border);border-radius:16px;padding:32px;text-align:center}.project-empty-state code{display:inline-block;margin-top:12px;background:var(--tw-code-bg);border:1px solid var(--tw-code-border);border-radius:8px;padding:6px 12px}.project-single{padding-top:120px;padding-bottom:80px}.projects-breadcrumb a{color:var(--tw-muted);font-size:.9rem}.project-single-summary{font-size:1.1rem;color:var(--tw-muted)}.project-meta-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin:30px 0}.project-meta-grid dt{font-size:.8rem;text-transform:uppercase;letter-spacing:.1em;color:var(--tw-muted);margin-bottom:4px}.project-meta-grid dd{margin:0;font-weight:600}.project-highlight-callout{margin-top:40px;padding:24px;border-radius:16px;background:var(--tw-card-bg);border:1px solid var(--tw-border)}.project-body h2{color:var(--tw-project-heading)}.project-body h3{color:var(--tw-project-subheading)}.project-body h2,.project-body h3{font-family:inherit;font-weight:600;letter-spacing:-.01em}.project-body strong{color:var(--tw-project-heading)}.project-body pre{background:var(--tw-project-code-bg);border:1px solid var(--tw-project-code-border);border-radius:10px;padding:16px 20px;overflow-x:auto;margin:20px 0;box-shadow:inset 0 1px 2px rgba(0,0,0,4%);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,liberation mono,monospace;font-size:.9em;line-height:1.5}.project-body code{display:inline-block;background:var(--tw-project-code-bg);color:var(--tw-project-code-color);border-radius:6px;padding:.05em .45em;font-size:.92em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,liberation mono,monospace;box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.project-body pre code{display:block;padding:0;border:none;background:0 0;box-shadow:none;color:var(--tw-project-code-color);font-size:1em}.project-highlight-callout h2{margin-top:0}.project-highlight-callout ul{margin:0}@media(max-width:768px){.projects-hero,.project-single{padding-top:90px}.project-card{padding:20px;flex-direction:column;align-items:stretch}.project-card-grid{grid-template-columns:1fr}.project-card-media{width:100%;max-width:none;max-height:none;margin-bottom:4px}}.blog-hero{padding-top:120px;padding-bottom:32px}.blog-eyebrow{text-transform:uppercase;letter-spacing:.2em;font-size:.85rem;color:var(--tw-muted);margin-bottom:8px}.blog-feed{padding-top:0;padding-bottom:80px}.blog-card-stack{display:grid;gap:22px}.blog-card{background:var(--tw-card-bg);border:1px solid var(--tw-border);border-radius:14px;padding:24px;transition:border-color .2s ease,transform .2s ease}.blog-card:hover{border-color:var(--tw-link);transform:translateX(6px)}.blog-card-meta{margin:0;color:var(--tw-muted);font-size:.9rem;display:flex;align-items:center;gap:10px}.blog-card h2{margin:8px 0}.blog-card-summary{margin:0 0 12px;color:var(--tw-body-color)}.blog-card-tags,.blog-post-tags{list-style:none;padding:0;margin:0 0 16px;display:flex;flex-wrap:wrap;gap:8px}.blog-card-tags li,.blog-post-tags li{padding:4px 10px;border-radius:999px;background:rgba(0,0,0,6%);font-size:.85rem}:root[data-bs-theme=dark] .blog-card-tags li,:root[data-bs-theme=dark] .blog-post-tags li{background:rgba(255,255,255,.12)}.blog-card-link{font-weight:600;color:var(--tw-link)}.blog-empty-state{margin-top:40px;border:2px dashed var(--tw-border);border-radius:12px;padding:28px;text-align:center}.blog-empty-state code{display:inline-block;margin-top:12px;background:var(--tw-code-bg);border:1px solid var(--tw-code-border);border-radius:8px;padding:6px 12px}.blog-post{padding-top:120px;padding-bottom:80px}.blog-post-meta{margin-top:8px;color:var(--tw-muted);display:inline-flex;gap:10px;font-size:.95rem}.blog-hero-media{margin:24px 0}.blog-hero-media img{width:100%;border-radius:12px;border:1px solid var(--tw-border)}.blog-post-body{margin-top:24px}@media(max-width:768px){.blog-hero,.blog-post{padding-top:90px}.blog-card{padding:20px}}.modal .modal-card,.modal.is-active .modal-card{margin-top:0}.modal-bibtex-head{display:flex;align-items:center;border-bottom:0;padding:12px 16px 0;margin:0;box-shadow:none}.modal-bibtex-title{margin:0;font-weight:600;font-size:1.3rem;letter-spacing:0;color:var(--tw-body-color)}.modal-bibtex-sep{border:0;border-top:px solid var(--tw-sep);margin:0 0 6px}.modal-card-body{padding:12px 14px 16px}.modal-card-head,.modal-card-body{-–tw-project-code-bg:#eef2fb;-–tw-project-code-border:#c5d0ea;-–tw-project-code-color:#1f2750}.modal-card-foot{background:var(--tw-card-bg);color:var(--tw-card-bg)}.modal-bibtex-head .delete{margin-left:auto;flex:none;width:28px;height:28px;min-width:0;border-radius:0;background:var(--tw-card-bg);color:#bbb;transition:background .15s,color .15s,border-color .15s,box-shadow .15s}:root[data-bs-theme=light] .modal-bibtex-head .delete{color:#555}.modal-bibtex-head .delete:hover{background:var(--tw-copy-btn-hover-bg);color:#fff}:root[data-bs-theme=light] .modal-bibtex-head .delete:hover{color:#000}.modal-bibtex-head .delete:active{background:var(--tw-copy-btn-active-bg)}.modal-bibtex-head .delete::before,.modal-bibtex-head .delete::after{content:"";position:absolute;left:50%;top:50%;width:14px;height:2px;border-radius:1px;background-color:currentColor;transform-origin:center}.modal-bibtex-head .delete::before{transform:translate(-50%,-50%)rotate(45deg)}.modal-bibtex-head .delete::after{transform:translate(-50%,-50%)rotate(-45deg)}.code-block-wrapper{position:relative;margin-top:0}.bibtex-pre{background:var(--tw-code-bg);border:1px solid var(--tw-code-border);border-radius:6px;padding:14px 92px 14px 16px;overflow:auto;max-height:45vh;font-size:.85rem;line-height:1.35;margin:0}.bibtex-pre{scrollbar-color:var(--tw-border)var(--tw-card-bg);scrollbar-width:thin}.bibtex-pre::-webkit-scrollbar{width:8px;height:8px}.bibtex-pre::-webkit-scrollbar-track{background:var(--tw-card-bg);border-radius:8px}.bibtex-pre::-webkit-scrollbar-thumb{background-color:var(--tw-border);border-radius:8px}.bibtex-pre code{background:0 0;color:var(--tw-body-color);display:block;white-space:pre;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,liberation mono,monospace}.code-actions{position:absolute;top:8px;right:8px;display:flex;gap:6px;z-index:2}.copy-icon-btn,.download-icon-btn{background:var(--tw-copy-btn-bg);border:1px solid var(--tw-copy-btn-border);box-shadow:0 1px 2px rgba(0,0,0,.15);border-radius:4px;padding:4px 6px;cursor:pointer;color:#bbb;line-height:1;font-size:14px;transition:background .15s,color .15s,border-color .15s;display:inline-flex;align-items:center;justify-content:center;text-decoration:none}:root[data-bs-theme=light] .copy-icon-btn,:root[data-bs-theme=light] .download-icon-btn{color:#555}.copy-icon-btn:hover,.download-icon-btn:hover{background:var(--tw-copy-btn-hover-bg);color:#fff}:root[data-bs-theme=light] .copy-icon-btn:hover,:root[data-bs-theme=light] .download-icon-btn:hover{color:#000}.copy-icon-btn:active,.download-icon-btn:active{background:var(--tw-copy-btn-active-bg)}.copy-icon-btn.copied{background:var(--tw-copy-btn-success-bg);border-color:var(--tw-copy-btn-success-border);color:#fff}footer{padding:24px;background-color:var(--tw-footer-bg);text-align:center}@media screen and (max-width:768px),print{#navbar-main a{line-height:20px}#navbar-main .columns{margin-top:10px}#navbar-main .section-links{display:inline-block;margin-top:3px}.theme-toggle-wrapper{line-height:20px;margin-top:3px}}