:root{color-scheme:dark;font-family:Arial,Helvetica,sans-serif;color:#ddd;background:#000;font-synthesis:none}*{box-sizing:border-box}body{margin:0}a{color:inherit;text-underline-offset:4px}a:hover{color:#fff}a:focus-visible,summary:focus-visible{outline:2px solid #eee;outline-offset:4px}img{max-width:100%}h1,h2,h3,p{overflow-wrap:break-word}p{font-size:1rem;line-height:1.65;color:#bbb}h1{font-family:Georgia,'Times New Roman',serif;font-weight:400;letter-spacing:-.025em}h2{font-size:1.35rem;font-weight:500;line-height:1.35;margin:0 0 20px}h3{font-size:1.125rem;font-weight:500;line-height:1.45;margin:0 0 10px}.home{min-height:100svh;display:grid;grid-template-rows:minmax(min-content,1fr) auto;width:100%;padding:0 24px}.home-group{width:100%;max-width:540px;justify-self:center;align-self:center;text-align:center;padding:28px 0}.profile-photo{display:block;width:88px;height:88px;object-fit:cover;border-radius:50%;border:1px solid #666;margin:0 auto 24px}.home h1{font-size:clamp(1.85rem,7.2vw,2.65rem);line-height:1.2;margin:0 0 18px}.bio{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;max-width:420px;font-size:1rem;line-height:1.65;margin:0 auto;color:#aaa}.home-nav{display:grid;grid-template-columns:1fr 1fr;gap:4px 20px;max-width:290px;margin:28px auto 0}.home-nav a{display:flex;min-height:48px;align-items:center;justify-content:center;text-decoration:none;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.9375rem}.home-nav a:hover{text-decoration:underline}.socials{display:flex;gap:20px;justify-content:center;margin-top:12px}.socials a{width:48px;height:48px;display:grid;place-items:center;border-radius:5px}.socials a:hover{background:#181818}.socials img{filter:invert(1);opacity:.75}.home-footer{text-align:center;padding:14px 0 max(18px,env(safe-area-inset-bottom));font-size:.75rem;line-height:1.5;color:#888}.page-shell{width:min(calc(100% - 48px),800px);margin:auto}.page-header{padding:24px 0 0;border-bottom:1px solid #333}.back-link{display:inline-flex;align-items:center;min-height:48px;font-size:.875rem;color:#bbb;text-decoration:none}.back-link:hover{text-decoration:underline}.page-nav{display:flex;flex-wrap:wrap;gap:0 20px;margin-top:12px}.page-nav a{display:inline-flex;align-items:center;min-height:48px;padding:10px 2px;color:#999;text-decoration:none;font-size:.9375rem;border-bottom:2px solid transparent}.page-nav a[aria-current=page]{color:#eee;border-bottom-color:#eee}.page-nav a:hover{color:#fff}.page-content{padding:40px 0 60px}.page-title{margin-bottom:32px}.page-title h1{font-size:clamp(2rem,5vw,2.75rem);line-height:1.2;margin:0 0 12px}.page-title p{max-width:600px;margin:0;color:#aaa}.research-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;padding:24px 0;border-top:1px solid #444;border-bottom:1px solid #444}.research-stats strong{display:block;font-family:Georgia,'Times New Roman',serif;font-size:2.1rem;font-weight:400;margin-bottom:8px}.research-stats span{display:block;font-size:.875rem;color:#bbb;line-height:1.4}.status-note{font-size:.875rem;line-height:1.6;margin:20px 0 36px;max-width:680px}.cve-group{padding:20px 0 14px}.cve-group h3{font-size:1.0625rem;margin:0 0 10px}.cve-group ul{list-style:none;padding:0;margin:0}.cve-group li{border-bottom:1px solid #303030}.cve-link{display:grid;grid-template-columns:175px 1fr auto;align-items:center;gap:16px;min-height:64px;padding:15px 4px;text-decoration:none}.cve-link:hover{background:#131313}.cve-id{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.875rem;white-space:nowrap;color:#eee}.cve-description{font-size:.9375rem;line-height:1.45;color:#aaa}.source-label{font-size:.8125rem;color:#aaa}.group-note,.note,.section-label,.work-meta{font-size:.875rem;line-height:1.6;color:#aaa}.group-note{margin:0 0 8px}.group-note a{display:inline-flex;align-items:center;min-height:48px}.content-section{margin-top:48px;padding-top:32px;border-top:1px solid #444}.case-study{border-bottom:1px solid #333;margin-top:8px}.case-study summary{cursor:pointer;font-size:1rem;line-height:1.5;min-height:52px;padding:16px 0;color:#ddd}.case-text{padding:10px 0 20px;max-width:680px}.case-text p{margin:0 0 18px}.case-text .work-meta{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.8125rem}.case-links{display:flex;flex-wrap:wrap;gap:0 20px}.work-source{display:inline-flex;align-items:center;min-height:48px;padding:12px 4px;margin-top:8px;font-size:.875rem;line-height:1.5}.work-list{list-style:none;padding:0;margin:0}.work-list>li{padding:24px 0;border-bottom:1px solid #333}.work-list>li:first-child{padding-top:8px}.work-list p{margin:0 0 10px;max-width:690px}.work-list .work-meta{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.8125rem;margin:0 0 8px}.work-list h3{margin:0 0 10px}.award{display:inline-block;border:1px solid #555;padding:5px 9px;font-size:.8125rem;line-height:1.45;color:#ddd}.recognition{list-style:none;padding:0;margin:0}.recognition li{border-bottom:1px solid #333}.recognition a{display:block;padding:20px 0;min-height:48px;font-size:1rem;line-height:1.5;text-decoration:none}.recognition a:hover{text-decoration:underline}.recognition small{display:block;color:#999;font-size:.8125rem;margin-top:5px}.section-intro{margin:0 0 14px}.about-intro{font-size:1.2rem;margin:0 0 28px;max-width:620px}.projects>a,.projects>div{display:block;padding:24px 0;border-bottom:1px solid #333;text-decoration:none}.projects>a:hover h3{text-decoration:underline}.projects p{margin:0 0 14px}.projects .note{font-size:.8125rem}.community-quote{margin:28px 0;padding:2px 0 2px 18px;border-left:1px solid #777}.community-quote p{font-family:Georgia,'Times New Roman',serif;font-size:1.2rem;line-height:1.6;color:#ddd}.community-quote cite{display:block;font-size:.875rem;font-style:normal;color:#bbb;margin-top:12px}#work-with-me-title{margin-top:36px}.contact{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:12px 18px;background:#ddd;color:#111;text-decoration:none;margin-top:16px;font-size:1rem}.contact:hover{background:#fff;color:#000}.page-footer{display:flex;justify-content:space-between;align-items:center;gap:20px;border-top:1px solid #333;padding:18px 0 max(22px,env(safe-area-inset-bottom));font-size:.75rem;color:#888}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;border:0}.skip-link{position:absolute;left:-9999px;top:8px;background:#fff;color:#000;padding:12px;z-index:10}.skip-link:focus{left:8px}@media(max-width:600px){.page-shell{width:calc(100% - 36px)}.page-header{padding-top:12px}.page-nav{gap:0;justify-content:space-between;margin-top:6px}.page-nav a{font-size:.875rem;padding:10px 6px}.page-content{padding:28px 0 42px}.page-title{margin-bottom:26px}.page-title h1{font-size:2rem}.research-stats{gap:12px;padding:20px 0}.research-stats strong{font-size:1.85rem}.research-stats span{font-size:.8125rem}.status-note{margin-bottom:26px}.cve-group{padding:16px 0 10px}.cve-link{grid-template-columns:1fr auto;gap:6px 12px;padding:14px 3px}.cve-id{font-size:.875rem}.cve-description{grid-column:1;grid-row:2;font-size:.9375rem}.source-label{grid-column:2;grid-row:1/3;align-self:center}.content-section{margin-top:36px;padding-top:28px}.work-list>li{padding:22px 0}.case-links{gap:0 14px}.home h1{font-size:clamp(1.75rem,7.2vw,2.15rem)}.bio{max-width:330px;line-height:1.6}.profile-photo{margin-bottom:22px}.page-footer{gap:12px;align-items:flex-start}.page-footer>span{padding-top:16px;text-align:right;line-height:1.5}.home-group{padding:24px 0}}@media(max-height:650px){.home-group{padding:20px 0}.profile-photo{width:78px;height:78px;margin-bottom:18px}.home-nav{margin-top:24px}.socials{margin-top:8px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
/* Text enlargement may wrap labels; it never creates a nested scrolling pane. */
.cve-link{min-width:0}.cve-id{white-space:normal;overflow-wrap:anywhere}.source-label{overflow-wrap:normal}.page-nav a{min-width:0}.home-nav a{overflow-wrap:anywhere}#other-awards-title{margin-top:40px}
.view[hidden]{display:none!important}.page-title h1:focus,.home h1:focus{outline:none}.no-js{padding:20px;text-align:center;color:#bbb}

.socials{flex-wrap:wrap;align-items:center}.socials .booking-link{width:auto;min-height:48px;height:auto;padding:0 10px;font-size:.875rem;line-height:1.5;white-space:nowrap}

.booking-control{display:inline-flex;align-items:center}.booking-popup[hidden],.booking-control>a[hidden]{display:none!important}.booking-popup button{appearance:none!important;background:transparent!important;color:#ddd!important;border:0!important;border-radius:5px!important;box-shadow:none!important;min-height:48px!important;height:auto!important;margin:0!important;padding:0 10px!important;font:400 .875rem/1.5 Arial,Helvetica,sans-serif!important;text-decoration:underline;text-underline-offset:4px;cursor:pointer;white-space:nowrap}.booking-popup button:hover{background:#181818!important;color:#fff!important}.booking-popup button:focus-visible{outline:2px solid #eee;outline-offset:4px}
/* Give Google's booking popup the available phone width; its iframe stays provider-owned. */
@media(max-width:600px){body>.hur54b{padding:max(64px,calc(env(safe-area-inset-top) + 56px)) max(8px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left))}body>.hur54b>button.Xfsokf{top:max(8px,env(safe-area-inset-top));right:max(8px,env(safe-area-inset-right));min-width:48px;min-height:48px;height:48px}}
