.site{--gutter:max(32px,calc((100% - 1176px) / 2));position:relative;min-height:100vh;overflow-x:clip;background:var(--paper);color:var(--ink);font-family:var(--font-sans)}.paper{padding:0 var(--gutter)}.eyebrow,.local-time,.section-label{margin:0;color:var(--muted);font:400 11px var(--font-mono);letter-spacing:.12em;text-transform:uppercase}.display{margin:0;color:var(--ink);font:400 clamp(48px,6.4vw,96px)/.95 var(--font-display);letter-spacing:-.02em}.display-sm{font-size:clamp(40px,4.6vw,68px)}.display-xl{font-size:clamp(60px,10vw,160px);line-height:.9}.display em,.title-block h1 em{font-family:var(--font-serif);font-style:italic;color:var(--accent)}.mask-line{display:block;overflow:hidden;padding-bottom:.12em;margin-bottom:-.12em}.mask-line>span{display:inline-block;will-change:transform}.mark{font-style:italic;color:inherit;background-image:linear-gradient(var(--yellow),var(--yellow));background-repeat:no-repeat;background-position:0 88%;background-size:0 .34em}.display .mark,.smallcaps,.title-block h1 .mark{color:var(--ink)}.smallcaps{font-variant:small-caps;letter-spacing:.04em}.btn{min-height:48px;padding:0 18px;display:inline-flex;align-items:center;gap:10px;border:1px solid var(--ink);text-decoration:none;font:500 12px var(--font-mono);letter-spacing:.06em;text-transform:uppercase;transition:background .25s,color .25s,box-shadow .25s,transform .25s}.btn-primary{background:var(--ink);color:var(--paper)}.btn-secondary{background:transparent;color:var(--ink)}.btn:hover{transform:translate(-3px,-3px);box-shadow:3px 3px 0 var(--accent)}.btn svg{transition:transform .35s var(--ease-out)}.btn:hover svg{transform:translate(2px,-2px)}.text-link{display:inline-flex;align-items:center;gap:6px;padding:0 0 3px;border:0;border-bottom:1px solid var(--ink);background:none;color:var(--ink);font:500 12px var(--font-mono);letter-spacing:.06em;text-decoration:none;text-transform:uppercase;transition:color .2s,border-color .2s}.text-link:hover{color:var(--accent);border-color:var(--accent)}.ask-trigger,.intro-ask{border-color:var(--ink)}.ask-trigger{padding:6px 8px 6px 11px;font:500 11px var(--font-mono);letter-spacing:.06em;text-transform:uppercase}.ask-trigger:hover,.intro-ask:hover{border-color:var(--accent)}.ask-trigger kbd,.intro-ask kbd,.palette kbd{border-radius:0}.site-nav{position:sticky;z-index:50;top:0;height:56px;padding:0 var(--gutter);display:flex;align-items:center;justify-content:space-between;gap:24px;border-bottom:1px solid var(--ink);background:color-mix(in srgb,var(--paper) 92%,transparent);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.site-logo{padding:0;border:0;background:none;color:var(--ink);font:400 22px var(--font-display);letter-spacing:-.01em;white-space:nowrap}.site-logo:hover{color:var(--accent)}.nav-links{display:flex;align-items:center;gap:26px}.nav-links a,.nav-links button{position:relative;display:inline-flex;align-items:center;gap:4px;padding:6px 0;border:0;background:none;color:var(--muted);font:400 12px var(--font-mono);letter-spacing:.04em;text-decoration:none;transition:color .2s}.nav-links button span{color:var(--accent)}.nav-links a:hover,.nav-links button.active,.nav-links button:hover{color:var(--ink)}.nav-underline{position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--ink)}.nav-end{display:flex;align-items:center;gap:10px}.mobile-menu{display:none;min-width:64px;height:34px;padding:0 10px;border:1px solid var(--ink);background:none;color:var(--ink);font:500 11px var(--font-mono);letter-spacing:.08em;text-transform:uppercase}.site-progress{position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--accent);transform-origin:0 50%}.mobile-nav{position:fixed;z-index:45;top:56px;left:0;right:0;display:grid;padding:8px 20px 20px;border-bottom:1px solid var(--ink);background:var(--paper)}.mobile-nav a,.mobile-nav button{display:flex;align-items:center;gap:14px;padding:16px 0;border:0;border-bottom:1px solid var(--line);background:none;color:var(--ink);font:400 30px/1 var(--font-display);text-align:left;text-decoration:none}.mobile-nav span{width:28px;color:var(--accent);font:400 11px var(--font-mono)}.mobile-nav svg{margin-left:auto;color:var(--muted)}.title-block{padding:clamp(48px,7vh,88px) 0 clamp(72px,9vw,120px)}.title-meta{display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px;padding-bottom:14px;border-bottom:1px solid var(--line)}.title-block h1{margin:clamp(28px,4vw,56px) 0 clamp(24px,3vw,40px);font:400 clamp(68px,12.2vw,196px)/.86 var(--font-display);letter-spacing:-.03em}.double-rule{height:5px;border-top:2px solid var(--ink);border-bottom:1px solid var(--ink);transform-origin:0 50%}.abstract-grid{display:grid;grid-template-columns:180px minmax(0,1fr) minmax(280px,380px);gap:clamp(28px,4vw,56px);padding-top:clamp(32px,4vw,48px)}.abstract-label{padding-top:6px;color:var(--accent);font:500 11px var(--font-mono);letter-spacing:.14em;text-transform:uppercase}.hero-lede{max-width:600px;margin:0;font-size:clamp(20px,1.8vw,25px);line-height:1.5}.hero-lede:first-letter{float:left;margin:.06em .1em 0 0;color:var(--accent);font:400 3.3em/.8 var(--font-display)}.keywords{margin:22px 0 0;color:var(--muted);font-size:16px;font-style:italic}.figure-keywords span,.keywords span{color:var(--ink);font-style:normal;font-weight:600}.hero-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:32px}.title-block .intro-ask{margin-top:20px;border-radius:0;font-family:var(--font-sans)}.booktabs{width:100%;border-collapse:collapse;border-top:2px solid var(--ink);border-bottom:2px solid var(--ink)}.booktabs caption{caption-side:top;padding-bottom:10px;color:var(--muted);font:400 11px var(--font-mono);letter-spacing:.08em;text-align:left;text-transform:uppercase}.booktabs caption b{color:var(--ink);font-weight:500}.stats-table{max-width:600px;margin-top:40px}.stats-table th{padding:14px 12px 6px 0;border-bottom:1px solid var(--ink);font:400 clamp(34px,3.4vw,48px)/1 var(--font-display);text-align:left}.stats-table td{padding:8px 12px 12px 0;color:var(--muted);font-size:15px;font-style:italic}.fig-portrait{margin:0}.fig-portrait-frame{position:relative;aspect-ratio:4/5;overflow:hidden;border:1px solid var(--ink);background:radial-gradient(var(--line) 1px,transparent 1px) 0 0 /16px 16px,var(--paper-2)}.neural-canvas{position:absolute;inset:0;z-index:0;width:100%;height:100%;pointer-events:none}.fig-portrait-frame{perspective:900px}.portrait-card{--tilt-x:0deg;--tilt-y:0deg;position:absolute;z-index:1;left:50%;top:50%;width:60%;aspect-ratio:3/4;overflow:hidden;border:1px solid var(--ink);box-shadow:8px 8px 0 var(--ink);rotate:-2deg;transform:translate(-50%,-50%) rotateX(var(--tilt-x)) rotateY(var(--tilt-y));transition:rotate .8s var(--ease-out)}.fig-portrait:hover .portrait-card{rotate:0deg}.portrait-3d{position:absolute;inset:0;width:100%;height:100%;opacity:0;transition:opacity .9s var(--ease-out)}.portrait-3d.ready{opacity:1}.portrait-card img{object-fit:cover;filter:grayscale(1) contrast(1.1);transition:filter .8s var(--ease-out)}.fig-portrait:hover .portrait-card img{filter:grayscale(0) contrast(1)}.portrait-stamp{position:absolute;z-index:2;top:12px;right:14px;color:var(--muted);font:400 10px var(--font-mono);letter-spacing:.1em}figcaption{margin-top:12px;color:var(--muted);font-size:15px;line-height:1.45}figcaption b{color:var(--ink);font-weight:600}figcaption svg{display:inline;vertical-align:-1px;color:var(--accent)}.paper-section{display:grid;grid-template-columns:180px minmax(0,1fr);gap:clamp(28px,4vw,56px);padding:clamp(80px,10vw,140px) 0;border-top:1px solid var(--ink);scroll-margin-top:56px}.margin-sticky{position:sticky;top:84px;display:grid;gap:8px}.sec-num{color:var(--accent);font:400 56px/1 var(--font-display)}.sec-label{font:500 11px var(--font-mono);letter-spacing:.12em;text-transform:uppercase}.margin-note{max-width:170px;padding-top:10px;border-top:1px solid var(--line);color:var(--muted);font-size:15px;line-height:1.4}.section-intro{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);align-items:end;gap:40px;margin-bottom:clamp(48px,6vw,80px)}.section-intro p{max-width:400px;margin:0;color:var(--muted);font-size:18px;line-height:1.6}.pull-quote{position:relative;max-width:860px;margin:clamp(40px,5vw,64px) 0 0;padding-left:clamp(24px,3vw,40px);border-left:2px solid var(--ink)}.pull-quote:before{content:"“";position:absolute;left:-.62em;top:-.3em;color:var(--accent);font:400 120px/1 var(--font-display)}.scroll-words{margin:0;font:400 clamp(24px,2.6vw,36px)/1.38 var(--font-sans);letter-spacing:-.01em}.pull-quote cite{display:block;margin-top:24px;color:var(--muted);font:400 11px var(--font-mono);font-style:normal;letter-spacing:.12em;text-transform:uppercase}.figures{display:grid;gap:clamp(72px,9vw,120px)}.figure-entry{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:clamp(32px,4vw,56px);align-items:start}.figures>div:nth-child(2n) .figure-plate{order:2}.figure-plate{margin:0}.figure-frame{position:relative;aspect-ratio:4/3;display:grid;place-items:center;overflow:hidden;border:1px solid var(--ink);background:radial-gradient(var(--line) 1px,transparent 1px) 0 0 /16px 16px,var(--paper-2)}.figure-text{position:relative;padding-top:4px}.figure-number{color:var(--accent);font:500 11px var(--font-mono);letter-spacing:.1em}.figure-text h3{margin:10px 0 16px;font:400 clamp(32px,3.2vw,46px)/1.02 var(--font-display);letter-spacing:-.01em;text-wrap:balance}.figure-text>p{margin:0;font-size:18px;line-height:1.6}.figure-text ol{margin:20px 0 0;padding:0;list-style:none;counter-reset:feature}.figure-text li{counter-increment:feature;display:grid;grid-template-columns:36px 1fr;padding:7px 0;border-bottom:1px dotted var(--line);font-size:16px}.figure-text li:before{content:"(" counter(feature,lower-roman) ")";color:var(--accent);font-style:italic}.figure-keywords{margin:18px 0 0!important;color:var(--muted);font-size:15px!important;font-style:italic}.figure-actions{display:flex;flex-wrap:wrap;align-items:center;gap:14px 24px;margin-top:26px}.figure-private{color:var(--muted);font:400 11px var(--font-mono);letter-spacing:.06em;text-transform:uppercase}.figure-private:before{content:"¹ ";color:var(--accent)}.project-toolbar{display:flex;flex-wrap:wrap;align-items:end;justify-content:space-between;gap:16px 24px;margin-top:clamp(88px,10vw,140px);padding-bottom:12px}.project-count{display:inline-flex;align-items:baseline;gap:8px;color:var(--muted);font:400 11px var(--font-mono);letter-spacing:.08em;text-transform:uppercase}.project-count b{color:var(--ink);font-weight:500}.project-count strong{display:inline-block;min-width:2ch;color:var(--accent);font:400 28px/1 var(--font-display)}.project-filters{display:flex;flex-wrap:wrap;gap:4px 20px}.project-filters button{position:relative;padding:4px 0;border:0;background:none;color:var(--muted);font:400 12px var(--font-mono);text-transform:capitalize;transition:color .2s}.project-filters button.active,.project-filters button:hover{color:var(--ink)}.filter-underline{position:absolute;left:0;right:0;bottom:0;height:1.5px;background:var(--accent)}.archive-list{position:relative;border-top:2px solid var(--ink);border-bottom:2px solid var(--ink)}.archive-head,.archive-row{display:grid;grid-template-columns:56px minmax(0,1.4fr) minmax(0,1fr) 120px 24px;align-items:center;gap:20px}.archive-head{padding:10px 0;border-bottom:1px solid var(--ink);color:var(--muted);font:400 10px var(--font-mono);letter-spacing:.1em;text-transform:uppercase}.archive-row{position:relative;width:100%;padding:18px 0;border:0;border-bottom:1px solid var(--line);background:none;color:var(--ink);text-align:left;transition:background .25s}.archive-row:last-child{border-bottom:0}.archive-row:focus-visible,.archive-row:hover{background:var(--paper-2)}.archive-index{color:var(--accent);font:400 11px var(--font-mono)}.archive-title{font:400 clamp(22px,2.1vw,28px)/1.15 var(--font-display);transition:transform .45s var(--ease-out)}.archive-row:hover .archive-title{transform:translateX(8px)}.archive-stack{color:var(--muted);font-size:15px;font-style:italic}.archive-category{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font:400 10px var(--font-mono);letter-spacing:.1em;text-transform:uppercase}.archive-arrow{color:var(--muted);transition:transform .4s var(--ease-out),color .2s}.archive-row:hover .archive-arrow{color:var(--accent);transform:rotate(45deg)}.archive-preview{position:absolute;z-index:5;top:-110px;left:40px;width:320px;pointer-events:none}.archive-preview .figure-frame{box-shadow:8px 8px 0 var(--ink)}.archive-preview .figure-frame>*{transform:scale(.6)}.archive-preview .figure-frame>.pv-media{transform:none}.definitions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:2px solid var(--ink);border-bottom:1px solid var(--ink)}.definition{padding:28px 28px 32px 0}.definition+.definition{padding-left:28px;border-left:1px solid var(--line)}.definition>span{display:block;margin-bottom:14px;color:var(--accent);font:400 40px/1 var(--font-display)}.definition p{margin:0;font-size:18px;line-height:1.55}.definition strong{font-style:italic;font-weight:600}.skill-line{display:flex;flex-wrap:wrap;gap:8px 18px;max-width:none!important;color:var(--ink)!important}.skill-line span{display:inline-flex;align-items:center;gap:6px;font-size:18px;font-style:italic}.skill-line svg{color:var(--accent)}.toolkit-table td,.toolkit-table th{padding:20px 20px 20px 0;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.toolkit-table tr:last-child td,.toolkit-table tr:last-child th{border-bottom:0}.toolkit-table th{width:22%;font:400 28px/1.1 var(--font-display)}.toolkit-table td:nth-child(2){width:30%;color:var(--muted);font-style:italic;font-size:16px}.toolkit-table td:last-child{font-size:16px;line-height:1.6}.references{margin:0;padding:0;list-style:none;border-top:2px solid var(--ink)}.ref-entry{border-bottom:1px solid var(--line)}.ref-head{display:grid;grid-template-columns:56px minmax(0,1fr) auto 44px;align-items:baseline;gap:20px;padding:26px 0 8px;cursor:pointer}.ref-num{color:var(--accent);font:400 13px var(--font-mono)}.ref-title h3{margin:0;font:400 clamp(28px,3vw,40px)/1.05 var(--font-display);transition:color .2s}.ref-head:hover h3{color:var(--accent)}.ref-title p{margin:6px 0 0;color:var(--muted);font-size:17px}.ref-year{color:var(--muted);font:400 11px var(--font-mono);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}.ref-toggle{padding:0;border:0;background:none;color:var(--ink);font:500 13px var(--font-mono)}.ref-entry.open .ref-toggle,.ref-toggle:hover{color:var(--accent)}.ref-lead{max-width:720px;margin:0;padding:0 0 22px 76px;font-size:18px;line-height:1.55}.ref-entry ul{margin:-8px 0 0;padding:0 0 26px 76px;overflow:hidden;list-style:none;color:var(--muted);font-size:16px}.ref-entry ul li{position:relative;padding:4px 0 4px 18px}.ref-entry ul li:before{content:"–";position:absolute;left:0;color:var(--accent)}.education{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(32px,5vw,72px);margin-top:clamp(80px,9vw,120px)}.sub-num{display:block;margin-bottom:18px;color:var(--accent);font:500 11px var(--font-mono);letter-spacing:.12em;text-transform:uppercase}.education-items{border-top:2px solid var(--ink)}.education-item{padding:20px 0;border-bottom:1px solid var(--line)}.education-items span{color:var(--accent);font:400 11px var(--font-mono);letter-spacing:.06em}.education-items h3{margin:8px 0 4px;font:400 26px var(--font-display)}.education-items p{margin:0;color:var(--muted);font-size:16px}.education-certification{display:block;margin-top:24px;padding:20px 22px;border:1px solid var(--ink);background:var(--surface);color:var(--ink);text-decoration:none;box-shadow:5px 5px 0 var(--ink);transition:transform .25s,box-shadow .25s}.education-certification:hover{transform:translate(-2px,-2px);box-shadow:7px 7px 0 var(--accent)}.education-certification p{display:flex;align-items:center;gap:6px}.contact-section .sec-label{max-width:170px;line-height:1.6}.contact-bottom{display:flex;flex-wrap:wrap;align-items:end;justify-content:space-between;gap:32px 48px;margin-top:clamp(40px,5vw,64px);padding-top:28px;border-top:1px solid var(--line)}.contact-copy{max-width:480px;margin:0;font-size:19px;line-height:1.6}.contact-link{display:inline-flex;align-items:center;gap:10px;padding-bottom:6px;border-bottom:2px solid var(--ink);color:var(--ink);font:400 clamp(26px,3.2vw,44px) var(--font-display);text-decoration:none;transition:color .2s,border-color .2s}.contact-link:hover{color:var(--accent);border-color:var(--accent)}.site-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:14px 28px;padding:22px var(--gutter);border-top:2px solid var(--ink);color:var(--muted);font:400 11px var(--font-mono);letter-spacing:.04em}.footer-support-link{display:inline-flex;align-items:center;gap:5px;color:var(--accent);text-decoration:none}.footer-support-link:hover{color:var(--ink)}.footer-social{display:flex;gap:18px}.footer-social a,.footer-social button{padding:0;border:0;background:none;color:var(--ink);font:inherit;text-decoration:underline;text-underline-offset:3px}.footer-social a:hover,.footer-social button:hover{color:var(--accent)}.project-detail-backdrop{background:#16150f55;backdrop-filter:blur(3px)}.project-detail{background:var(--surface);border:1px solid var(--ink);border-radius:0;box-shadow:10px 10px 0 var(--ink)}.project-detail h3{font:400 clamp(32px,4vw,46px)/1 var(--font-display);letter-spacing:-.01em}.project-detail-description{font-size:18px}.project-detail-close{border-color:var(--ink);border-radius:0;color:var(--ink)}.project-detail-close:hover{background:var(--paper-2)}.project-detail .section-label{color:var(--accent)}.detail-tech span{border-color:var(--ink);border-radius:0;color:var(--ink)}.project-detail-columns,.project-detail-footer{border-color:var(--ink)}@media (max-width:1080px){.abstract-grid{grid-template-columns:minmax(0,1fr) minmax(240px,320px)}.abstract-label{grid-column:1/-1;padding:0}}@media (max-width:900px){.site{--gutter:20px}.nav-links{display:none}.mobile-menu{display:block}.site-logo{font-size:20px}.ask-trigger kbd{display:none}.title-block h1{font-size:clamp(56px,17vw,120px)}.abstract-grid{grid-template-columns:minmax(0,1fr)}.fig-portrait{max-width:420px}.paper-section{grid-template-columns:minmax(0,1fr);gap:28px;padding:72px 0}.margin-sticky{position:static;display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 14px}.sec-num{font-size:40px}.margin-note{max-width:none;width:100%}.education,.figure-entry,.section-intro{grid-template-columns:minmax(0,1fr)}.figures>div:nth-child(2n) .figure-plate{order:0}.definitions{grid-template-columns:minmax(0,1fr)}.definition,.definition+.definition{padding:24px 0;border-left:0}.definition+.definition{border-top:1px solid var(--line)}.archive-head{display:none}.archive-row{grid-template-columns:32px minmax(0,1fr) 20px;gap:4px 12px;padding:16px 0}.archive-title{grid-column:2}.archive-stack{grid-column:2;grid-row:2;font-size:14px}.archive-category{display:none}.archive-arrow{grid-column:3;grid-row:1/span 2}.toolkit-table,.toolkit-table tbody,.toolkit-table td,.toolkit-table th,.toolkit-table tr{display:block;width:auto!important}.toolkit-table tr{padding:16px 0;border-bottom:1px solid var(--line)}.toolkit-table tr:last-child{border-bottom:0}.toolkit-table td,.toolkit-table th{padding:4px 0;border:0}.ref-head{grid-template-columns:32px minmax(0,1fr) 36px;gap:6px 12px}.ref-year{grid-column:2;grid-row:2}.ref-toggle{grid-column:3;grid-row:1}.ref-entry ul,.ref-lead{padding-left:44px}.site-footer{padding:20px}}@media (prefers-reduced-motion:reduce){.mark{background-size:100% .34em!important}.archive-title,.btn,.portrait-card{transition:none}}