:root{--hz-paper:oklch(98.5% 0.006 83);--hz-surface:oklch(96.4% 0.007 83);--hz-ink:oklch(24% 0.012 55);--hz-body:oklch(37% 0.010 55);--hz-muted:oklch(52% 0.008 58);--hz-faint:oklch(66% 0.006 62);--hz-rule:oklch(88% 0.006 75);--hz-rule-strong:oklch(79% 0.009 70);--hz-accent:oklch(48% 0.072 190);--hz-accent-text:oklch(44% 0.075 190);--hz-accent-soft:oklch(48% 0.072 190/0.10);--hz-font-sans:var(--font-geist-sans),"Geist",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;--hz-font-mono:var(--font-geist-mono),"Geist Mono",ui-monospace,SFMono-Regular,Menlo,monospace;--hz-measure:62ch;--hz-gutter:clamp(20px,5vw,72px);--hz-ease:cubic-bezier(0.16,1,0.3,1)}.dark{--hz-paper:oklch(16.5% 0.008 58);--hz-surface:oklch(20.5% 0.009 58);--hz-ink:oklch(95% 0.005 85);--hz-body:oklch(81% 0.006 80);--hz-muted:oklch(62% 0.008 70);--hz-faint:oklch(49% 0.007 64);--hz-rule:oklch(29% 0.009 58);--hz-rule-strong:oklch(40% 0.011 58);--hz-accent:oklch(72% 0.10 188);--hz-accent-text:oklch(76% 0.095 188);--hz-accent-soft:oklch(72% 0.10 188/0.14)}.hz,.hz *{box-sizing:border-box}.hz{font-family:var(--hz-font-sans);background:var(--hz-paper);color:var(--hz-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;line-height:1.6;min-height:100vh;transition:background .4s var(--hz-ease),color .4s var(--hz-ease)}.hz a{color:inherit;text-decoration:none}.hz button{font-family:inherit;background:none;border:none;color:inherit;cursor:pointer}.hz ::selection{background:var(--hz-accent-soft);color:var(--hz-ink)}.hz h1,.hz h2,.hz h3,.hz h4,.hz p,.hz ul{margin:0;padding:0}.hz a:focus-visible,.hz button:focus-visible{outline:2px solid var(--hz-accent);outline-offset:3px;border-radius:5px}.hz .cbtn:focus-visible,.hz .icon-link:focus-visible,.hz .theme-btn:focus-visible{outline-offset:2px}.hz .impact-dots button:focus-visible{outline-offset:4px}.hz .mono{font-family:var(--hz-font-mono);font-feature-settings:"tnum" 1}.hz .kicker{font-family:var(--hz-font-mono);font-size:11px;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--hz-muted)}.hz .accent{color:var(--hz-accent-text)}.hz .wrap{max-width:1180px;margin:0 auto;padding:0 var(--hz-gutter)}.hz .meta-strip{border-bottom:1px solid var(--hz-rule);position:sticky;top:0;z-index:40;background:color-mix(in oklab,var(--hz-paper) 88%,transparent);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.hz .meta-strip .wrap{display:flex;align-items:center;justify-content:space-between;height:42px;font-family:var(--hz-font-mono);font-size:11px;letter-spacing:.08em;color:var(--hz-muted)}.hz .meta-left{display:flex;align-items:center;gap:18px}.hz .meta-left .sep{color:var(--hz-faint)}.hz .status{display:inline-flex;align-items:center;gap:7px;color:var(--hz-accent-text);cursor:pointer}.hz a.status:hover{text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}.hz .status .dot{width:7px;height:7px;border-radius:50%;background:var(--hz-accent);box-shadow:0 0 0 3px color-mix(in oklab,var(--hz-accent) 16%,transparent);transition:box-shadow .2s var(--hz-ease)}.hz a.status:hover .dot{box-shadow:0 0 0 5px color-mix(in oklab,var(--hz-accent) 22%,transparent)}.hz .theme-btn{display:inline-flex;align-items:center;gap:7px;font-family:var(--hz-font-mono);font-size:11px;letter-spacing:.1em;color:var(--hz-muted);padding:5px 9px;border-radius:6px;transition:color .2s,background .2s}.hz .theme-btn:hover{color:var(--hz-ink);background:var(--hz-surface)}.hz .theme-btn svg{width:13px;height:13px}.hz .masthead{padding:clamp(54px,9vw,104px) 0 clamp(40px,6vw,64px)}.hz .masthead .kicker{margin-bottom:22px;display:flex;gap:14px;align-items:center}.hz .masthead .kicker .bar{flex:0 0 38px;height:1px;background:var(--hz-rule-strong)}.hz .name{font-size:clamp(44px,8.5vw,98px);font-weight:600;letter-spacing:-.035em;line-height:.96;color:var(--hz-ink);max-width:14ch;text-wrap:balance}.hz .masthead .role-line{margin-top:28px;display:flex;flex-wrap:wrap;align-items:baseline;gap:10px 16px;font-size:clamp(17px,2.2vw,21px);color:var(--hz-body)}.hz .masthead .role-line b{color:var(--hz-ink);font-weight:600}.hz .masthead .role-line .div{color:var(--hz-faint);font-weight:300}.hz .contact-row{margin-top:36px;display:flex;flex-wrap:wrap;align-items:center;gap:10px}.hz .cbtn{display:inline-flex;align-items:center;gap:9px;height:42px;padding:0 16px;border:1px solid var(--hz-rule-strong);border-radius:8px;font-size:14px;font-weight:500;color:var(--hz-ink);transition:border-color .2s var(--hz-ease),background .2s var(--hz-ease),transform .2s var(--hz-ease)}.hz .cbtn svg{width:16px;height:16px}.hz .cbtn:hover{background:var(--hz-surface);border-color:var(--hz-ink);transform:translateY(-1px)}.hz .cbtn.solid{background:var(--hz-ink);color:var(--hz-paper);border-color:var(--hz-ink)}.hz .cbtn.solid:hover{background:var(--hz-accent);border-color:var(--hz-accent);color:var(--hz-paper)}.hz .icon-link{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:8px;border:1px solid var(--hz-rule);color:var(--hz-muted);transition:color .2s,border-color .2s,transform .2s}.hz .icon-link svg{width:18px;height:18px}.hz .icon-link:hover{color:var(--hz-ink);border-color:var(--hz-rule-strong);transform:translateY(-1px)}.hz .body-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:0;border-top:1px solid var(--hz-rule)}@media (min-width:900px){.hz .body-grid{grid-template-columns:188px minmax(0,1fr);gap:0 clamp(40px,6vw,88px)}}.hz .rail{display:none}@media (min-width:900px){.hz .rail{display:block;position:sticky;top:74px;align-self:start;padding-top:54px}}.hz .rail nav{display:flex;flex-direction:column;gap:2px;margin-bottom:34px}.hz .rail nav a{font-family:var(--hz-font-mono);font-size:12px;letter-spacing:.06em;color:var(--hz-muted);padding:7px 0;display:flex;gap:11px;align-items:baseline;transition:color .2s var(--hz-ease),transform .25s var(--hz-ease)}.hz .rail nav a .ix{color:var(--hz-faint);font-size:11px;transition:color .2s}.hz .rail nav a.current,.hz .rail nav a:hover{color:var(--hz-ink);transform:translateX(4px)}.hz .rail nav a.current .ix,.hz .rail nav a:hover .ix{color:var(--hz-accent-text)}.hz .rail .railnote{font-family:var(--hz-font-mono);font-size:11px;line-height:1.7;color:var(--hz-faint);letter-spacing:.03em;border-top:1px solid var(--hz-rule);padding-top:18px}.hz .rail .railnote .raillink{display:inline-flex;align-items:center;gap:6px;margin-top:16px;font-family:var(--hz-font-mono);font-size:11px;letter-spacing:.04em;color:var(--hz-accent-text);transition:color .2s}.hz .rail .railnote .raillink:hover{color:var(--hz-ink)}.hz .col{min-width:0}html:has(.hz){scroll-behavior:smooth}.hz footer,.hz section{scroll-margin-top:60px}.hz section{padding:clamp(48px,7vw,84px) 0;border-bottom:1px solid var(--hz-rule)}.hz section:last-of-type{border-bottom:none}.hz .sec-head{display:flex;align-items:baseline;gap:14px;margin-bottom:30px}.hz .sec-head .ix{font-family:var(--hz-font-mono);font-size:12px;color:var(--hz-accent-text);letter-spacing:.1em;flex:0 0 auto;padding-top:3px}.hz .sec-head h2{font-size:13px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--hz-muted);font-family:var(--hz-font-mono)}.hz .lead{font-size:clamp(21px,2.9vw,30px);line-height:1.45;letter-spacing:-.012em;color:var(--hz-ink);max-width:24ch;font-weight:500}.hz .lead .soft{color:var(--hz-muted)}.hz .summary-body{margin-top:26px;max-width:var(--hz-measure);font-size:16px;line-height:1.72;color:var(--hz-body)}.hz .summary-body .accent{font-weight:500}.hz .metrics{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--hz-rule);border:1px solid var(--hz-rule);border-radius:12px;overflow:hidden}@media (min-width:680px){.hz .metrics{grid-template-columns:repeat(4,1fr)}}.hz .metric{background:var(--hz-paper);padding:26px 22px 24px;transition:background .3s var(--hz-ease)}.hz .metric:hover{background:var(--hz-surface)}.hz .metric .fig{font-size:clamp(34px,5vw,46px);font-weight:600;letter-spacing:-.03em;color:var(--hz-ink);line-height:1;font-feature-settings:"tnum" 1;display:flex;align-items:baseline;gap:2px}.hz .metric .fig .u{font-size:.5em;font-weight:500;color:var(--hz-accent-text);letter-spacing:0}.hz .metric .lab{margin-top:14px;font-size:13.5px;line-height:1.5;color:var(--hz-muted);max-width:22ch}.hz .metric .lab b{color:var(--hz-body);font-weight:500}.hz .impact-viewport{display:grid}.hz .impact-panel{grid-area:1/1;transition:opacity .55s var(--hz-ease),transform .55s var(--hz-ease)}.hz .impact-panel:not(.active){opacity:0;transform:translateY(10px);pointer-events:none}.hz .impact-panel.active{opacity:1;transform:none}.hz .metrics.milestones .fig{font-size:clamp(26px,3.6vw,34px);color:var(--hz-accent-text);letter-spacing:-.02em}.hz .metrics.milestones .lab{max-width:30ch}.hz .impact-controls{margin-top:16px;display:flex;align-items:center;justify-content:space-between;gap:14px}.hz .impact-caption{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--hz-muted)}.hz .impact-dots{display:flex;gap:9px}.hz .impact-dots button{width:7px;height:7px;border-radius:50%;padding:0;background:var(--hz-rule-strong);transition:background .2s,transform .2s}.hz .impact-dots button:hover{background:var(--hz-muted)}.hz .impact-dots button.on{background:var(--hz-accent);transform:scale(1.2)}@media (prefers-reduced-motion:reduce){.hz .impact-panel{transition:none}}.hz .work{display:flex;flex-direction:column}.hz .role{display:grid;grid-template-columns:1fr;gap:6px;padding:26px 0;border-top:1px solid var(--hz-rule);position:relative}.hz .role:first-child{border-top:none;padding-top:0}@media (min-width:620px){.hz .role{grid-template-columns:148px 1fr;gap:0 28px}}.hz .role .when{font-family:var(--hz-font-mono);font-size:12px;letter-spacing:.04em;color:var(--hz-muted);padding-top:5px}.hz .role .when .now{color:var(--hz-accent-text)}.hz .role .rmain{min-width:0}.hz .role h3{font-size:19px;font-weight:600;color:var(--hz-ink);letter-spacing:-.01em;line-height:1.25}.hz .role h3 .co{color:var(--hz-muted);font-weight:400}.hz .role .rdesc{margin-top:10px;font-size:15.5px;line-height:1.65;color:var(--hz-body);max-width:60ch}.hz .role .rdesc .accent{font-weight:500}.hz .role .proof{margin-top:14px;display:inline-flex;align-items:center;gap:9px;font-family:var(--hz-font-mono);font-size:12px;letter-spacing:.03em;color:var(--hz-muted)}.hz .role .proof .pin{width:6px;height:6px;border-radius:50%;background:var(--hz-accent);flex:0 0 auto}.hz .work-grid{display:grid;grid-template-columns:1fr;gap:24px}@media (min-width:640px){.hz .work-grid{grid-template-columns:repeat(3,1fr)}}.hz .proj{display:flex;flex-direction:column;cursor:pointer;text-align:left;width:100%}.hz .proj .shot{aspect-ratio:5/3;border-radius:10px;overflow:hidden;border:1px solid var(--hz-rule);background:var(--hz-surface);position:relative}.hz .proj .shot img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s var(--hz-ease),filter .5s var(--hz-ease);filter:saturate(.92)}.hz .proj:hover .shot img{transform:scale(1.04);filter:saturate(1.05)}.hz .proj .shot:after{content:"";position:absolute;inset:0;border-radius:10px;box-shadow:inset 0 0 0 1px color-mix(in oklab,var(--hz-ink) 8%,transparent);pointer-events:none}.hz .proj .ptitle{margin-top:15px;font-size:15.5px;font-weight:600;color:var(--hz-ink);display:flex;align-items:center;gap:7px}.hz .proj .ptitle svg{width:14px;height:14px;color:var(--hz-faint);transition:transform .25s var(--hz-ease),color .25s}.hz .proj:hover .ptitle svg{transform:translate(2px,-2px);color:var(--hz-accent-text)}.hz .proj .pdesc{margin-top:7px;font-size:13.5px;line-height:1.55;color:var(--hz-muted);max-width:34ch}.hz .proj .pmeta{margin-top:11px;font-family:var(--hz-font-mono);font-size:11px;letter-spacing:.06em;color:var(--hz-accent-text)}.hz .caselist{margin-top:30px;padding-top:24px;border-top:1px solid var(--hz-rule)}.hz .caselist .cl-label{font-family:var(--hz-font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--hz-muted);margin-bottom:14px}.hz .caselist ul{list-style:none;display:flex;flex-direction:column}.hz .caseitem{display:flex;align-items:baseline;gap:12px;width:100%;text-align:left;padding:12px 0;border-top:1px solid var(--hz-rule);font-size:15px;color:var(--hz-body);transition:color .2s}.hz .caselist li:first-child .caseitem{border-top:none}.hz .caseitem:hover{color:var(--hz-ink)}.hz .caseitem .cnum{font-family:var(--hz-font-mono);font-size:11px;color:var(--hz-faint);flex:0 0 auto;padding-top:2px}.hz .caseitem .cname{flex:1 1 auto}.hz .caseitem svg{width:14px;height:14px;color:var(--hz-faint);flex:0 0 auto;transition:transform .25s var(--hz-ease),color .25s}.hz .caseitem:hover svg{transform:translate(2px,-2px);color:var(--hz-accent-text)}.hz .skillset{display:grid;grid-template-columns:1fr;gap:28px}@media (min-width:620px){.hz .skillset{grid-template-columns:repeat(2,1fr)}}.hz .skillgroup .sg-label{font-family:var(--hz-font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--hz-muted);margin-bottom:13px;padding-bottom:10px;border-bottom:1px solid var(--hz-rule)}.hz .skillgroup ul{list-style:none;display:flex;flex-direction:column;gap:9px}.hz .skillgroup li{font-size:15px;color:var(--hz-body);display:flex;gap:11px;align-items:baseline}.hz .skillgroup li:before{content:"";flex:0 0 auto;width:5px;height:5px;margin-top:8px;border-radius:1px;background:var(--hz-rule-strong);transition:background .2s}.hz .skillgroup li:hover:before{background:var(--hz-accent)}.hz .skillgroup li .cert{font-family:var(--hz-font-mono);font-size:11px;color:var(--hz-faint);letter-spacing:.03em}.hz .edu{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 18px}.hz .edu .deg{font-size:18px;font-weight:600;color:var(--hz-ink);letter-spacing:-.01em}.hz .edu .school{font-size:15px;color:var(--hz-muted)}.hz .edu .yr{font-family:var(--hz-font-mono);font-size:12px;color:var(--hz-faint);letter-spacing:.05em}.hz footer{border-top:1px solid var(--hz-rule);padding:clamp(56px,8vw,96px) 0 64px}.hz .foot-cta{font-size:clamp(26px,4.4vw,46px);font-weight:600;letter-spacing:-.03em;color:var(--hz-ink);line-height:1.1;max-width:16ch;text-wrap:balance}.hz .foot-cta a{color:var(--hz-accent-text);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px;text-decoration-color:var(--hz-rule-strong);transition:text-decoration-color .25s}.hz .foot-cta a:hover{text-decoration-color:var(--hz-accent)}.hz .colophon{margin-top:46px;padding-top:22px;border-top:1px solid var(--hz-rule);display:flex;flex-wrap:wrap;justify-content:space-between;gap:14px;font-family:var(--hz-font-mono);font-size:11px;letter-spacing:.05em;color:var(--hz-faint)}.hz .colophon a:hover{color:var(--hz-muted)}.hz .pdf-overlay{position:fixed;inset:0;z-index:90;display:flex;align-items:center;justify-content:center;padding:clamp(10px,3vw,40px);background:color-mix(in oklab,var(--hz-ink) 62%,transparent);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.hz .pdf-reader{display:flex;flex-direction:column;width:min(980px,100%);height:92vh;background:var(--hz-paper);color:var(--hz-body);border:1px solid var(--hz-rule-strong);border-radius:14px;overflow:hidden;box-shadow:0 40px 90px color-mix(in oklab,var(--hz-ink) 34%,transparent)}.hz .pdf-reader.fs{width:100vw;height:100vh;border-radius:0}.hz .pdf-overlay:has(.pdf-reader.fs){padding:0}.hz .pdf-bar{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:15px 16px 15px 20px;border-bottom:1px solid var(--hz-rule)}.hz .pdf-meta{display:flex;flex-direction:column;gap:4px;min-width:0}.hz .pdf-meta .kicker{font-size:10px}.hz .pdf-title{font-size:16px;font-weight:600;color:var(--hz-ink);letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hz .pdf-bar-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto}.hz .pdf-iconbtn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:8px;border:1px solid var(--hz-rule);color:var(--hz-muted);transition:color .2s,border-color .2s,background .2s,transform .2s var(--hz-ease)}.hz .pdf-iconbtn svg{width:16px;height:16px}.hz .pdf-iconbtn:hover{color:var(--hz-ink);border-color:var(--hz-rule-strong);background:var(--hz-surface)}.hz .pdf-iconbtn:disabled{opacity:.35;cursor:not-allowed}.hz .pdf-iconbtn:disabled:hover{color:var(--hz-muted);border-color:var(--hz-rule);background:none}.hz .pdf-stage{flex:1 1 auto;min-height:0;overflow:auto;position:relative;background:var(--hz-surface);display:flex;align-items:flex-start;justify-content:center;padding:clamp(16px,3vw,36px)}.hz .pdf-stage .pdf-document{height:auto;min-height:0;padding:0;align-items:flex-start;margin:auto}.hz .pdf-stage .react-pdf__Page{background:transparent!important;box-shadow:none!important}.hz .pdf-stage .react-pdf__Page__canvas{border-radius:4px;box-shadow:0 10px 34px color-mix(in oklab,var(--hz-ink) 24%,transparent)}.hz .pdf-stage .react-pdf__message{margin:auto;padding:40px;font-family:var(--hz-font-mono);font-size:12px;letter-spacing:.08em;color:var(--hz-muted)}.hz .pdf-controls-bar{flex:0 0 auto;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:10px clamp(18px,5vw,44px);padding:12px 18px;border-top:1px solid var(--hz-rule)}.hz .pdf-group{display:inline-flex;align-items:center;gap:10px}.hz .pdf-group .read{font-family:var(--hz-font-mono);font-size:12px;letter-spacing:.08em;color:var(--hz-muted);min-width:6ch;text-align:center;font-feature-settings:"tnum" 1}.hz .pdf-download{display:inline-flex;align-items:center;gap:8px;height:36px;padding:0 15px;border-radius:8px;background:var(--hz-ink);color:var(--hz-paper);font-size:13px;font-weight:500;border:1px solid var(--hz-ink);transition:background .2s,border-color .2s,transform .2s var(--hz-ease)}.hz .pdf-download svg{width:15px;height:15px}.hz .pdf-download:hover{background:var(--hz-accent);border-color:var(--hz-accent);color:var(--hz-paper);transform:translateY(-1px)}@media (max-width:560px){.hz .pdf-controls-bar{gap:10px 18px}.hz .pdf-download{order:-1;width:100%;justify-content:center}}.hz .reveal{opacity:0;transform:translateY(18px)}.hz .revealed{opacity:1;transform:none;transition:opacity .6s var(--hz-ease),transform .6s var(--hz-ease)}@media (prefers-reduced-motion:reduce){html:has(.hz){scroll-behavior:auto}.hz,.hz *{animation:none!important}.hz .reveal{opacity:1;transform:none}.hz .revealed{transition:none}}@media (max-width:560px){.hz .meta-left .hide-sm{display:none}}