:root{--ink:#1c2733;--body-text:#3f4a5a;--muted:#7b8794;--accent:#0e7c7b;--accent-dark:#0a5f5e;--accent-soft:#e7f3f2;--accent-border:#cfe6e5;--page-bg:#fafbfc;--card-bg:#fff;--card-border:#e5eaef;--card-shadow:0 1px 3px #102a430f, 0 1px 2px #102a430a;--card-shadow-hover:0 8px 24px #102a431a;--nav-bg:#ffffffe0;--watermark:#eef4f4;--avatar-ring:#fff;--link:var(--accent-dark);--link-hover:var(--accent);--link-underline:var(--accent-border)}:root[data-theme=dark]{--ink:#eef2f6;--body-text:#c4cdd6;--muted:#8b96a3;--accent:#2dd4c8;--accent-dark:#5eead4;--accent-soft:#2dd4c81f;--accent-border:#2dd4c847;--page-bg:#10151b;--card-bg:#171e26;--card-border:#262f3a;--card-shadow:0 1px 3px #00000073, 0 1px 2px #00000059;--card-shadow-hover:0 10px 26px #0000008c;--nav-bg:#10151bd9;--watermark:#1a232b;--avatar-ring:var(--card-bg)}html{scroll-behavior:auto;scroll-padding-top:80px}body{background:var(--page-bg);transition:background-color .2s ease-in-out}h1,h2,h3,h4,h5,h6{color:var(--ink);font-family:Playfair Display SC,serif}a,p,li{color:var(--body-text);font-family:Lato,Arial,sans-serif;font-size:1em;line-height:1.75em}a{color:var(--link)}a:hover{transition:all .2s ease-in-out;color:var(--link-hover)!important;text-decoration:none!important}.container{max-width:1170px;margin:auto;padding:0 20px}@media only screen and (width<=767px){.intro img{margin-left:auto;margin-right:auto;display:block}footer{text-align:center}}.typed-cursor{opacity:1;font-weight:100;animation:.7s infinite blink}@keyframes blink{0%{opacity:1}50%{opacity:0}to{opacity:1}}.main-nav{z-index:1000;background:var(--nav-bg);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--card-border);padding-top:23px;transition:background-color .2s ease-in-out;position:sticky;top:0;box-shadow:0 1px 2px #102a430a}.navigation-toggle{background-color:var(--card-bg);color:var(--ink);transition:background-color .2s ease-in-out,color .2s ease-in-out}.main-nav nav ul li a{color:var(--muted);letter-spacing:.03em;text-transform:uppercase;padding-bottom:6px;font-size:.78em;font-weight:700;position:relative}.main-nav nav ul li a:after{content:"";background:var(--accent);height:2px;transition:right .25s;position:absolute;bottom:0;left:0;right:100%}.main-nav nav ul li a:hover:after,.main-nav nav ul li.active a:after{right:0}.main-nav nav ul li.active a{color:var(--ink)}.section h1{display:inline-block;position:relative}.section.second{margin-bottom:130px}.section .container{position:relative}.section .container h1{text-transform:uppercase;letter-spacing:.02em;margin-bottom:34px;padding-bottom:14px;position:relative}.section .container h1:after{content:"";background:-webkit-linear-gradient(left, var(--accent), #3aa9a0);background:linear-gradient(90deg, var(--accent), #3aa9a0);border-radius:2px;width:56px;height:4px;position:absolute;bottom:0;left:0}.section .container h2{letter-spacing:.02em;margin-top:10px}.section .container>br{display:none}.hero-name{text-align:center;padding:70px 20px 0}.hero-name h1{letter-spacing:.02em;margin:0;font-size:44px}.hero-name:after{content:"";background:-webkit-linear-gradient(left, var(--accent), #3aa9a0);background:linear-gradient(90deg, var(--accent), #3aa9a0);border-radius:2px;width:72px;height:4px;margin:18px auto 0;display:block}.intro{padding:40px 0 70px;overflow-x:hidden}.intro img{border:3px solid var(--avatar-ring);width:96px;height:96px;box-shadow:0 0 0 3px var(--accent), 0 4px 14px #102a432e;border-radius:99px}.intro .wrap{margin:30px 0}.intro h1:before{z-index:-1;color:var(--watermark);font-size:270px;transition:color .2s ease-in-out;position:absolute;top:-150px;left:-220px}.intro h1 span{color:var(--accent-dark);font-size:47px}.intro h1 .typed-cursor{color:var(--accent)}.contact-block{clear:both;flex-wrap:wrap;align-items:center;gap:26px;margin:26px 0 6px;display:flex}.contact-list{background:var(--card-bg);border:1px solid var(--card-border);box-shadow:var(--card-shadow);border-radius:12px;margin:0;padding:18px 22px;transition:background-color .2s ease-in-out,border-color .2s ease-in-out;display:inline-block}.contact-list li{white-space:nowrap;margin:4px 0;list-style:none}.contact-list li i{text-align:center;width:26px;color:var(--accent);margin-right:10px;font-size:1.05em;display:inline-block}.contact-list li a{color:var(--body-text);text-decoration:none}.download-buttons{flex-direction:column;gap:12px;display:flex}.download-btn{text-align:center;background:-webkit-linear-gradient(left, var(--accent), #12928f);background:linear-gradient(90deg, var(--accent), #12928f);color:#fff;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;white-space:nowrap;border:none;border-radius:999px;outline:none;padding:12px 26px;font-family:Lato,Arial,sans-serif;font-size:15px;font-weight:700;line-height:normal;text-decoration:none;transition:all .2s;display:inline-block;box-shadow:0 4px 12px #0e7c7b52}.download-btn:hover{background:-webkit-linear-gradient(left, var(--accent-dark), var(--accent));background:linear-gradient(90deg, var(--accent-dark), var(--accent));transform:translateY(-1px);box-shadow:0 6px 18px #0e7c7b6b;color:#fff!important}.download-btn:focus-visible{box-shadow:0 0 0 3px #0e7c7b59}.work .work-list{background:var(--card-bg);border:1px solid var(--card-border);box-shadow:var(--card-shadow);border-radius:12px;margin:0 0 22px;padding:26px 30px;transition:box-shadow .2s,transform .2s,background-color .2s ease-in-out,border-color .2s ease-in-out}.work .work-list:hover{box-shadow:var(--card-shadow-hover);transform:translateY(-2px)}.work .work-list h3,.work .work-list h4{margin-bottom:8px}.work .work-list li{color:var(--muted);font-size:.9375em;list-style:none}.work .work-list p{margin-bottom:0}.work .work-list li a{color:var(--link);border-bottom:1px solid var(--link-underline);padding-bottom:2px;font-size:1em;font-weight:700;text-decoration:none}.work .work-list li a:hover{border-bottom:1px solid var(--link-hover)}.work .work-list>a{border-bottom:1px solid var(--link-underline);font-size:.9375em;font-weight:700;text-decoration:none}.work .work-list>a:hover{border-bottom:1px solid var(--link-hover)}.work .work-list img{margin-top:6px}.work .work-list:target{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-border), var(--card-shadow-hover)}.work .work-list li.record-references{border-top:1px solid var(--card-border);margin-top:18px;padding-top:14px}.work .record-references dl{grid-template-columns:max-content minmax(0,1fr);align-items:baseline;gap:2px 22px;margin:0;display:grid}.work .record-references dl>div{display:contents}.work .record-references dt{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);grid-column:1;font-size:.75em;font-weight:700}.work .record-references dd{grid-column:2;margin:0;line-height:1.6em}.work .record-references dd.record-links{flex-wrap:wrap;align-items:baseline;gap:2px 26px;display:flex}.work .record-link{align-items:baseline;gap:8px;min-width:0;display:inline-flex}.work .record-link span{overflow-wrap:anywhere;min-width:0}.work .record-references div+div dt,.work .record-references div+div dt+dd{padding-top:8px}.work .record-link .fa{color:var(--muted);flex:none}.work .record-link .icon{width:1.15em;height:1.15em;color:var(--muted);flex:none;align-self:center}@media only screen and (width<=600px){.work .record-references dl{grid-template-columns:minmax(0,1fr)}.work .record-references dt,.work .record-references dd{grid-column:1}.work .record-references div+div dt+dd{padding-top:0}}.work{--diff-added:#1a7f37;--diff-deleted:#d1242f;--diff-neutral:#d1d9e0;--diff-neutral-border:#d1d9e0;--activity-done:#8250df;--activity-review:#0969da}:root[data-theme=dark] .work{--diff-added:#3fb950;--diff-deleted:#f85149;--diff-neutral:#1f262f;--diff-neutral-border:#3d444d;--activity-done:#a371f7;--activity-review:#4493f8}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.work .activity{flex-wrap:wrap;gap:10px;display:flex}.work .work-list li a.activity-stat{background:var(--page-bg);border:1px solid var(--card-border);border-radius:10px;flex-direction:column;flex:1 1 0;min-width:0;max-width:175px;padding:8px 14px;font-weight:400;transition:border-color .2s;display:flex}.work .work-list li a.activity-stat:hover{border-color:var(--activity-color)}.work .activity-merged,.work .activity-closed{--activity-color:var(--activity-done)}.work .activity-reviewed{--activity-color:var(--activity-review)}.work .activity-value{color:var(--ink);font-variant-numeric:tabular-nums;align-items:center;gap:8px;font-size:1.35em;font-weight:700;line-height:1.3em;display:flex}.work .activity-icon{width:24px;height:24px;color:var(--activity-color);background:color-mix(in srgb, var(--activity-color) 16%, var(--page-bg));border-radius:50%;flex:none;justify-content:center;align-items:center;display:inline-flex}.work .activity-icon .icon{width:14px;height:14px}.work .activity-label{color:var(--muted);font-size:.85em;line-height:1.4em}.work .contributions{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px;display:grid}.work .contribution{background:var(--page-bg);border:1px solid var(--card-border);border-radius:10px;flex-direction:column;gap:4px;padding:9px 14px 11px;transition:border-color .2s;display:flex;position:relative}.work .contribution:hover{border-color:var(--link-hover)}.work .contribution-meta{color:var(--muted);align-items:center;gap:6px;font-size:.8em;line-height:1.5em;display:flex}.work .contribution-repository{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.work .contribution-number{flex:none}.work .work-list li a.contribution-title{border:none;padding:0;line-height:1.45em}.work .contribution-title:after{content:"";border-radius:inherit;position:absolute;inset:0}.work .contribution-diff{color:var(--muted);font-variant-numeric:tabular-nums;align-items:center;gap:8px;font-size:.8em;line-height:1.5em;display:flex}.work .diff-added-count,.work .diff-deleted-count{font-weight:700}.work .diff-added-count{color:var(--diff-added)}.work .diff-deleted-count{color:var(--diff-deleted)}.work .diff-blocks{gap:2px;margin-left:2px;display:flex}.work .diff-blocks span{border-radius:2px;width:8px;height:8px}.work .diff-added{background:var(--diff-added)}.work .diff-deleted{background:var(--diff-deleted)}.work .diff-neutral{background:var(--diff-neutral);box-shadow:inset 0 0 0 1px var(--diff-neutral-border)}.work .repositories{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px;display:grid}.work .repository{background:var(--page-bg);border:1px solid var(--card-border);border-radius:10px;align-items:flex-start;gap:12px;padding:10px 14px;transition:border-color .2s;display:flex;position:relative}.work .repository:hover{border-color:var(--link-hover)}.work .repository-logo,.work .work-list img.repository-logo{object-fit:contain;width:36px;height:36px;color:var(--muted);flex:none;justify-content:center;align-items:center;margin:0;display:flex}.work .repository-logo .icon{width:22px;height:22px}.work .repository-text{flex-direction:column;gap:2px;min-width:0;display:flex}.work .work-list li a.repository-name{overflow-wrap:anywhere;border:none;padding:0;line-height:1.45em}.work .repository-name:after{content:"";border-radius:inherit;position:absolute;inset:0}.work .repository-description{color:var(--muted);font-size:.85em;line-height:1.45em}.work .work-list li.tag-list{flex-wrap:wrap;gap:6px;margin-top:16px;display:flex}.work .tag{white-space:nowrap;border:1px solid var(--tag-color);cursor:pointer;background:0 0;border-radius:999px;margin:0;padding:0;font-family:Lato,Arial,sans-serif;font-size:.8em;font-weight:400;line-height:1.9em;display:inline-flex;overflow:hidden}.work .tag:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.work .tag-theme{color:var(--tag-on-color);background:var(--tag-color);padding:0 7px 0 9px}.work .tag-name{color:var(--ink);background:color-mix(in srgb, var(--tag-color) 16%, var(--card-bg));padding:0 9px 0 7px;font-weight:700;transition:background-color .15s}.work .tag[aria-pressed=false]:hover .tag-name{background:color-mix(in srgb, var(--tag-color) 32%, var(--card-bg))}:root[data-theme=dark] .work .tag{border-color:color-mix(in srgb, var(--tag-color) 70%, #fff)}:root[data-theme=dark] .work .tag-name{background:color-mix(in srgb, var(--tag-color) 30%, var(--card-bg))}:root[data-theme=dark] .work .tag[aria-pressed=false]:hover .tag-name{background:color-mix(in srgb, var(--tag-color) 50%, var(--card-bg))}.work .tag[aria-pressed=true] .tag-name{color:var(--tag-on-color);background:var(--tag-color)}.tag-standards{--tag-color:#440154;--tag-on-color:#fff}.tag-format{--tag-color:#482475;--tag-on-color:#fff}.tag-archives{--tag-color:#414487;--tag-on-color:#fff}.tag-data{--tag-color:#355f8d;--tag-on-color:#fff}.tag-organisms{--tag-color:#2a788e;--tag-on-color:#fff}.tag-methods{--tag-color:#21918c;--tag-on-color:#0b0f14}.tag-neuroscience{--tag-color:#22a884;--tag-on-color:#0b0f14}.tag-analysis{--tag-color:#44bf70;--tag-on-color:#0b0f14}.tag-engineering{--tag-color:#7ad151;--tag-on-color:#0b0f14}.tag-computing{--tag-color:#bddf26;--tag-on-color:#0b0f14}.tag-languages{--tag-color:#fde725;--tag-on-color:#0b0f14}.project-logo{margin-left:auto;margin-right:auto;display:block}.project-logo.logo-dark,:root[data-theme=dark] .project-logo.logo-light{display:none}:root[data-theme=dark] .project-logo.logo-dark{display:block}:root[data-theme=dark] .project-logo.logo-on-tile{background:#dfe5eb;border-radius:4px;box-shadow:0 0 0 16px #dfe5eb}:root[data-theme=dark] #highlighted-projects .work-list{--page-bg:#09192a;--card-bg:#0d2033;--card-border:#1d3d5c}:root[data-theme=dark] #highlighted-projects #hearth{--ink:#f5f5f5;--muted:#a3a7ad;--accent:#ff6b35;--accent-soft:#ff6b351f;--accent-border:#ff6b3559;--page-bg:#0f1115;--card-bg:#171a20;--card-border:#262a33}.section.page{padding-top:60px}.record-search-scope [hidden]{display:none!important}.record-search{margin:0 0 28px}.record-search-controls{flex-wrap:wrap;align-items:center;gap:12px 16px;display:flex}.record-search-field{flex:320px;min-width:0;position:relative}.record-search-field .fa-search{z-index:3;color:var(--muted);pointer-events:none;position:absolute;top:50%;left:20px;transform:translateY(-50%)}.record-search-field input[type=search]{width:100%;color:var(--ink);background:var(--card-bg);border:1px solid var(--card-border);box-shadow:var(--card-shadow);border-radius:999px;padding:12px 20px 12px 48px;font-family:Lato,Arial,sans-serif;font-size:1em;line-height:1.5em;transition:border-color .2s ease-in-out,box-shadow .2s ease-in-out,background-color .2s ease-in-out}.record-search-field input[type=search]::placeholder{color:var(--muted);opacity:1}.record-search-field input[type=search]:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-border)}.record-search-suggestions{z-index:20;background:var(--card-bg);border:1px solid var(--card-border);max-height:340px;box-shadow:var(--card-shadow-hover);border-radius:14px;margin:0;padding:6px;list-style:none;position:absolute;top:calc(100% + 6px);left:0;right:0;overflow-y:auto}.record-search-suggestions li{font-family:Lato,Arial,sans-serif;font-size:.9375em;line-height:1.5em;list-style:none}.record-search-suggestions .record-search-group-label{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:8px 12px 4px;font-size:.72em;font-weight:700}.record-search-option{cursor:pointer;border-radius:9px;align-items:baseline;gap:16px;padding:7px 12px;display:flex}.record-search-option[aria-selected=true]{background:var(--accent-soft)}.record-search-option-term{overflow-wrap:anywhere;min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9em}.record-search-option-key{color:var(--accent-dark)}.record-search-option-value{color:var(--ink);font-weight:700}.record-search-option-filter .record-search-option-term{flex:none;min-width:14ch}.record-search-option-hint,.record-search-option-count{color:var(--muted);font-size:.85em}.record-search-option-count{flex:none;margin-left:auto}.record-search-swatch{background:var(--tag-color);border-radius:50%;width:9px;height:9px;margin-right:8px;display:inline-block}.record-search-suggestions .record-search-tip{color:var(--muted);border-top:1px solid var(--card-border);margin-top:6px;padding:8px 12px 4px;font-size:.82em}.record-search-sort{color:var(--muted);white-space:nowrap;align-items:center;gap:10px;margin:0;font-family:Lato,Arial,sans-serif;font-size:.9375em;font-weight:400;display:inline-flex}.record-search-select{position:relative}.record-search-select:after{content:"";border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);pointer-events:none;width:7px;height:7px;position:absolute;top:50%;right:18px;transform:translateY(-70%)rotate(45deg)}.record-search-select select{color:var(--ink);background:var(--card-bg);border:1px solid var(--card-border);box-shadow:var(--card-shadow);cursor:pointer;appearance:none;border-radius:999px;padding:11px 44px 11px 18px;font-family:Lato,Arial,sans-serif;font-size:1em;line-height:1.5em}.record-search-select select:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-border);outline:none}.record-search-summary{flex-wrap:wrap;align-items:baseline;gap:8px 14px;margin-top:12px;padding:0 8px;display:flex}.record-search-status{color:var(--muted);margin:0;font-size:.9375em}.record-search-clear{color:var(--link);border:none;border-bottom:1px solid var(--link-underline);cursor:pointer;background:0 0;padding:0 0 2px;font-family:Lato,Arial,sans-serif;font-size:.9375em;font-weight:700;line-height:1.75em}.record-search-clear:hover{color:var(--link-hover);border-bottom-color:var(--link-hover)}.record-search-clear:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.skills .skill-group{background:var(--card-bg);border:1px solid var(--card-border);box-shadow:var(--card-shadow);border-radius:12px;margin:0 0 26px;padding:22px 26px;transition:background-color .2s ease-in-out,border-color .2s ease-in-out}.skills .skill-group h5{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0 0 12px;font-family:Lato,Arial,sans-serif;font-size:.85em;font-weight:700}.skills .skill-group h5 span{text-transform:none;letter-spacing:normal;font-weight:400}.skills .skill-row{flex-wrap:wrap;align-items:flex-start;margin-bottom:14px;display:flex}.skills .skill-row:last-child{margin-bottom:0}.skills .skill-sub{max-width:175px;color:var(--body-text);flex:0 0 175px;margin-right:8px;padding-top:5px;font-family:Lato,Arial,sans-serif;font-size:.85em;font-weight:700}.skills .skill-tags{flex-wrap:wrap;flex:300px;align-content:flex-start;align-items:flex-start;gap:6px;min-width:0;display:flex}.skills .tag{color:var(--accent-dark);background:var(--accent-soft);border:1px solid var(--accent-border);white-space:nowrap;border-radius:999px;margin:3px 6px 3px 0;padding:4px 13px;font-family:Lato,Arial,sans-serif;font-size:.85em;line-height:1.6em;transition:all .15s;display:inline-block}.skills .skill-tags .tag{margin:0}@media only screen and (width<=600px){.skills .skill-row{flex-direction:column}.skills .skill-sub{flex-basis:auto;max-width:none;margin-bottom:6px;padding-top:0}.skills .skill-tags{flex-basis:auto;width:100%}}.skills .tag:hover{background:var(--accent);border-color:var(--accent);color:#fff}.quote{background:#0a4450 url(../img/banner.svg) 50%/100% 100% no-repeat;margin-top:120px;padding:20px 0}.quote h1{color:#fff;letter-spacing:.08em;text-transform:uppercase;border:3px solid #ffffffd9;border-radius:4px;margin:50px 0;padding:40px 20px}footer{padding:50px 0 0}footer .footer-nav ul{flex-wrap:wrap;justify-content:center;gap:4px 26px;margin:0 0 26px;display:flex}footer .footer-nav a{color:var(--muted);letter-spacing:.03em;text-transform:uppercase;font-size:.78em;font-weight:700;text-decoration:none}footer .footer-nav a[aria-current=page]{color:var(--ink)}footer .social li{margin-left:20px;display:inline}footer .social li a{color:var(--muted);font-size:1.25em}footer .social li a:hover{color:var(--accent)!important}footer .footer-version{text-align:left;padding:0 0 20px}footer .version-link{color:var(--muted);font-size:.85em;font-weight:700;text-decoration:underline}footer .version-link:hover{color:var(--accent)}.scroll-offset{position:relative;top:80px}.nav-actions{z-index:1001;align-items:center;gap:8px;display:flex;position:fixed;top:14px;right:16px}.icon-btn{background:var(--card-bg);border:1px solid var(--card-border);width:36px;height:36px;color:var(--muted);cursor:pointer;box-shadow:var(--card-shadow);border-radius:999px;justify-content:center;align-items:center;padding:0;font-size:15px;line-height:1;transition:background-color .2s ease-in-out,border-color .2s ease-in-out,color .2s ease-in-out;display:inline-flex;text-decoration:none!important}.icon-btn:hover{border-color:var(--accent-border);color:var(--accent)!important}.icon-btn:focus-visible{box-shadow:0 0 0 3px var(--accent-border);outline:none}.theme-toggle-icon-light,:root[data-theme=dark] .theme-toggle-icon-dark{display:none}:root[data-theme=dark] .theme-toggle-icon-light{display:inline-block}
