:root{--paper: oklch(95.66% .0091 78.28);--ink: oklch(15.51% .0027 67.63);--muted: oklch(46.97% .0095 73.65);--rule: var(--ink);--signal: oklch(61.52% .1981 35.96);--signal-deep: oklch(48.65% .1663 32.88);--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-7: 3rem;--space-8: 4rem;--section-head-height: 4.75rem;--work-summary-min: clamp(14rem, 20vw, 20rem);--font-display: "PPEditorialNew", Georgia, "Times New Roman", serif;--font-body: "Space Grotesk", "Avenir Next", "Helvetica Neue", Arial, sans-serif;--ease-out: cubic-bezier(.22, 1, .36, 1);--ease-snap: cubic-bezier(.16, 1, .3, 1)}*{box-sizing:border-box;min-width:0}html{background:var(--ink);color:var(--ink);font-family:var(--font-body);font-kerning:normal;scroll-behavior:smooth}body{margin:0;min-width:320px;overflow-x:hidden;background:linear-gradient(90deg,color-mix(in srgb,var(--paper),var(--ink) 5%) 1px,transparent 1px) 0 0 / 4rem 4rem,var(--paper)}img{display:block;max-width:100%}a{color:inherit}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}:focus-visible{outline:2px solid var(--signal);outline-offset:2px}.page-shell{width:min(100%,1440px);margin-inline:auto;background:var(--paper);border-inline:1px solid var(--rule);min-height:100vh}main#top{scroll-margin-top:5rem}.site-nav{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:clamp(var(--space-3),2vw,var(--space-6));min-height:4rem;padding:var(--space-2) var(--space-4);background:color-mix(in srgb,var(--paper),white 4%);border-bottom:1px solid var(--rule)}.mark{position:relative;display:inline-flex;align-items:center;justify-content:center;width:2.8rem;height:2.8rem;border:1px solid var(--rule);font-family:var(--font-display);font-size:1.55rem;font-weight:400;line-height:1;text-decoration:none;transition:background-color .16s var(--ease-out),color .16s var(--ease-out)}.mark:after{content:"FILE / PS";position:absolute;left:-1px;top:calc(100% + 1px);z-index:30;display:block;width:max-content;border:1px solid var(--rule);background:var(--signal);color:var(--ink);padding:.28rem .45rem;font-family:var(--font-body);font-size:.65rem;font-weight:900;letter-spacing:.04em;line-height:1;opacity:0;pointer-events:none;text-transform:uppercase;transform:translateY(-.35rem);transition:opacity .18s var(--ease-out),transform .18s var(--ease-out)}.nav-links{display:flex;flex-wrap:wrap;gap:clamp(var(--space-3),2.5vw,var(--space-6));align-items:center;min-width:0}.nav-links a{display:inline-flex;align-items:center;justify-content:center;min-width:2.75rem;min-height:2.75rem;padding-inline:var(--space-2)}.site-nav a,.site-nav p{margin:0;font-size:.75rem;font-weight:800;letter-spacing:.04em;line-height:1;text-transform:uppercase;text-decoration:none}.site-nav a:hover,.site-nav a[aria-current=page]{color:var(--signal-deep)}.mark:hover,.mark:focus-visible{background:var(--ink);color:var(--paper)}.mark:hover:after,.mark:focus-visible:after{opacity:1;transform:translateY(0)}.site-nav p{margin-left:auto;text-align:right}.hero{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(18rem,.65fr);grid-template-areas:"name portrait" "claim portrait";border-bottom:1px solid var(--rule)}.hero-name{position:relative;grid-area:name;padding:clamp(var(--space-6),4vw,var(--space-8)) clamp(var(--space-4),3vw,var(--space-7)) clamp(var(--space-4),3vw,var(--space-7));border-right:1px solid var(--rule);border-bottom:1px solid var(--rule)}.masthead-note{width:fit-content;margin:var(--space-4) 0 0;border:1px solid var(--rule);background:var(--signal);padding:.3rem .5rem;font-size:.72rem;font-weight:900;letter-spacing:.04em;line-height:1.1;text-transform:uppercase;transform:rotate(-1.4deg)}.folio,.section-kicker,.portrait-meta,.section-head p,.case-period,.tag,.contact span,.copyright{font-size:.75rem;font-weight:800;letter-spacing:.04em;line-height:1.15;text-transform:uppercase}.folio{margin:0 0 var(--space-4)}h1,h2,h3,p{text-wrap:pretty}h1{max-width:8ch;margin:0;font-family:var(--font-display);font-size:clamp(4rem,13vw,6rem);font-weight:400;letter-spacing:-.035em;line-height:.9;padding-top:.06em;text-transform:uppercase;text-wrap:balance}.portrait-card{grid-area:portrait;display:grid;grid-template-rows:1fr auto;min-height:34rem;border-bottom:1px solid var(--rule)}.portrait-frame{position:relative;overflow:hidden;background:radial-gradient(circle at 50% 28%,transparent 0 38%,color-mix(in srgb,var(--ink),transparent 94%) 39% 40%,transparent 41%),var(--paper);background-size:4px 4px,auto;isolation:isolate}.portrait-frame:before,.portrait-frame:after{content:"";position:absolute;inset:0;z-index:4;pointer-events:none}.portrait-frame:before{background:linear-gradient(90deg,color-mix(in srgb,var(--paper),transparent 86%) 1px,transparent 1px) 0 0 / 3.25rem 3.25rem,linear-gradient(0deg,transparent 0 52%,color-mix(in srgb,var(--ink),transparent 92%) 53% 54%,transparent 55%) 0 0 / 100% 6px;mix-blend-mode:multiply;opacity:.52}.portrait-frame:after{background:linear-gradient(115deg,transparent 0 34%,color-mix(in srgb,var(--signal),transparent 86%) 42%,transparent 55%),radial-gradient(circle at 32% 26%,color-mix(in srgb,var(--paper),transparent 86%) 0 1px,transparent 1.5px) 0 0 / 5px 5px;mix-blend-mode:multiply;opacity:.58;animation:portrait-scan-drift 11s linear infinite}.portrait-frame img{position:relative;z-index:1;width:100%;height:100%;min-height:30rem;object-fit:cover;object-position:50% 20%;filter:grayscale(1) contrast(1.32) brightness(.98)}.portrait-mesh{position:absolute;inset:-2% -4% 0 -3%;z-index:3;width:107%;height:104%;color:var(--ink);opacity:.78;pointer-events:none;transform-origin:54% 44%;animation:portrait-mesh-drift 9s var(--ease-snap) infinite alternate}.portrait-mesh path,.portrait-mesh circle{vector-effect:non-scaling-stroke}.mesh-base path{fill:none;stroke:currentColor;stroke-width:.36;stroke-linecap:square;stroke-linejoin:miter;opacity:.5}.mesh-signal path{fill:none;stroke:var(--signal);stroke-width:.56;stroke-linecap:square;stroke-dasharray:7 8;opacity:.76;animation:mesh-signal-run 3.8s linear infinite}.mesh-nodes circle{fill:var(--paper);stroke:var(--rule);stroke-width:.45;opacity:.86}.mesh-nodes circle:nth-child(3n+1){fill:var(--signal);animation:mesh-node-pulse 2.8s var(--ease-out) infinite}.mesh-nodes circle:nth-child(3n+2){animation:mesh-node-pulse 3.4s var(--ease-out) .7s infinite}.portrait-card:hover .portrait-mesh,.portrait-card:focus-within .portrait-mesh{opacity:.9}.portrait-card:hover .mesh-base path,.portrait-card:focus-within .mesh-base path{opacity:.62}.portrait-meta{display:flex;justify-content:space-between;gap:var(--space-4);padding:var(--space-3);border-top:1px solid var(--rule)}.portrait-meta span:last-child{text-align:right}.portrait-meta span:first-child{background:var(--signal);border:1px solid var(--rule);padding:.25rem .4rem}.hero-claim{grid-area:claim;padding:clamp(var(--space-4),3vw,var(--space-7));border-right:1px solid var(--rule)}.section-kicker{margin:0 0 var(--space-3)}.hero-claim h2{max-width:15ch;margin:0 0 var(--space-4);font-family:var(--font-display);font-size:clamp(2.75rem,6.4vw,5rem);font-weight:400;letter-spacing:-.03em;line-height:.92;text-wrap:balance}.hero-claim p:last-child{max-width:54ch;margin:0;font-size:clamp(1rem,1.4vw,1.2rem);line-height:1.45;overflow-wrap:break-word}.ticker{display:flex;align-items:center;overflow:hidden;padding:0;background:var(--signal);border-bottom:1px solid var(--rule);white-space:nowrap}.ticker-track span{font-size:.75rem;font-weight:900;letter-spacing:.04em;text-transform:uppercase}.ticker-track{display:flex;flex:1 0 auto;align-items:center;gap:var(--space-5);min-width:max-content;padding:var(--space-2) 0 var(--space-2) var(--space-4);animation:ticker-run 22s linear infinite}.ticker:hover .ticker-track{animation-play-state:paused}.ticker-track span:not(:first-child):before{content:"•";margin-right:var(--space-5)}.profile-snapshot{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-bottom:1px solid var(--rule)}.profile-snapshot span{display:flex;align-items:center;min-height:4.25rem;padding:var(--space-3) var(--space-4);border-right:1px solid var(--rule);font-size:.82rem;font-weight:900;letter-spacing:.04em;line-height:1.15;text-transform:uppercase}.profile-snapshot span:last-child{border-right:0}.section-block,.rail-section,.contact{border-bottom:1px solid var(--rule)}.record-layout{display:grid;align-items:stretch;grid-template-columns:minmax(0,7fr) minmax(20rem,3fr);border-bottom:1px solid var(--rule)}.record-layout>.section-block,.record-layout>.right-rail{border-bottom:0}.right-rail{border-left:1px solid var(--rule)}.right-rail .rail-section:last-child{border-bottom:0}.right-rail .section-head h2{font-size:clamp(1.65rem,3vw,2.55rem)}.work{display:block}.section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-4);min-height:var(--section-head-height);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--rule)}.section-head h2{margin:0;font-family:var(--font-display);font-size:clamp(1.9rem,4vw,3.35rem);font-weight:400;line-height:.9;letter-spacing:-.025em;text-transform:uppercase}.section-head p{margin:0;text-align:right}.rail-list{display:grid}.credential-card{display:grid;gap:var(--space-2);min-height:9rem;padding:var(--space-4);border-bottom:1px solid var(--rule)}.credential-card:last-child{border-bottom:0}.credential-logo img{width:auto;max-width:min(10rem,100%);max-height:2.2rem;object-fit:contain;filter:grayscale(1) contrast(1.08)}.credential-card h3,.credential-card p,.credential-card span{margin:0}.credential-card h3{font-size:1rem;letter-spacing:-.01em;line-height:1.1}.credential-card p{color:var(--muted);font-size:.9rem;font-weight:700;line-height:1.25}.credential-card>span:not(.credential-logo){font-size:.75rem;font-weight:900;letter-spacing:.04em;line-height:1.15;text-transform:uppercase}.accordion-stack{display:grid;grid-auto-rows:auto}.work-case{display:block;border-bottom:1px solid var(--rule)}.work-case:last-child{border-bottom:0}.work-case summary{position:relative;display:grid;grid-template-columns:clamp(4.25rem,5.5vw,5rem) minmax(0,1fr);align-items:stretch;min-height:var(--work-summary-min);padding:0 3.25rem 0 0;cursor:pointer;list-style:none;transition:background-color .16s var(--ease-out)}.work-case summary::-webkit-details-marker{display:none}.work-case summary:after{content:"+";position:absolute;right:var(--space-4);top:var(--space-4);display:inline-flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;border:1px solid var(--rule);font-size:1rem;font-weight:900;line-height:1}.work-case[open] summary:after{content:"-"}.work-case summary:hover{background:color-mix(in srgb,var(--signal),transparent 86%)}.work-case summary:hover .case-number,.work-case summary:focus-visible .case-number{background:var(--ink);color:var(--paper)}.case-number{align-self:stretch;display:flex;align-items:center;justify-content:center;border-right:1px solid var(--rule);font-family:var(--font-display);font-size:clamp(2.1rem,4vw,3.4rem);font-weight:400;line-height:1}.case-brief{display:grid;align-content:center;gap:clamp(var(--space-2),1vw,var(--space-4));padding:clamp(var(--space-4),1.65vw,var(--space-6)) var(--space-4)}.case-topline{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4)}.case-brand{display:inline-flex;align-items:center;gap:var(--space-2);width:fit-content;min-height:2.2rem}.case-brand img{width:auto;max-width:min(14rem,100%);max-height:2.35rem;object-fit:contain;filter:grayscale(1) contrast(1.18);mix-blend-mode:multiply}.case-brand span{border:1px solid var(--rule);background:var(--paper);padding:.24rem .44rem;font-size:.75rem;font-weight:900;letter-spacing:.04em;line-height:1;text-transform:uppercase}.case-brief strong{display:block;max-width:58ch;font-size:clamp(1.15rem,1.8vw,1.55rem);letter-spacing:-.01em;line-height:1.05}.case-brief>span:not(.case-topline,.metric-strip){display:block;max-width:68ch;font-size:1rem;line-height:1.42}.metric-strip{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-1)}.metric-strip em{display:inline-flex;border:1px solid var(--rule);background:var(--paper);padding:.25rem .45rem;font-style:normal;font-size:.75rem;font-weight:900;letter-spacing:.04em;line-height:1.1;text-transform:uppercase}.metric-strip em:first-child{background:var(--signal)}.case-period{color:var(--muted);text-align:right;white-space:nowrap}.case-body{border-top:1px solid var(--rule)}.case-rows{display:grid}.achievement-row{display:grid;grid-template-columns:4rem minmax(0,1fr) minmax(10rem,.34fr);border-bottom:1px solid var(--rule);transition:background-color .16s var(--ease-out)}.achievement-row:last-child{border-bottom:0}.achievement-row>*{padding:var(--space-3) var(--space-4);border-right:1px solid var(--rule)}.achievement-row>*:last-child{border-right:0}.achievement-row>span{font-size:.8rem;font-weight:800;letter-spacing:.04em;transition:background-color .16s var(--ease-out),color .16s var(--ease-out)}.achievement-row h3{margin:0 0 var(--space-1);font-size:.9rem;letter-spacing:.04em;line-height:1.15;text-transform:uppercase}.achievement-row p{max-width:72ch;margin:0;line-height:1.4}.evidence-link{display:inline-flex;align-items:center;width:fit-content;min-height:2.75rem;color:var(--signal-deep);font-size:.75rem;font-weight:900;letter-spacing:.04em;text-decoration:none;text-transform:uppercase}.evidence-link:hover{background:var(--signal);color:var(--ink)}.achievement-row p a{color:var(--signal-deep);font-weight:800;text-decoration-thickness:1px;text-underline-offset:.16em}.achievement-row strong{display:flex;align-items:center;min-width:0;font-size:clamp(1.15rem,2.15vw,1.85rem);line-height:.95;text-transform:uppercase;overflow-wrap:break-word;transition:color .16s var(--ease-out)}.achievement-row:hover,.achievement-row:focus-within{background:color-mix(in srgb,var(--signal),transparent 91%)}.achievement-row:hover>span,.achievement-row:focus-within>span{background:var(--ink);color:var(--paper)}.achievement-row:hover strong,.achievement-row:focus-within strong{color:var(--signal-deep)}.build-link,.contact a{display:inline-flex;align-items:center;min-height:2.75rem;color:var(--signal-deep);font-size:.75rem;font-weight:900;letter-spacing:.04em;text-transform:uppercase;text-decoration:none}.build-link:hover,.contact a:hover{background:var(--signal);color:var(--ink)}.tag-row{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-3)}.tag{display:inline-flex;border:1px solid var(--rule);padding:.2rem .45rem}.tag.signal{background:var(--signal)}.build-link{display:inline-flex;width:fit-content;margin-top:var(--space-4)}.build-link.unavailable{color:var(--muted)}.rail-build-case{border-bottom:1px solid var(--rule)}.rail-build-case:last-child{border-bottom:0}.rail-build-case summary{position:relative;display:grid;grid-template-columns:3.25rem minmax(0,1fr);gap:var(--space-3);align-items:center;min-height:6.25rem;padding:var(--space-3) 2.75rem var(--space-3) var(--space-3);cursor:pointer;list-style:none;transition:background-color .16s var(--ease-out)}.rail-build-case summary::-webkit-details-marker{display:none}.rail-build-case summary:after{content:"+";position:absolute;right:var(--space-3);top:50%;display:inline-flex;align-items:center;justify-content:center;width:1.6rem;height:1.6rem;border:1px solid var(--rule);font-size:.95rem;font-weight:900;line-height:1;transform:translateY(-50%)}.rail-build-case[open] summary:after{content:"-"}.rail-build-case summary:hover,.rail-build-case:focus-within summary{background:color-mix(in srgb,var(--signal),transparent 90%)}.build-mark-mini{display:flex;align-items:center;justify-content:center;width:3.25rem;height:3.25rem;border:1px solid var(--rule);background:var(--ink);color:var(--paper);font-family:var(--font-display);font-size:1.7rem;letter-spacing:-.035em;line-height:1}.build-mark-mini.has-logo{overflow:hidden;background:var(--paper);color:inherit}.build-mark-mini img{width:100%;height:100%;object-fit:cover;filter:none}.rail-build-summary{display:grid;gap:var(--space-1)}.rail-build-summary h3{font-family:var(--font-display);font-size:clamp(1.45rem,2vw,2rem);font-weight:400;letter-spacing:-.02em;line-height:.95}.rail-build-summary h3,.rail-build-summary span,.rail-build-body p{margin:0}.rail-build-summary>span:not(.tag){color:var(--muted);font-size:.82rem;font-weight:800;line-height:1.2}.rail-build-summary .tag{width:fit-content}.rail-build-body{display:grid;gap:var(--space-3);padding:var(--space-3);border-top:1px solid var(--rule)}.tag-row.compact{margin-bottom:0}.rail-build-body p{font-size:.86rem;line-height:1.38}.rail-build-body .build-link{margin-top:0}.contact-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}.contact-grid>*{display:grid;gap:var(--space-2);min-height:5rem;margin:0;padding:var(--space-4);border-right:1px solid var(--rule);text-decoration:none;transition:background-color .16s var(--ease-out)}.contact-grid>*:last-child{border-right:0}.contact span{color:var(--muted)}.contact-grid strong{color:var(--ink);font-size:.9rem;font-weight:800;letter-spacing:0;line-height:1.2;text-transform:none;overflow-wrap:break-word}.contact-grid a:hover,.contact-grid a:focus-visible{background:var(--signal)}.contact-grid a:hover span,.contact-grid a:focus-visible span{color:var(--ink)}.contact-thesis{max-width:68ch;margin:0;padding:var(--space-4);border-bottom:1px solid var(--rule);font-family:var(--font-display);font-size:clamp(1.6rem,3vw,2.65rem);font-weight:400;letter-spacing:-.02em;line-height:1}.copyright{margin:0;padding:var(--space-2) var(--space-4);border-top:1px solid var(--rule);text-align:right}@keyframes ticker-run{to{transform:translate(-50%)}}@keyframes portrait-mesh-drift{0%{transform:translate3d(-.4%,-.2%,0) rotate(-.18deg) scale(1.002)}to{transform:translate3d(.65%,.45%,0) rotate(.22deg) scale(1.008)}}@keyframes mesh-signal-run{to{stroke-dashoffset:-30}}@keyframes mesh-node-pulse{0%,to{opacity:.56}45%{opacity:1}}@keyframes portrait-scan-drift{to{background-position:1.8rem 0,.35rem 1.4rem}}@media(max-width:980px){.site-nav{align-items:flex-start}.site-nav p{display:none}.hero{grid-template-columns:1fr;grid-template-areas:"name" "portrait" "claim"}.hero-name,.hero-claim{border-right:0}.portrait-card{min-height:auto}.portrait-frame img{max-height:34rem}.portrait-mesh{inset:-4% -1% 0;width:102%;height:106%}.profile-snapshot,.contact-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.profile-snapshot span:nth-child(2n),.contact-grid>*:nth-child(2n){border-right:0}.profile-snapshot span:nth-child(-n+2),.contact-grid>*:nth-child(-n+2){border-bottom:1px solid var(--rule)}.record-layout{grid-template-columns:1fr}.work,.accordion-stack,.work-case{display:block}.right-rail{border-top:1px solid var(--rule);border-left:0}}@media(max-width:700px){.page-shell{border-inline:0}.site-nav{position:static;display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--space-2) var(--space-4)}.nav-links{grid-column:1 / -1;flex-wrap:wrap;justify-content:flex-start;gap:var(--space-2);overflow:visible}.portrait-meta{gap:var(--space-2)}.portrait-meta span{font-size:.68rem}h1{font-size:clamp(3rem,13vw,3.75rem);max-width:7ch}.hero,.hero-name,.portrait-card,.hero-claim{width:100vw;max-width:100vw;overflow-x:hidden}.hero-claim p:last-child{max-width:31ch}.portrait-meta span:last-child{display:none}.portrait-mesh{opacity:.62}.mesh-signal path{opacity:.62}.hero-claim h2{font-size:clamp(2.25rem,12vw,4rem)}.contact .section-head{display:grid;align-items:start;justify-content:start}.contact .section-head p{text-align:left}.profile-snapshot,.contact-grid{grid-template-columns:1fr}.contact-grid>*,.profile-snapshot span,.achievement-row>*{border-right:0}.profile-snapshot span{min-height:3.5rem;border-bottom:1px solid var(--rule)}.profile-snapshot span:last-child{border-bottom:0}.work-case summary{grid-template-columns:4rem minmax(0,1fr);min-height:14rem;height:auto;padding-right:2.8rem}.case-topline{display:grid;gap:var(--space-2)}.case-period{text-align:left;white-space:normal}.achievement-row{grid-template-columns:3.5rem minmax(0,1fr)}.achievement-row strong{grid-column:2;border-top:1px solid var(--rule);color:var(--signal-deep)}.evidence-link,.build-link{display:inline-flex;min-height:2.75rem;align-items:center}.contact-grid>*{border-bottom:1px solid var(--rule)}.contact-grid>*:last-child{border-bottom:0}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.ticker-track{animation:none!important;transform:none!important}.portrait-frame:after,.portrait-mesh,.mesh-signal path,.mesh-nodes circle{animation:none!important}}
