@property --accent{syntax: "<color>"; inherits: true; initial-value: #7cc4ff;}:root{--bg: #07080d;--panel: #10121b;--ink: #f2f3f7;--muted: #a9aebd;--line: #2a2e3d;--accent: #7cc4ff;--display: "Bricolage Grotesque", system-ui, sans-serif;--body: "Hanken Grotesk", system-ui, sans-serif;--mono: "IBM Plex Mono", monospace;--gutter: clamp(16px, 4vw, 56px);--swap: .9s cubic-bezier(.4, 0, .2, 1);transition:--accent var(--swap)}html[data-accent=industry]{--accent: #ff9a5c}@media screen{html.js[data-view=research] .only-industry,html.js[data-view=industry] .only-research{display:none!important}}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:84px;background:var(--bg)}body{margin:0;color:var(--ink);font:400 17px/1.6 var(--body);-webkit-font-smoothing:antialiased;overflow-x:clip}a{color:inherit;text-underline-offset:4px}h1,h2,h3{margin:0;font-family:var(--display);font-weight:600;letter-spacing:-.02em}button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.skip{position:fixed;top:-80px;left:12px;z-index:100;padding:9px 13px;background:var(--ink);color:var(--bg)}.skip:focus{top:12px}.site-header{position:fixed;inset:0 0 auto;z-index:30;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:16px;padding:14px var(--gutter);transition:background .4s,backdrop-filter .4s}.site-header.scrolled{background:#07080dd9;backdrop-filter:blur(14px)}.brand{font:600 1rem var(--display);text-decoration:none;white-space:nowrap}.switch{position:relative;display:grid;grid-template-columns:1fr 1fr;padding:4px;border:1px solid var(--line);border-radius:99px;background:#10121bcc;font:500 .9rem var(--body)}.switch button{position:relative;min-width:104px;padding:8px 18px;color:var(--muted);transition:color var(--swap)}.switch button[aria-pressed=true]{color:var(--bg)}.switch-thumb{position:absolute;top:4px;bottom:4px;left:4px;width:calc(50% - 4px);border-radius:99px;background:var(--accent);transition:transform var(--swap)}html[data-accent=industry] .switch-thumb{transform:translate(100%)}.site-header nav{display:flex;justify-content:flex-end;gap:22px;color:var(--muted);font-size:.9rem;white-space:nowrap}.site-header nav a{text-decoration:none;transition:color .2s}.site-header nav a:hover{color:var(--ink)}.scene{display:none}html.has-scene .scene{position:fixed;inset:0;z-index:-1;display:block;width:100%;height:100%}.hero{position:relative;display:flex;flex-direction:column;align-items:center;gap:32px;padding:120px var(--gutter) 32px}.orbit-center{z-index:2;text-align:center;pointer-events:none}.center-rest,.center-hover{display:flex;flex-direction:column;align-items:center;justify-content:center}.center-hover{display:none}.hero h1{font-size:clamp(2.2rem,3.4vw,3rem);font-weight:700;line-height:1.02;letter-spacing:-.035em}.center-title{margin:0;color:var(--accent);font:600 clamp(1.5rem,2.6vw,2.3rem) / 1.1 var(--display);letter-spacing:-.02em}.center-kicker{margin:0 0 8px;color:var(--muted);font:500 .78rem var(--mono);letter-spacing:.08em;text-transform:uppercase}.center-note{margin:10px 0 0;font-size:1rem;line-height:1.4}.center-roles{margin:10px 0 0;color:var(--accent);font-size:1rem;font-weight:500;line-height:1.35}.hero-lines{display:grid}.center-roles span{display:block}.hero-line{grid-area:1 / 1;margin:0;opacity:0;visibility:hidden;transform:translateY(8px);transition:opacity .7s,transform .7s,visibility .7s}html[data-accent=research] .line-research,html[data-accent=industry] .line-industry{opacity:1;visibility:visible;transform:none;transition-delay:.3s}.ring-marks{display:none}.cats{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));align-items:start;gap:12px;width:min(1100px,100%)}html.js:not(.has-scene)[data-accent=research] .cat-industry,html.js:not(.has-scene)[data-accent=industry] .cat-research{display:none}.cat{padding:14px 16px 16px;border:1px solid var(--line);border-radius:14px;background:#10121bd9}.cat-name{margin:0 0 10px;color:var(--accent);font:500 .8rem/1.3 var(--mono);letter-spacing:.08em;text-transform:uppercase}.cat ul{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none}.cat a{display:block;padding:5px 12px;border:1px solid var(--line);border-radius:99px;font:500 .96rem/1.3 var(--body);text-decoration:none;transition:color .2s,border-color .2s,opacity .25s}.cat a:hover,.cat a:focus-visible{border-color:var(--accent);color:var(--accent)}.hero-copy{z-index:2;width:100%;text-align:center}.hero-copy .hero-lines{max-width:980px;text-wrap:balance;margin:0 auto;font-size:clamp(1.02rem,1.3vw,1.16rem);line-height:1.45}.hero .social{justify-content:center;margin-top:14px}.hero .social a{padding:7px 16px;font-size:.92rem}.hint{display:none}@media(min-width:861px){html.has-scene .hero{display:block;height:100svh;min-height:700px;padding:0;overflow:clip;touch-action:pan-y;cursor:grab;user-select:none}html.has-scene .hero:active{cursor:grabbing}html.has-scene .orbit-center{position:absolute;top:50%;left:50%;width:min(22vw,310px);height:170px;transform:translate(-50%,-50%)}html.has-scene .center-rest,html.has-scene .center-hover{position:absolute;inset:0;display:flex;opacity:0;transform:translateY(6px);transition:opacity .35s,transform .35s}html.has-scene .center-rest.is-on,html.has-scene .center-hover.is-on{opacity:1;transform:none}html.has-scene .ring-marks{position:absolute;inset:0;z-index:1;display:block;width:100%;height:100%;overflow:visible;pointer-events:none}.ring-marks .marks-research{--mark: #7cc4ff}.ring-marks .marks-industry{--mark: #ff9a5c}.cat-bracket,.cat-ticks{fill:none;stroke:var(--mark);stroke-linecap:round}.cat-bracket{stroke-width:2}.cat-ticks{stroke-width:1;stroke-opacity:.65}.cat-curve{fill:var(--mark);font:500 14px var(--mono);letter-spacing:.14em;text-anchor:middle;text-transform:uppercase;paint-order:stroke;stroke:var(--bg);stroke-width:4px}html.has-scene .cats{display:block;width:auto}html.has-scene .cat{padding:0;border:0;background:none;opacity:0;text-shadow:0 0 10px var(--bg),0 0 3px var(--bg)}html.has-scene .cat-name{position:absolute;width:1px;height:1px;margin:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}html.has-scene .cat ul{display:block}html.has-scene .cat a{position:absolute;top:0;left:0;z-index:3;padding:4px 6px;border:0;border-radius:6px;font-size:1.04rem;white-space:nowrap;will-change:transform}html.has-scene .cats:has(a:hover) .cat:not(:has(a:hover)) a{opacity:.35}html.has-scene .hero-copy{position:absolute;right:0;bottom:38px;left:0;padding-inline:var(--gutter);pointer-events:none;text-shadow:0 0 10px var(--bg),0 0 3px var(--bg)}html.has-scene .hero .social a{pointer-events:auto;text-shadow:none}html.has-scene .hint{position:absolute;right:0;bottom:10px;left:0;display:block;margin:0;color:var(--muted);font:400 .76rem var(--mono);text-align:center;pointer-events:none}}@media(max-width:860px){html.has-scene .scene{position:absolute;inset:0 0 auto;height:100svh}html.has-scene .hero{align-items:stretch;min-height:100svh;padding-top:50svh;touch-action:pan-y}html.has-scene .orbit-center{position:absolute;left:50%;width:40vw;transform:translate(-50%,-50%)}html.has-scene .center-rest,html.has-scene .center-hover{display:none}html.has-scene .center-rest.is-on,html.has-scene .center-hover.is-on{display:flex}html.has-scene .hero h1{font-size:1.4rem}html.has-scene .center-roles,html.has-scene .center-note{margin-top:6px;font-size:.78rem}html.has-scene .center-title{font-size:1.1rem}html.has-scene[data-accent=research] .cat-industry,html.has-scene[data-accent=industry] .cat-research{display:none}.cats{grid-template-columns:minmax(0,1fr);order:2}}.block{width:min(1240px,100%);margin:0 auto;padding:clamp(64px,9vw,120px) var(--gutter) 0}.block-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:6px 24px;margin-bottom:clamp(24px,3vw,40px)}.block-head h2,.contact h2{font-size:clamp(2rem,4.2vw,3.6rem);line-height:1.05;letter-spacing:-.03em}.deck-help{margin:0;color:var(--muted);font:400 .76rem var(--mono)}.stage{--tx: 0;--ty: 0;position:relative;width:100vw;margin-left:calc(50% - 50vw);overflow-x:clip;height:clamp(230px,40vw,500px);perspective:1500px;perspective-origin:50% 40%;touch-action:pan-y;user-select:none;cursor:grab}.stage:active{cursor:grabbing}.deck-card{--x: 0%;--z: 0px;--ry: 0deg;--fade: 1;position:absolute;top:0;bottom:0;left:50%;width:min(70%,800px);padding:0;opacity:var(--fade);transform:translate(-50%) translate(var(--x)) translateZ(var(--z)) rotateY(var(--ry));transform-style:preserve-3d;transition:transform .95s cubic-bezier(.22,.8,.2,1),opacity .8s}.deck-frame{display:block;width:100%;height:100%;overflow:hidden;border:1px solid var(--line);border-radius:14px;background:#fff;box-shadow:0 30px 70px -34px #000;transition:transform .3s ease-out,box-shadow .6s}.deck-card.is-active .deck-frame{box-shadow:0 40px 90px -30px #000;transform:rotateY(calc(var(--tx) * 6deg)) rotateX(calc(var(--ty) * -5deg))}.deck-frame img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none}.fit-dark{background:#000}.fit-top img{object-fit:cover;object-position:center top}.fit-zoom img{object-fit:cover;transform:scale(1.42)}.deck-controls{display:flex;justify-content:center;align-items:center;gap:16px;margin-top:22px;color:var(--muted);font:400 .82rem var(--mono)}.deck-controls button{width:42px;height:42px;border:1px solid var(--line);border-radius:50%;background:var(--panel);transition:border-color .2s,color .2s}.deck-controls button:hover{border-color:var(--accent);color:var(--accent)}.panels{position:relative;max-width:860px;margin:26px auto 0;transition:height .55s cubic-bezier(.22,.8,.2,1)}.panel{position:absolute;inset:0 0 auto;opacity:0;transform:translateY(14px);transition:opacity .45s,transform .55s cubic-bezier(.22,.8,.2,1);pointer-events:none}.panel.is-active{opacity:1;transform:none;transition-delay:.12s;pointer-events:auto}.panel-top{display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px 16px;color:var(--muted);font:400 .78rem var(--mono)}.panel-top a{color:var(--accent)}.panel h3{margin-top:10px;font-size:clamp(1.5rem,3vw,2.3rem);line-height:1.1}.panel-summary{margin:10px 0 18px;font-size:1.08rem}.panel p{margin-block:0 10px}.panel-context{color:var(--muted)}.panel-context b{color:var(--ink);font-weight:600}.tabs{display:flex;gap:4px;margin-bottom:16px;border-bottom:1px solid var(--line)}.tabs button{margin-bottom:-1px;padding:8px 12px;border-bottom:2px solid transparent;color:var(--muted);font-size:.92rem;font-weight:500;transition:color .2s,border-color .2s}.tabs button:hover{color:var(--ink)}.tabs button[aria-selected=true]{border-color:var(--accent);color:var(--ink)}[data-tab-body]{animation:tab-in .45s ease-out}@keyframes tab-in{0%{opacity:0;transform:translateY(8px)}}.tab-system{max-width:620px}.diagram-note{margin-top:8px!important;color:var(--muted);font:400 .74rem var(--mono)}.chips{display:flex;flex-wrap:wrap;gap:7px;margin:0;padding:0;list-style:none;font:400 .8rem var(--mono)}.chips[hidden]{display:none}.chips li{padding:5px 10px;border:1px solid var(--line);border-radius:99px;background:var(--panel)}.diagram{display:block;width:100%;height:auto;border:1px solid var(--line);border-radius:10px;background:var(--panel)}.diagram-edge{stroke:var(--line);stroke-width:1.4;fill:none}.diagram-head{fill:var(--muted)}.diagram-flow{stroke:var(--accent);stroke-width:2;stroke-linecap:round;stroke-dasharray:3 24;fill:none;animation:dash 1.4s linear infinite}@keyframes dash{to{stroke-dashoffset:-27}}.diagram-node{fill:var(--bg);stroke:var(--muted);stroke-width:1}.diagram-label{fill:var(--ink);font:500 12px var(--mono);letter-spacing:-.03em}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px}.stat{padding:22px;border:1px solid var(--line);border-radius:14px;background:var(--panel)}.stat b{display:block;color:var(--accent);font:600 clamp(3rem,6vw,5rem) / 1 var(--display)}.stat span{color:var(--muted)}.row-group+.row-group{margin-top:clamp(32px,4vw,52px)}.group-name{margin-bottom:12px;color:var(--accent);font:500 .76rem var(--mono);letter-spacing:.08em;text-transform:uppercase}.rows,.pubs{margin:0;padding:0;list-style:none}.row,.pubs>li{border-top:1px solid var(--line);scroll-margin-top:100px}.row:last-child,.pubs>li:last-child{border-bottom:1px solid var(--line)}.row>button{display:grid;grid-template-columns:130px minmax(0,1fr) 24px;gap:8px 24px;align-items:start;width:100%;padding:20px 0;text-align:left;transition:padding .35s cubic-bezier(.22,.8,.2,1)}.row>button:hover{padding-left:12px}.row-date{color:var(--muted);font:400 .8rem/1.9 var(--mono)}.row-main{display:grid}.row-title{font:600 clamp(1.15rem,2vw,1.5rem) / 1.2 var(--display);transition:color .2s}.row>button:hover .row-title{color:var(--accent)}.row-org{color:var(--muted)}.row-icon{position:relative;width:16px;height:16px;margin-top:6px}.row-icon:before,.row-icon:after{content:"";position:absolute;top:7px;left:0;width:16px;height:2px;background:var(--muted);transition:transform .4s}.row-icon:after{transform:rotate(90deg)}.is-open .row-icon:after{transform:rotate(0)}.row-body{display:grid;grid-template-rows:0fr;opacity:0;visibility:hidden;transition:grid-template-rows .5s cubic-bezier(.22,.8,.2,1),opacity .4s,visibility .5s}.row-body>div{overflow:hidden;padding-left:154px;max-width:900px}.is-open .row-body{grid-template-rows:1fr;opacity:1;visibility:visible}.row-body p{margin:0 0 8px}.row-body ul{margin:0 0 10px;padding-left:18px}.row-body a{display:inline-block;margin-bottom:22px;color:var(--accent)}.row-body>div>:last-child{margin-bottom:22px}.flash{animation:flash 1.6s ease-out}@keyframes flash{0%,30%{background:color-mix(in srgb,var(--accent) 18%,transparent)}}.pubs a{display:grid;grid-template-columns:130px minmax(0,1fr) 24px;gap:8px 24px;padding:22px 0;text-decoration:none;transition:padding .35s cubic-bezier(.22,.8,.2,1)}.pubs a:hover{padding-left:12px}.pub-main{display:grid}.pub-status{color:var(--accent);font:400 .76rem var(--mono)}.pub-title{margin:4px 0;font:600 clamp(1.1rem,1.9vw,1.4rem) / 1.25 var(--display)}.pub-note{color:var(--muted)}.pub-arrow{color:var(--muted);transition:transform .3s,color .3s}.pubs a:hover .pub-arrow{color:var(--accent);transform:translate(3px,-3px)}.edu{display:grid;grid-template-columns:130px minmax(0,1fr);gap:8px 24px;padding-block:20px;border-top:1px solid var(--line)}.edu h3{font-size:clamp(1.15rem,2vw,1.5rem)}.edu p{margin:6px 0}.skills{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:20px;margin:12px 0 0;padding-top:22px;border-top:1px solid var(--line)}.skills dt{color:var(--accent);font:400 .8rem var(--mono)}.skills dd{margin:4px 0 0}.contact{width:min(1240px,100%);margin:clamp(80px,11vw,150px) auto 0;padding-inline:var(--gutter)}.contact h2{max-width:15em;text-wrap:balance}.social{display:flex;flex-wrap:wrap;gap:10px;margin-top:28px}.social a{padding:11px 22px;border:1px solid var(--line);border-radius:99px;background:var(--panel);font-weight:500;text-decoration:none;transition:background .2s,border-color .2s,color .2s}.social a:hover{border-color:var(--accent);background:var(--accent);color:var(--bg)}footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 24px;width:min(1240px,100%);margin:64px auto 0;padding:22px var(--gutter) 32px;color:var(--muted);font-size:.84rem}footer b{font-weight:inherit}.reveal.armed{opacity:0;transform:translateY(20px);transition:opacity .7s,transform .8s cubic-bezier(.2,.7,.2,1)}.reveal.armed.in{opacity:1;transform:none}@media(max-width:860px){.site-header{grid-template-columns:1fr auto;padding-block:10px}.site-header nav{grid-column:1 / -1;justify-content:flex-start;overflow-x:auto;scrollbar-width:none}.switch button{min-width:0;padding:6px 14px}.switch{font-size:.82rem}.row>button,.pubs a,.edu{grid-template-columns:minmax(0,1fr)}.row>button{grid-template-columns:minmax(0,1fr) 24px}.row-date{grid-column:1 / -1;line-height:1.3}.row-body>div{padding-left:0}.pub-arrow{display:none}.deck-card{width:80%}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}:root{transition:none}*,:before,:after{animation:none!important;transition:none!important}}@media print{html,body{background:#fff;color:#000}:root,html[data-accent=industry]{--ink: #000;--muted: #444;--line: #bbb;--accent: #000;--panel: #fff;--bg: #fff}.site-header,.skip,.scene,.cats,.hint,.center-hover,.hero .social,.stage,.deck-controls,.tabs,.tab-system,footer a{display:none!important}.hero,html.has-scene .hero{display:block;height:auto;min-height:0;padding:0}.orbit-center,.hero-copy{position:static!important;width:auto!important;height:auto!important;text-align:left;transform:none!important}.center-rest{position:static!important;align-items:flex-start;opacity:1!important}.hero-copy .hero-lines{max-width:none;margin:0}.hero-line{grid-area:auto;opacity:1!important;visibility:visible!important;transform:none!important}.panels{height:auto!important;max-width:none}.panel{position:static;margin-bottom:20px;opacity:1;transform:none;break-inside:avoid}[data-tab-body][hidden]:not(.tab-system,.chips){display:block!important}.chips[hidden]{display:flex!important}.row-body{grid-template-rows:1fr;opacity:1;visibility:visible}.reveal.armed{opacity:1;transform:none}}
