.home-intro{max-width:40rem;margin:.75rem auto 0;text-align:center}.home-intro p{margin:0}.footer-vim{display:inline-block;margin-top:.6rem;font-family:monospace;font-size:1.2rem;letter-spacing:.05em;opacity:.35}.footer-vim::after{content:"▮";margin-left:.1em;animation:footer-vim-blink 1.1s steps(1)infinite}@keyframes footer-vim-blink{50%{opacity:0}}.research-figure{margin:2.5rem 0;padding:.9rem .9rem .4rem;background:#26282d;border:1px solid rgba(255,255,255,7%);border-radius:14px;box-shadow:0 8px 28px rgba(0,0,0,.4);text-align:center}.research-figure__frame{padding:2.5rem 3rem;background:#e7ddca;border-radius:9px;box-shadow:inset 0 0 0 1px rgba(0,0,0,5%);cursor:zoom-in}.research-figure img{display:block;max-width:100%;height:auto;margin:0 auto}.research-figure figcaption{margin:.9rem .4rem .4rem;color:#9a9a9a;font-size:1.3rem;font-style:italic}.colorscheme-light .research-figure{background:#ecece8;border-color:rgba(0,0,0,8%);box-shadow:0 4px 18px rgba(0,0,0,.12)}.colorscheme-light .research-figure__frame{background:#fff}.colorscheme-light .research-figure figcaption{color:#6b6b6b}@media(max-width:480px){.research-figure{padding:.6rem .6rem .3rem}.research-figure__frame{padding:1.25rem 1rem}}.research-sep{position:relative;height:1px;margin:3.75rem 0 2.75rem;background:linear-gradient( to right,transparent,rgba(255,255,255,.22),transparent )}.research-sep::after{content:"";position:absolute;left:50%;top:50%;width:7px;height:7px;transform:translate(-50%,-50%)rotate(45deg);background:#26282d;box-shadow:0 0 0 1px rgba(255,255,255,.22)}.colorscheme-light .research-sep{background:linear-gradient( to right,transparent,rgba(0,0,0,.16),transparent )}.colorscheme-light .research-sep::after{background:#fafafa;box-shadow:0 0 0 1px rgba(0,0,0,.16)}.lightbox{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:3vmin;background:rgba(0,0,0,.85);opacity:0;transition:opacity .18s ease}.lightbox.is-open{opacity:1}.lightbox__stage{display:flex;align-items:center;justify-content:center;width:min(96vw,1200px);max-height:92vh;padding:2.5rem 3rem;background:#e7ddca;border-radius:12px;box-shadow:0 12px 48px rgba(0,0,0,.6);overflow:hidden;cursor:grab;touch-action:none}.lightbox__stage.is-panning{cursor:grabbing}.lightbox__stage img{display:block;width:100%;height:auto;max-height:calc(92vh - 5rem);object-fit:contain;transform-origin:0 0;will-change:transform;user-select:none;-webkit-user-drag:none}.lightbox__close{position:absolute;top:1.1rem;right:1.3rem;width:2.4rem;height:2.4rem;border:0;border-radius:50%;background:rgba(255,255,255,.12);color:#fff;font-size:1.5rem;line-height:1;cursor:pointer}.lightbox__close:hover{background:rgba(255,255,255,.22)}.lightbox__hint{position:absolute;bottom:1.1rem;left:0;right:0;text-align:center;color:rgba(255,255,255,.65);font-size:.8rem}.reference{margin:1.75rem 0;padding:1.2rem 1.4rem;border:1px solid rgba(128,128,128,.35);border-radius:6px;background:rgba(128,128,128,6%)}.reference__cite{margin:0 0 .9rem}.reference__title{font-weight:600}.reference__meta{display:block;margin-top:.4rem;font-size:1.4rem;opacity:.8}.reference__actions{display:flex;flex-wrap:wrap;gap:.8rem}.reference__btn{display:inline-block;padding:.5rem 1.1rem;border:1px solid rgba(128,128,128,.5);border-radius:4px;background:0 0;color:inherit;font:inherit;font-size:1.4rem;line-height:1.4;cursor:pointer;text-decoration:none}.reference__btn:hover{border-color:initial}.reference__copy.is-copied{border-color:#4caf50;color:#4caf50}.resume .lead{margin:0 0 3rem;font-size:2rem;line-height:1.5;color:#cfcfcf}.resume h2{margin:3.5rem 0 1.5rem;padding-bottom:.5rem;font-size:1.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:#cfcfcf;border-bottom:1px solid rgba(255,255,255,.14)}.cv-entry{display:grid;grid-template-columns:10rem 1fr;gap:1.75rem;padding:1.6rem 0;border-top:1px solid rgba(255,255,255,8%)}.cv-entry:first-of-type{border-top:0;padding-top:0}.cv-entry__date{padding-top:.4rem;color:#8f8f8f;font-size:1.5rem;font-variant-numeric:tabular-nums}.cv-entry__org{margin:0;font-size:2rem;font-weight:600}.cv-entry__role{margin:.3rem 0 0;color:#bdbdbd;font-size:1.7rem}.cv-entry__desc{margin-top:.7rem;font-size:1.7rem;line-height:1.55;opacity:.92}.cv-entry__desc p{margin:0}.cv-entry__desc ul{margin:0;padding-left:1.8rem}.cv-entry__desc li{margin:.2rem 0}.cv-skills{display:flex;flex-direction:column;gap:1rem}.cv-skills__row{display:flex;flex-wrap:wrap;align-items:center;gap:.7rem}.cv-skills__cat{min-width:12rem;color:#8f8f8f;font-size:1.7rem;font-weight:600}.cv-skills__pill{padding:.35rem .9rem;border:1px solid rgba(255,255,255,.16);border-radius:999px;font-size:1.5rem}.colorscheme-light .resume .lead{color:#3a3a3a}.colorscheme-light .resume h2{color:#333;border-bottom-color:rgba(0,0,0,.14)}.colorscheme-light .cv-entry{border-top-color:rgba(0,0,0,8%)}.colorscheme-light .cv-entry__date,.colorscheme-light .cv-skills__cat{color:#6b6b6b}.colorscheme-light .cv-entry__role{color:#555}.colorscheme-light .cv-skills__pill{border-color:rgba(0,0,0,.18)}@media(max-width:480px){.cv-entry{grid-template-columns:1fr;gap:.25rem}.cv-entry__date{padding-top:0}.cv-skills__cat{min-width:100%}}