@font-face{font-family:Inter;font-style:normal;font-weight:300 800;font-display:swap;src:url(/static/fonts/inter-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter Fallback;font-style:normal;font-weight:300 400;src:local(Helvetica Neue),local(Arial);size-adjust:104.85%;ascent-override:92.39%;descent-override:23.01%;line-gap-override:0%}@font-face{font-family:Inter Fallback;font-style:normal;font-weight:500;src:local(Helvetica Neue),local(Arial);size-adjust:106.9%;ascent-override:90.62%;descent-override:22.56%;line-gap-override:0%}@font-face{font-family:Inter Fallback;font-style:normal;font-weight:600;src:local(Helvetica Neue Bold),local(Arial Bold);size-adjust:100.7%;ascent-override:96.2%;descent-override:23.95%;line-gap-override:0%}@font-face{font-family:Inter Fallback;font-style:normal;font-weight:700 800;src:local(Helvetica Neue Bold),local(Arial Bold);size-adjust:97.6%;ascent-override:99.26%;descent-override:24.71%;line-gap-override:0%}:root{--canvas:#f6f7fb;--surface:#fff;--surface-2:#eef1f7;--ink:#0b0f19;--ink-2:#2a3140;--muted:#525b6c;--line:#e3e7ef;--line-soft:#eef1f7;--accent:#3f5ec2;--accent-ink:#2c48a9;--accent-mid:#6a7ccd;--accent-soft:#9ab0e5;--accent-tint:#dbe6f6;--accent-deep:#14185a;--hot:#e0603f;--live:#16a34a;--night:#0a0f32;--night-2:#151c4a;--night-line:#ffffff1f;--on-night:#fff;--on-night-2:#b8c0d4;--on-night-label:#9ab0e5;--accent-night:#9ab0e5;--aurora-indigo:#9ab0e557;--aurora-peach:#eab39f4d;--glass-fill:linear-gradient(#fff9, #ffffff80);--glass-solid:#fffffff0;--glass-filter:blur(18px) saturate(1.3);--glass-edge:#fffc;--glass-sheen:radial-gradient(130% 90% at 0% 0%, #ffffff57, #fff0 46%);--glass-rim:inset 0 1px 0 #ffffffe6;--glass-shadow:0 0 0 1px #0b0f190d, 0 1px 2px #0b0f190d, 0 22px 44px -30px #0b0f1947;--glass-inner:#ffffff80;--glass:var(--glass-sheen), var(--glass-solid);--glass-blur:none;--font:"Inter", "Inter Fallback", "Helvetica Neue", Arial, sans-serif;--gutter:clamp(16px, 4vw, 48px);--wide:clamp(0px, 100vw - 1440px, 1120px);--wide-share:tan(atan2(var(--wide), 1120px));--max:calc(1120px + var(--wide) * .9);--radius:18px;--radius-tile:16px;--radius-box:22px;--radius-media:10px;--media-inset:7px;--shadow-lift:0 22px 44px -28px #0b0f194d;--shadow-float:0 44px 70px -40px #0b0f1973;--night-rim:inset 1px 1px 1px #ffffff24, inset -1px -1px 1px #ffffff0f;--ease-out:cubic-bezier(.16, 1, .3, 1);--motion-fast:.16s;--motion-standard:.24s;--motion-panel:.4s;--motion-morph:.42s;--ease-smooth:cubic-bezier(.22, 1, .36, 1);--ease-spring:cubic-bezier(.34, 1.36, .5, 1);--header-h:64px;--glow-x:30vw;--glow-y:30vh;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@supports (transition-timing-function:linear(0, 1)){:root{--ease-spring:linear(0, .38 9%, .8 18%, 1.05 28%, 1.1 34%, 1.03 46%, .98 58%, 1.005 75%, 1)}}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + 24px);-webkit-text-size-adjust:100%}body{background:var(--canvas);min-height:100dvh;color:var(--ink);font-family:var(--font);font-size:calc(16px + var(--wide) * .0018);font-optical-sizing:auto;-webkit-font-smoothing:antialiased;flex-direction:column;margin:0;line-height:1.6;display:flex}a{color:inherit;text-decoration:none}button,input{font:inherit;color:inherit}h1,h2,h3,h4{letter-spacing:-.03em;margin:0;font-weight:700;line-height:1.05}p,ul,ol,dl,dd,figure{margin:0}ul,ol{padding:0}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}main{flex:1 0 auto}main:focus{outline:none}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:100;background:var(--ink);color:var(--surface);border-radius:999px;padding:12px 18px;font-weight:600;position:absolute;top:-64px;left:16px}.skip-link:focus{top:16px}.wrap{width:min(100% - 2 * var(--gutter), var(--max));margin-inline:auto}.icon{vertical-align:middle;flex-shrink:0;width:18px;height:18px}.line{display:block}.hero-title{font-size:clamp(40px, 4.4vw, calc(64px + var(--wide) * .0277));letter-spacing:-.035em;line-height:1.02}.hero-title .accent{color:var(--accent)}.section-title .accent,.band-night .section-title .accent{color:inherit}.page-title{font-size:clamp(36px, 3.6vw, calc(52px + var(--wide) * .023))}.section-title{font-size:clamp(30px, 2.8vw, calc(40px + var(--wide) * .0179))}.page-title .line,.hero-title .line{animation:none}@keyframes title-resolve{0%{opacity:.2;filter:blur(8px);translate:0 .08em}}.lede{font-size:clamp(17px, 1.3vw, calc(19px + var(--wide) * .0031));color:var(--muted);line-height:1.5}.label{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);align-items:center;gap:6px;font-size:12px;font-weight:600;display:inline-flex}.meta{color:var(--muted);align-items:center;gap:6px;font-size:13px;font-weight:500;display:inline-flex}.label>.icon,.meta>.icon{width:14px;height:14px;color:var(--muted)}.label>.icon-pin,.meta>.icon-pin{color:var(--hot)}.pill{background:var(--accent-tint);color:var(--accent-ink);letter-spacing:.04em;text-transform:uppercase;border-radius:999px;align-items:center;gap:6px;padding:5px 10px;font-size:12px;font-weight:600;display:inline-flex}.live-dot{background:var(--live);border-radius:999px;flex-shrink:0;width:8px;height:8px;animation:2.4s ease-out infinite live-ring;display:inline-block;box-shadow:0 0 0 4px #16a34a2e}@keyframes live-ring{0%{box-shadow:0 0 0 3px #16a34a38}70%{box-shadow:0 0 0 7px #16a34a00}to{box-shadow:0 0 0 3px #16a34a00}}.stat-num{font-size:clamp(28px, 2.6vw, calc(36px + var(--wide) * .0161));letter-spacing:-.03em;font-variant-numeric:tabular-nums;font-weight:700;line-height:1}.stat-num i{color:var(--accent);font-style:normal}.count-value{display:inline-block;position:relative}.count-base{opacity:0}.count-roll{pointer-events:none;display:flex;position:absolute;inset:0}.count-digit{flex:1;min-width:0;height:1em;overflow:hidden;-webkit-mask-image:linear-gradient(#0000,#000 12% 88%,#0000);mask-image:linear-gradient(#0000,#000 12% 88%,#0000)}.count-track,.count-glyph{display:block}.count-glyph{height:1em;line-height:1}.count-glyph:before{content:attr(data-digit)}body:before,body:after{content:"";z-index:-1;pointer-events:none;border-radius:50%;width:64vmax;height:64vmax;margin:-32vmax 0 0 -32vmax;position:fixed;top:0;left:0}body:before{background:radial-gradient(circle, var(--aurora-indigo) 0%, #9ab0e51f 36%, #fff0 68%);transform:translate3d(var(--glow-x), var(--glow-y), 0)}body:after{background:radial-gradient(circle, var(--aurora-peach) 0%, #eab39f1a 36%, #fff0 68%);transform:translate3d(calc(100vw - var(--glow-x)), calc(100vh - var(--glow-y)), 0)}.arrow-field{z-index:-1;pointer-events:none;width:100vw;height:100vh;position:fixed;top:0;left:0}@keyframes glow-drift{0%{transform:translate(22vw,28vh)}12.5%{transform:translate(28.24vw,30.08vh)}25%{transform:translate(46vw,36vh)}37.5%{transform:translate(63.76vw,41.92vh)}50%{transform:translate(70vw,44vh)}62.5%{transform:translate(65.84vw,48.16vh)}75%{transform:translate(54vw,60vh)}87.5%{transform:translate(42.16vw,71.84vh)}to{transform:translate(38vw,76vh)}}.site-header{z-index:20;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#f6f7fbe6;border-bottom:1px solid #0000;transition:border-color .25s;position:sticky;top:0}.site-header.is-scrolled{border-bottom-color:var(--line)}.header-inner{min-height:var(--header-h);justify-content:space-between;align-items:center;gap:24px;display:flex}.brand{letter-spacing:-.02em;align-items:center;gap:10px;min-height:40px;font-size:15px;font-weight:600;display:flex}.brand .brand-mark,.footer-name .brand-mark{width:24px;height:21px;color:var(--ink);flex-shrink:0}.primary-nav{align-items:center;gap:22px;font-size:14px;font-weight:500;display:flex}.primary-nav a{min-width:40px;min-height:40px;color:var(--muted);align-items:center;transition:color .2s;display:flex;position:relative}.primary-nav a:after{content:"";background:var(--accent);transform-origin:0;height:2px;transition:scale .3s var(--ease-out);border-radius:2px;position:absolute;bottom:7px;left:0;right:0;scale:0 1}.primary-nav a:hover{color:var(--ink)}.primary-nav a:hover:after,.primary-nav a[aria-current=page]:after{scale:1}.primary-nav a[aria-current=page]{color:var(--ink);font-weight:600}.primary-nav .nav-cv{display:none}@media (width>=1100px){.header-inner{grid-template-columns:1fr auto 1fr;display:grid}.header-inner>.brand{justify-self:start}.header-inner>.header-cv{justify-self:end}}.loader{display:none}.is-loading .loader,.loader.is-done{z-index:200;background:var(--canvas);transition:opacity .45s var(--ease-out), visibility .45s;place-items:center;display:grid;position:fixed;inset:0}.loader.is-done{opacity:0;visibility:hidden;pointer-events:none}.is-loading body{overflow:hidden}.loader-ring,.loader .loader-mark{grid-area:1/1}.loader-ring{width:168px;height:168px}.loader .loader-mark{width:56px;height:50px;color:var(--ink)}.loader-dot{fill:var(--line);transition:fill .25s}.loader-dot.is-lit{fill:var(--accent)}.loader-dot.is-lead{fill:var(--hot)}.menu-toggle{border:1px solid var(--line);background:var(--surface);cursor:pointer;border-radius:999px;justify-content:center;align-items:center;width:40px;height:40px;padding:0;display:none}.menu-toggle[aria-expanded=true]{background:var(--ink);border-color:var(--ink);color:var(--surface)}@media (width<=700px){:root{--header-h:60px}}@media (width<=1099px){:root:not(.nav-enhanced) .site-header{position:static}.site-header .header-cv{display:none}.nav-enhanced .menu-toggle{display:inline-flex}.primary-nav{flex-wrap:wrap;order:3;width:100%;padding-bottom:12px}.header-inner{flex-wrap:wrap}.nav-enhanced .primary-nav{max-height:calc(100vh - var(--header-h));max-height:calc(100dvh - var(--header-h));overscroll-behavior:contain;padding:8px var(--gutter) 20px;background:var(--canvas);border-bottom:1px solid var(--line);flex-direction:column;align-items:stretch;gap:0 32px;font-size:18px;font-weight:600;display:none;position:absolute;top:100%;left:0;right:0;overflow-y:auto;box-shadow:0 24px 40px -24px #0b0f194d}.nav-enhanced .primary-nav.is-open{display:flex}.nav-enhanced .primary-nav a{border-bottom:1px solid var(--line);min-height:52px;color:var(--ink);background:0 0;border-radius:0;padding:0}.nav-enhanced .primary-nav a:after{content:none}.nav-enhanced .primary-nav .nav-cv{background:var(--ink);min-height:48px;color:var(--surface);border:0;border-radius:999px;justify-content:center;gap:8px;margin-top:16px;font-size:14px;display:flex}}.btn{min-height:calc(40px + var(--wide) * .0071);padding:0 calc(16px + var(--wide) * .0036);font-size:calc(14px + var(--wide) * .0018);white-space:nowrap;cursor:pointer;border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;gap:8px;font-weight:600;line-height:1;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s,transform .15s;display:inline-flex}.btn .icon{width:16px;height:16px}.btn-small{min-height:34px;padding:0 13px;font-size:13px}@media (width<=700px){.btn-small{min-height:40px}}.btn-ink{background:var(--ink);color:var(--surface)}.btn-ink:hover{background:var(--accent)}.btn-ghost{border-color:var(--line);color:var(--ink);background:#fff9}.btn-ghost:hover{border-color:var(--ink);background:var(--surface)}.band-night .btn-ghost{border-color:var(--night-line);color:var(--on-night);background:0 0}.band-night .btn-ghost:hover{border-color:var(--on-night-2);background:#ffffff0f}.btn-paper{background:var(--surface);color:var(--ink)}.btn-paper:hover{background:var(--accent-tint)}.btn:active{transform:scale(.97)}.button-row{flex-wrap:wrap;gap:10px;display:flex}.text-link{color:var(--accent-ink);align-self:flex-start;align-items:center;gap:6px;font-size:14px;font-weight:600;transition:color .2s;display:inline-flex}.text-link .icon{width:16px;height:16px}.text-link:hover{color:var(--ink)}@media (width<=700px){.text-link{min-height:40px;margin-block:-9px}}.arrow{transition:transform .35s var(--ease-out)}a:hover>.arrow,a:hover .card-arrow .arrow{transform:translate(3px)}a[target=_blank]:hover>.arrow{transform:translate(2px,-2px)}.card{border-radius:var(--radius)}.card--link{transform:translateY(var(--lift,0px));transition:transform .35s var(--ease-out), box-shadow .35s var(--ease-out), border-color .25s ease}.card--link:is(:focus-visible,:has(:focus-visible)){--lift:-3px;box-shadow:var(--glass-rim), var(--shadow-lift);border-color:#fff}.panel{border-radius:var(--radius);flex-direction:column;gap:12px;padding:28px;display:flex}.panel h3,.panel h2{letter-spacing:-.02em;font-size:20px;font-weight:600;line-height:1.2}.panel-head{align-items:center;gap:12px;display:flex}.icon-tile{background:var(--accent-tint);width:40px;height:40px;color:var(--accent-ink);border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;transition:background-color .25s,color .25s;display:flex}.icon-tile .icon,.icon-tile .brand-mark{width:20px;height:20px}.panel:hover .icon-tile{background:var(--accent);color:var(--surface)}.tile{border-radius:var(--radius-tile);flex-direction:column;gap:8px;padding:20px;display:flex}.rows{flex-direction:column;display:flex}.row{border-top:1px solid var(--line);grid-template-columns:44px minmax(0,1fr) auto;align-items:center;column-gap:14px;padding:14px 0;display:grid}.rows>.row:last-child{border-bottom:1px solid var(--line)}.row-tile{border:1px solid var(--line);background:var(--surface);letter-spacing:-.02em;border-radius:12px;justify-content:center;align-items:center;width:44px;height:44px;font-size:12px;font-weight:700;display:flex}.row-tile--ink{background:var(--ink);border-color:var(--ink);color:var(--surface)}.row>.row-tile{align-self:start}.row-tile[data-lifeline-node]:not(.row-tile--ink){border-color:var(--accent);transition:border-color .3s}[data-lifeline].is-live .row-tile[data-lifeline-node]:not(.row-tile--ink):not(.is-passed){border-color:var(--line)}.row-title{letter-spacing:-.01em;font-size:15px;font-weight:600;display:block}.row-sub{color:var(--muted);font-size:13px;display:block}.row-end{color:var(--muted);white-space:nowrap;text-align:right;font-size:12px;font-weight:500}.chips{flex-wrap:wrap;gap:6px;list-style:none;display:flex}.chips li{border:1px solid var(--line);min-height:26px;color:var(--muted);border-radius:999px;align-items:center;padding:0 10px;font-size:12px;font-weight:500;transition:border-color .2s,color .2s;display:flex}.chips:not(.tech-tags) li:hover{border-color:var(--ink);color:var(--ink)}.chips--large li{background:var(--surface);min-height:36px;color:var(--ink);padding:0 14px;font-size:14px}.card,.panel,.tile,.contact-box,.facts>div,.notice-frame,.channel,.card-fan-card,.row-tile--logo{background:var(--glass);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border:1px solid var(--glass-edge);box-shadow:var(--glass-rim), var(--glass-shadow)}@supports ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){:root{--glass:var(--glass-sheen), var(--glass-fill);--glass-blur:var(--glass-filter)}}.card .live-dot{animation-iteration-count:3}.project-card{--tone:var(--accent);background:linear-gradient(160deg, color-mix(in srgb, var(--tone) 9%, #ffffffc2), color-mix(in srgb, var(--tone) 4%, #ffffffa3));-webkit-backdrop-filter:blur(18px)saturate(1.15);backdrop-filter:blur(18px)saturate(1.15);border-color:color-mix(in srgb, var(--tone) 16%, #ffffffe0);flex-direction:column;display:flex;position:relative;overflow:hidden;container-type:inline-size}.card-grid--3>li:nth-child(2n)>.project-card{--tone:var(--hot)}@media (width>=701px) and (width<=1099px){.card-grid--3>li:nth-child(2n)>.project-card{--tone:var(--accent)}.card-grid--3>li:nth-child(4n+2)>.project-card,.card-grid--3>li:nth-child(4n+3)>.project-card{--tone:var(--hot)}}.card-grid--3>li>.project-card[data-tone=a]{--tone:var(--accent)}.card-grid--3>li>.project-card[data-tone=b]{--tone:var(--hot)}@media (prefers-reduced-transparency:reduce),(prefers-contrast:more){.project-card{background:var(--glass-sheen), var(--glass-solid);-webkit-backdrop-filter:none;backdrop-filter:none}}@media (forced-colors:active){.project-card{-webkit-backdrop-filter:none;backdrop-filter:none;background:canvas;border-color:canvastext}}@media print{.project-card{background:var(--surface);-webkit-backdrop-filter:none;backdrop-filter:none}}.project-card.is-viewable{cursor:pointer}.project-card-link{aspect-ratio:16/9;background:var(--surface-2);min-height:0;display:block}.project-card-link:focus-visible{outline-offset:-4px}.project-card-image{object-fit:contain;width:100%;height:100%;display:block}.project-card-badge{--badge-size:clamp(13px, 3.4cqi, 22px);top:calc((4.8cqi - var(--badge-size)) / 2);height:var(--badge-size);background:var(--surface);color:var(--ink);pointer-events:none;border:1px solid #0b0f1933;border-radius:999px;align-items:center;gap:.4em;padding:0 .7em;font-size:clamp(10.5px,2.6cqi,12px);font-weight:600;line-height:1;display:inline-flex;position:absolute;left:max(10px,2.4cqi)}.project-card-badge .icon{width:1.1em;height:1.1em;color:var(--accent-ink)}.project-card:target{outline:2px solid var(--accent);outline-offset:4px}:root:not(:has(.project-viewer[open])) .project-card:target{animation:.8s ease-in 1.6s forwards card-target}@keyframes card-target{to{outline-color:#0000}}.cover{aspect-ratio:16/9;object-fit:contain;border-radius:var(--radius-media);outline-offset:-1px;background:var(--surface-2);outline:1px solid #0b0f191a;width:100%;height:auto;display:block}.card-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;display:grid}@media (width<=900px){.card-grid{grid-template-columns:1fr}}.card-grid--3{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}@media (width<=1099px){.card-grid--3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=700px){.card-grid--3{grid-template-columns:1fr}}ul.card-grid,ol.card-grid{list-style:none}.card-grid>li{display:flex}.card-grid>li>.card{width:100%}.project-card-body{border-top:1px solid #0b0f190f;flex-direction:column;flex-grow:1;gap:8px;padding:18px 22px 10px;display:flex}.project-card-meta{justify-content:space-between;align-items:center;gap:12px;display:flex}.project-card-meta .label{line-height:1.33333}.card-arrow{border:1px solid var(--line);width:32px;height:32px;color:var(--ink);border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.card-arrow .icon{width:15px;height:15px}.project-card-title{font-size:clamp(18px, 1.5vw, calc(20px + var(--wide) * .0089));letter-spacing:-.02em;font-weight:600;line-height:1.2}.project-card-body p{color:var(--muted);font-size:14px;line-height:1.5}.project-card-contribution p{color:var(--ink);font-weight:600}.project-card-status{color:var(--ink-2);gap:4px;font-size:13px;line-height:1.5;display:grid}.project-card-action{min-height:44px;color:var(--accent-ink);text-underline-offset:4px;align-self:flex-start;align-items:center;gap:8px;margin:0 22px 12px;font-size:14px;font-weight:600;text-decoration:underline;display:inline-flex}.project-card>.tech-tags{padding:4px 22px 18px}.project-grid .project-card-contribution{flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin-top:4px;padding-top:8px;display:flex}.project-grid .project-card-contribution>p{font-weight:400}.project-grid .project-card-status{font-size:12px}.project-grid .project-card>.tech-tags{padding-bottom:8px}.project-card-more .project-card-links{margin-top:12px;padding:0}.project-card-links{flex-wrap:wrap;gap:6px 18px;padding:0 22px 18px;display:flex}.project-card-more{padding:0 22px 20px}.project-card-role{color:var(--ink-2);gap:4px;margin-bottom:12px;font-size:14px;line-height:1.5;display:grid}.project-card-highlights{color:var(--ink-2);gap:6px;padding-left:18px;font-size:14px;line-height:1.5;display:grid}.project-card-screen{margin-top:12px}.tech-tags li{--tech:var(--muted);color:var(--ink-2);gap:6px;padding:0 10px 0 8px}@supports (color:color-mix(in srgb, red, blue)){.tech-tags li{background:color-mix(in srgb, var(--tech) 10%, var(--surface));border-color:color-mix(in srgb, var(--tech) 25%, var(--surface))}}.tech-mark{width:14px;height:14px;color:var(--tech-mark,var(--tech));flex-shrink:0}.tech-tags .tech-extra{display:none}.tech-more{font-variant-numeric:tabular-nums;padding:0 9px}.ring{display:block;overflow:visible}.ring-track{fill:none;stroke:var(--line)}.ring-fill{fill:none;stroke:var(--accent);stroke-linecap:round;stroke-dasharray:var(--ring-c);stroke-dashoffset:var(--ring-off)}.ring-end{fill:var(--hot);stroke:var(--surface);stroke-width:2.5px}.band-night{background:var(--night);color:var(--on-night)}.band-night .lede,.band-night p{color:var(--on-night-2)}.band-night h2,.band-night h3{color:var(--on-night)}.band-night .chips li{border-color:var(--night-line);color:#d7dcec}.band-night .chips li:hover{border-color:var(--on-night-2);color:var(--on-night)}.band-night .text-link{color:var(--on-night)}.band-night .text-link:hover{color:var(--accent-night)}.band-night .contact-email{color:var(--on-night);border-bottom-color:var(--accent-soft)}.band-night .contact-email:hover{color:var(--accent-soft)}.night-panel{border:1px solid var(--night-line);border-radius:var(--radius);background:var(--night-2);box-shadow:var(--night-rim);padding:12px}.band-night--texture{--texture:url(/static/media/night-signal-1600.jpg);background:linear-gradient(#0a0f32cc, #0a0f32cc), var(--texture) var(--texture-pos,75% 60%) / cover no-repeat, var(--night)}@media (width<=700px){.band-night--texture{--texture:url(/static/media/night-signal-1280.jpg)}}.band-night--texture .night-panel{background:#151c4ab8}.contact-box{border-radius:var(--radius-box);grid-template-columns:1.2fr .8fr;align-items:center;gap:32px;padding:40px;display:grid}.contact-box h2{margin-top:8px}.contact-box .lede{font-size:calc(16px + var(--wide) * .0029);margin-top:10px}.contact-email{overflow-wrap:anywhere;max-width:100%;font-size:clamp(19px, 1.9vw, calc(24px + var(--wide) * .0043));letter-spacing:-.02em;color:var(--accent-ink);border-bottom:2px solid var(--accent);align-self:flex-start;margin-top:8px;padding-top:8px;font-weight:600;transition:color .2s;display:inline-block}.contact-email:hover{color:var(--ink)}.contact-actions{flex-direction:column;gap:10px;display:flex}.contact-actions .btn{justify-content:space-between}@media (width<=800px){.contact-box{grid-template-columns:1fr;padding:28px 22px}}.site-footer{--footer-top:#edeff5;--footer-bottom:#e6e9f1;--footer-line:#d3d8e3;border-top:1px solid var(--line);background:linear-gradient(180deg, var(--footer-top), var(--footer-bottom) 50%);overflow:clip;container-type:inline-size}.footer-inner{padding-top:70px}.footer-main{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:32px;display:flex}.footer-name{letter-spacing:-.02em;align-items:center;gap:9px;min-height:40px;font-size:16px;font-weight:600;display:flex}.footer-id>p{color:var(--muted);margin-top:10px;font-size:14px}.footer-side{flex-direction:column;align-items:flex-end;gap:10px;margin-left:auto;display:flex}.footer-meta{color:var(--muted);flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px 16px;font-size:13px;font-weight:500;display:flex}.footer-links{align-items:center;gap:24px;font-size:14px;font-weight:600;display:flex}.footer-links a{align-items:center;gap:6px;min-height:40px;transition:color .2s;display:inline-flex}.footer-links a:hover{color:var(--accent-ink)}.footer-links .icon{width:15px;height:15px}.footer-wordmark{--wordmark-em:6.79;--wordmark-ink:color-mix(in oklab, var(--accent) 35%, var(--ink));font-size:calc(min(100vw - 2 * var(--gutter), var(--max)) / var(--wordmark-em));font-size:calc(min(100cqi - 2 * var(--gutter), var(--max)) / var(--wordmark-em));letter-spacing:-.055em;white-space:nowrap;text-align:center;color:#c8cdd9;-webkit-user-select:none;user-select:none;pointer-events:none;margin:clamp(1.75rem,1.2rem + 2.4vw,3.5rem) 0 -.2em;font-weight:800;line-height:.82;display:block;translate:-.028em}@supports ((-webkit-background-clip:text) or (background-clip:text)) and (color:color-mix(in oklab, red, blue)){.footer-wordmark{color:#0000;background-image:linear-gradient(180deg, color-mix(in oklab, var(--wordmark-ink) 26%, transparent) 0, color-mix(in oklab, var(--wordmark-ink) 12%, transparent) 55%, transparent 92%);-webkit-background-clip:text;background-clip:text}}@media (width<=700px){.footer-side{align-items:stretch;gap:16px;width:100%;margin-left:0}.footer-meta{justify-content:flex-start}.footer-links{flex-direction:column;align-items:stretch;gap:0;width:100%}.footer-links a{border-top:1px solid var(--footer-line);justify-content:space-between;min-height:48px}.footer-links a:last-child{border-bottom:1px solid var(--footer-line)}}.toast{z-index:50;background:var(--ink);max-width:calc(100% - 32px);color:var(--surface);opacity:0;pointer-events:none;border-radius:999px;padding:12px 18px;font-size:14px;font-weight:500;transition:opacity .25s,transform .25s;position:fixed;bottom:24px;left:50%;transform:translate(-50%,16px)}.toast.is-visible{opacity:1;transform:translate(-50%)}@keyframes viewer-in{0%{opacity:0;translate:0 8px;scale:.96}}@keyframes viewer-fade{0%{opacity:0}}:root:has(.project-viewer[open]){overflow:hidden}.project-viewer{--viewer-width:calc(1180px + var(--wide) * .53);--viewer-height:calc(820px + var(--wide) * .3);--viewer-w:min(100% - 48px, var(--viewer-width));--viewer-h:min(100% - 48px, var(--viewer-height));width:min(100% - 48px, var(--viewer-width));height:min(100vh - 48px, var(--viewer-height));height:min(100dvh - 48px, var(--viewer-height));border:1px solid var(--line);border-radius:var(--radius-box);background:var(--surface);max-width:none;max-height:none;color:var(--ink);padding:0;box-shadow:0 48px 96px -48px #0b0f1999}.project-viewer[open]{animation:viewer-in var(--motion-panel) var(--ease-smooth)}.project-viewer::backdrop{background:#0b0f198f}.project-viewer[open]::backdrop{animation:viewer-fade var(--motion-fast) var(--ease-out)}.project-viewer-panel{grid-template-rows:minmax(0,1fr) auto;grid-template-columns:minmax(0,44%) minmax(0,1fr);height:100%;display:grid;position:relative}.project-viewer-button{border:1px solid var(--line);background:var(--surface);width:44px;height:44px;color:var(--ink);cursor:pointer;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:border-color .2s,background-color .2s;display:inline-flex}.project-viewer-button .icon{width:20px;height:20px}@media (hover:hover) and (pointer:fine){.project-viewer-button:hover{border-color:var(--ink);background:var(--surface-2)}}.project-viewer-panel>[data-viewer-close]{z-index:1;position:absolute;top:14px;right:14px}.project-viewer-media{flex-direction:column;gap:12px;min-height:0;padding:16px 0 0 16px;display:flex}.project-viewer-stage{background:linear-gradient(135deg, var(--surface-2) 0%, #e6eaf3 100%);border-radius:14px;flex:1 1 0;place-items:center;min-height:0;padding:24px;display:grid;container-type:size}.project-viewer-figure{width:min(100cqw, 100cqh * var(--screen-ratio));display:grid}.project-viewer-image{border-radius:var(--radius-media);outline-offset:-1px;background:var(--surface) center / 100% 100% no-repeat;outline:1px solid #0b0f191a;grid-area:1/1;width:100%;height:auto;display:block}.project-viewer-badge{min-height:26px;margin:calc(var(--screen-header) + 8px) 0 0 10px;background:var(--surface);color:var(--ink);border:1px solid #0b0f1933;border-radius:999px;grid-area:1/1;place-self:start;align-items:center;gap:6px;padding:0 10px;font-size:12px;font-weight:600;line-height:1;display:inline-flex}.project-viewer-badge .icon{width:14px;height:14px;color:var(--accent-ink)}.project-viewer-badge[hidden]{display:none}@container (width<=480px){.project-viewer-badge{min-height:20px;margin:calc(var(--screen-header) + 3px) 0 0 6px;gap:5px;padding:0 8px;font-size:11px}.project-viewer-badge .icon{width:12px;height:12px}}.project-viewer-screens{gap:8px;display:flex}.project-viewer-screens[hidden],.project-viewer-caption[hidden],.project-viewer-links[hidden]{display:none}.project-viewer-screen{border:1px solid var(--line);background:var(--surface-2);cursor:pointer;border-radius:8px;width:64px;height:40px;padding:0;overflow:hidden}.project-viewer-screen img{object-fit:cover;width:100%;height:100%;display:block}.project-viewer-screen[aria-pressed=true]{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}.project-viewer-caption{color:var(--muted);font-size:14px;line-height:1.5}.project-viewer-copy{overscroll-behavior:contain;flex-direction:column;align-items:flex-start;gap:16px;min-height:0;padding:32px 32px 28px;display:flex;overflow-y:auto}.project-viewer-title{font-size:calc(22px + var(--wide) * .0054);letter-spacing:-.02em;padding-right:52px;font-weight:600;line-height:1.2}.project-viewer-meta{color:var(--muted);margin-top:-4px;font-size:13px;font-weight:500}.project-viewer-summary{font-size:calc(16px + var(--wide) * .0018);color:var(--ink-2);line-height:1.55}.project-viewer-label{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-top:10px;font-size:12px;font-weight:600;line-height:1.3}.project-viewer-role{font-size:calc(16px + var(--wide) * .0018);color:var(--ink-2);line-height:1.6}.project-viewer-highlights{gap:12px;list-style:none;display:grid}.project-viewer-highlights li{font-size:calc(16px + var(--wide) * .0018);color:var(--ink-2);grid-template-columns:22px minmax(0,1fr);line-height:1.6;display:grid}.project-viewer-highlights li:before{content:"";background:var(--accent);border-radius:1px;width:6px;height:6px;margin:calc(.8em - 3px) 0 0 3px;rotate:45deg}.project-viewer-decisions{align-self:stretch;gap:10px;font-size:16px;line-height:1.6;display:grid}.project-viewer-decisions[hidden],.project-card-decisions[hidden]{display:none}.project-viewer-decisions dt{color:var(--ink);font-weight:600}.project-viewer-decisions dd{color:var(--ink-2);margin:0 0 8px}.project-viewer-results{color:var(--ink-2);align-self:stretch;gap:14px;padding-left:20px;font-size:16px;line-height:1.6;display:grid}.project-viewer-results a{color:var(--accent-ink);text-underline-offset:3px;text-decoration:underline}.project-viewer-status{color:var(--ink);font-size:14px;font-weight:600;line-height:1.6}.project-card-more h4{margin-top:18px;font-size:15px}.project-card-decisions{gap:6px;margin-top:10px;font-size:14px;line-height:1.6;display:grid}.project-card-decisions dt{font-weight:600}.project-card-decisions dd{margin:0 0 8px}.project-card-results{gap:10px;padding-left:18px;font-size:14px;line-height:1.6;display:grid}.project-viewer-links{flex-wrap:wrap;gap:8px 20px;margin-top:6px;display:flex}.project-viewer-foot{grid-column:1/-1;align-items:center;gap:8px;padding:12px 16px 16px;display:flex}@media (width>=861px){.project-viewer{--viewer-w:min(100% - 176px, var(--viewer-width));width:min(100% - 176px, var(--viewer-width));overflow:visible}.project-viewer-media{padding-bottom:16px}.project-viewer-foot{padding:0}.project-viewer-foot>[data-viewer-step]{z-index:1;width:52px;height:52px;position:absolute;top:50%;translate:0 -50%;box-shadow:0 10px 24px -12px #0b0f1980}.project-viewer-foot>[data-viewer-step="-1"]{left:-72px}.project-viewer-foot>[data-viewer-step="1"]{right:-72px}}@media (width<=860px){.project-viewer{--viewer-w:calc(100% - 24px);--viewer-h:calc(100% - 24px);width:calc(100% - 24px);height:calc(100dvh - 24px)}.project-viewer-panel{grid-template-rows:auto minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr)}.project-viewer-media{padding:12px 12px 0}.project-viewer-stage{aspect-ratio:20/9;flex:none;max-height:30dvh;padding:14px}.project-viewer-copy{padding:18px 18px 12px}.project-viewer-title{padding-right:0;font-size:19px}.project-viewer-panel>[data-viewer-close]{top:20px;right:20px}.project-viewer-foot{padding:10px 12px 12px}}@supports (width:round(down, 1.5px, 1px)){.project-viewer{width:round(down, var(--viewer-w), 2px);height:round(down, var(--viewer-h), 2px);inset:auto;left:round(down, (100% - round(down, var(--viewer-w), 2px)) / 2, 1px);top:round(down, (100% - round(down, var(--viewer-h), 2px)) / 2, 1px);margin:0}.project-viewer-panel{grid-template-columns:minmax(0,round(down,44%,1px)) minmax(0,1fr)}}@media (width<=860px){@supports (width:round(down, 1.5px, 1px)){.project-viewer-panel{grid-template-columns:minmax(0,1fr)}}}.project-viewer:before,.project-viewer:after{content:"";z-index:-1;background:var(--surface);pointer-events:none;position:absolute}.project-viewer:before{inset:calc(var(--radius-box) - 1px) 0}.project-viewer:after{inset:0 calc(var(--radius-box) - 1px)}.page-intro{justify-content:space-between;align-items:flex-end;gap:32px;padding-block:40px 56px;display:flex}.page-intro-copy{flex-direction:column;align-items:flex-start;gap:14px;display:flex}.page-intro .lede{margin-top:2px}.page-intro-action{flex-shrink:0}.page-title .line+.line{color:var(--accent)}.chapters{flex-wrap:wrap;gap:8px;margin-bottom:40px;display:flex}.chapters a{border:1px solid var(--line);background:var(--surface);min-height:40px;color:var(--muted);border-radius:999px;align-items:center;gap:8px;padding:0 14px;font-size:14px;font-weight:600;transition:background-color .2s,color .2s,border-color .2s,transform .15s;display:inline-flex}.chapters a .icon{width:16px;height:16px}.chapters a:hover,.chapters a[aria-current=location]{background:var(--accent-tint);border-color:var(--accent-tint);color:var(--accent-ink)}.chapters a:active{transform:scale(.97)}.section-head{justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:28px;display:flex}.section-lede{font-size:calc(16px + var(--wide) * .0029);color:var(--muted);margin-top:10px}@media (width<=800px){.page-intro{flex-direction:column;align-items:flex-start}}@media (width<=700px){.page-intro{padding-bottom:40px}.section-head{flex-direction:column;align-items:flex-start}}.reveal{opacity:1}.reveal.is-in{animation:reveal-up .6s var(--ease-smooth) backwards;animation-delay:var(--reveal-delay,0s)}@keyframes reveal-up{0%{opacity:0;translate:0 24px}to{opacity:1;translate:0}}[data-stack]{position:relative;top:auto}[data-stack-cover]{position:relative;box-shadow:0 -28px 64px -32px #0b0f1959}.field{height:320px;position:relative}.field[hidden]{display:none}.field:not(.is-live) .field-controls{visibility:hidden}.field-canvas{touch-action:pan-y pinch-zoom;width:100%;height:100%;position:absolute;inset:0}[data-tilt]{transform:perspective(900px) translateY(var(--lift,0px)) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:transform .25s ease-out, box-shadow .35s var(--ease-out), border-color .25s ease}@media (hover:hover) and (pointer:fine){.card--link:hover{--lift:-3px;box-shadow:var(--glass-rim), var(--shadow-lift);border-color:#fff}[data-tilt]:hover{box-shadow:var(--glass-rim), var(--shadow-float)}}[data-spotlight]>*{position:relative}[data-spotlight]>:after{content:"";border-radius:inherit;background:radial-gradient(260px circle at var(--mx,-999px) var(--my,-999px), var(--accent), transparent 70%);-webkit-mask-composite:xor;pointer-events:none;padding:1px;position:absolute;inset:-1px;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor,source-over;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}.btn[data-magnet]{translate:var(--tx,0px) var(--ty,0px);transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s,translate .18s ease-out,transform .15s}[data-slide-pill]{isolation:isolate;position:relative}[data-slide-pill].is-sliding:before{content:"";z-index:-1;width:var(--pill-w);height:var(--pill-h);translate:var(--pill-x) var(--pill-y);background:var(--ink);transition:translate var(--motion-morph) var(--ease-smooth), width var(--motion-morph) var(--ease-smooth), height var(--motion-morph) var(--ease-smooth);border-radius:999px;position:absolute;top:0;left:0}[data-slide-pill].is-sliding[data-pill-jump]:before{transition:none}[data-slide-pill].is-sliding>[aria-pressed=true]{background:0 0}[data-lifeline]{--lifeline-noise:#c9ced8;position:relative}[data-lifeline]:before,[data-lifeline]:after{content:"";left:var(--lifeline-x,21px);top:var(--lifeline-fit-top,var(--lifeline-top,12px));bottom:var(--lifeline-fit-bottom,var(--lifeline-bottom,12px));pointer-events:none;border-radius:2px;width:2px;position:absolute}[data-lifeline]:before{background:repeating-linear-gradient(var(--lifeline-noise) 0 3px, transparent 3px 7px)}[data-lifeline]:after{background:linear-gradient(var(--accent) calc(100% - min(100%, var(--lifeline-tip,100%) / var(--lifeline-progress,1))), var(--hot));transform-origin:top;transform:scaleY(var(--lifeline-progress,1))}[data-lifeline] [data-lifeline-node]{z-index:1;position:relative}.page-intro .lede,.section-lede,.story>p,.recog>.recog-summary,.contact-box .lede,.project-card-body p,.focus-copy p,.ticks li,.pub-summary,.project-viewer-summary,.project-viewer-role,.project-viewer-highlights li,.area-body p,.role-highlight{text-align:left}@media (prefers-reduced-transparency:reduce),(prefers-contrast:more){:root{--glass:var(--glass-sheen), var(--glass-solid);--glass-blur:none;--glass-inner:var(--surface)}}@media (forced-colors:active){.arrow-field{display:none}[aria-pressed=true]{outline-offset:-2px;outline:2px solid buttontext}[aria-pressed=true]:focus-visible{outline-offset:3px;outline-width:4px}.brand .brand-mark,.footer-name .brand-mark,.identity-plate .identity-mark{color:canvastext;--mark-accent:CanvasText}.ring-fill{stroke:canvastext}.ring-track{stroke:graytext}.ring-end{fill:canvastext;stroke:canvas}[data-lifeline]:before{forced-color-adjust:none}[data-lifeline]:after{forced-color-adjust:none;background:canvastext}.footer-wordmark{display:none}.footer-inner{padding-bottom:32px}.band-night--texture{background-image:none}.card,.panel,.tile,.contact-box,.facts>div,.notice-frame,.channel,.card-fan-card,.row-tile--logo{-webkit-backdrop-filter:none;backdrop-filter:none;background:canvas;border-color:canvastext}.project-viewer-image{outline-color:canvastext}.project-viewer-highlights li:before{forced-color-adjust:none;background:canvastext}.project-card-badge .icon,.project-viewer-badge .icon{color:canvastext}}@media (prefers-reduced-motion:reduce){.arrow-field{display:none}.is-loading .loader,.loader.is-done,.loader-dot{transition:none}html{scroll-behavior:auto}.live-dot,body:before,body:after{animation:none}.arrow,.btn,.text-link,.card--link,.icon-tile,.chips li,.chapters a,.site-header,.toast,.primary-nav a,.primary-nav a:after,.contact-email,.footer-links a,[data-tilt],.btn[data-magnet],.row-tile[data-lifeline-node]:not(.row-tile--ink){transition:none}:root:not(:has(.project-viewer[open])) .project-card:target{animation:none}.project-viewer[open],.project-viewer[open]::backdrop{animation:none}.project-viewer-button,[data-slide-pill].is-sliding:before{transition:none}[data-lifeline]:after{--lifeline-progress:1;transform:none}[data-lifeline].is-live .row-tile[data-lifeline-node]:not(.row-tile--ink):not(.is-passed){border-color:var(--accent)}.reveal,.reveal.is-in{opacity:1;animation:none}.count-base{opacity:1}.count-roll{display:none}[data-stack]{position:relative;top:auto}[data-stack-cover]{box-shadow:none}.page-title .line,.hero-title .line{animation:none}}@media print{.arrow-field,.is-loading .loader,.loader{display:none}body{min-height:0;display:block}.reveal,.reveal.is-in{opacity:1;animation:none;translate:none}.count-base{opacity:1}.count-roll{display:none}[data-stack]{position:static}[data-lifeline]:after,[data-tilt]{transform:none}[data-lifeline]:before,[data-lifeline]:after{top:var(--lifeline-top,12px);bottom:var(--lifeline-bottom,12px);-webkit-print-color-adjust:exact;print-color-adjust:exact}[data-lifeline]:after{--lifeline-progress:1}.btn[data-magnet]{translate:none}[data-lifeline].is-live .row-tile[data-lifeline-node]:not(.row-tile--ink):not(.is-passed){border-color:var(--accent)}body:before,body:after,.site-header,.toast,.field,.footer-wordmark{display:none}.footer-inner{padding-bottom:32px}.band-night,.night-panel,.area-figure,.btn-ink,.row-tile--ink,.project-viewer-highlights li:before{-webkit-print-color-adjust:exact;print-color-adjust:exact}.band-night--texture{background:var(--night)}.page-title .line,.hero-title .line{animation:none}.card,.panel,.tile,.contact-box,.facts>div,.notice-frame,.channel,.card-fan-card,.row-tile--logo,.card--link:is(:hover,:focus-visible,:has(:focus-visible)),[data-tilt]:hover{background:var(--surface);border-color:var(--line);box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}}.page-home:before,.page-home:after{animation:none}.hero{text-align:center;flex-direction:column;align-items:center;padding-block:48px 0;display:flex}.hero-identity{flex-wrap:wrap;justify-content:center;align-items:baseline;gap:10px 16px;width:100%;display:flex}.hero .hero-title{max-width:100%;margin-top:0;position:relative}.hero-greeting{font-size:clamp(20px, 2.1vw, calc(30px + var(--wide) * .012));letter-spacing:-.02em;white-space:nowrap;transform-origin:50% 90%;font-weight:400;line-height:1.3;animation:1.05s linear .15s backwards hero-greeting-drop,.42s ease-in-out .885s hero-greeting-settle;display:inline-block;position:relative}@keyframes hero-greeting-drop{0%{z-index:21;animation-timing-function:ease-in;translate:0 -240px}70%{animation-timing-function:ease-out;translate:0}84%{animation-timing-function:ease-in;translate:0 -12px}94%{animation-timing-function:ease-out;translate:0}98%{animation-timing-function:ease-in;translate:0 -2px}to{z-index:21;translate:0}}@keyframes hero-greeting-settle{0%,to{rotate:0deg}24%{rotate:2.5deg}52%{rotate:-1.6deg}76%{rotate:.6deg}}.hero-role{font-size:clamp(22px, 2.2vw, calc(32px + var(--wide) * .0143));letter-spacing:-.02em;color:var(--accent);margin-top:16px;font-weight:600;line-height:1.25}.hero-role-rotation{min-width:10em;display:inline-block;position:relative}.hero-role-rotation .line{display:inline-block}.hero-role-rotation.is-vaporising .line{visibility:hidden}.hero-role-rotation.is-switching .line{animation:role-resolve var(--motion-panel) var(--ease-smooth) backwards}@keyframes role-resolve{0%{opacity:0;translate:0 6px}}.hero-title-vapour{pointer-events:none;position:absolute}.hero-affiliation{font-size:calc(17px + var(--wide) * .003);color:var(--ink);margin-top:16px;line-height:1.6}.hero-affiliation a{color:var(--accent);text-underline-offset:4px;font-weight:600;text-decoration:underline;display:inline-block}.hero-lead{font-size:calc(17px + var(--wide) * .003);color:var(--muted);margin-top:14px;line-height:1.6}.hero .hero-title,.hero-role,.hero-affiliation,.hero-lead{text-wrap:balance}.hero .button-row{justify-content:center;margin-top:22px}.hero .field{width:100%;height:calc(320px + var(--wide) * .0893);margin-top:4px}.field-canvas{cursor:crosshair}.field-controls{align-items:center;gap:8px;display:flex;position:absolute;bottom:6px;left:50%;translate:-50%}.field-modes{border:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fffc;border-radius:999px;gap:4px;padding:5px;display:flex}.field-mode{min-height:40px;color:var(--muted);white-space:nowrap;cursor:pointer;background:0 0;border:0;border-radius:999px;padding:0 16px;font-size:13px;font-weight:600;transition:background-color .25s,color .25s}.field-mode:hover{color:var(--ink)}.field-mode[aria-pressed=true]{background:var(--ink);color:var(--surface)}.field-modes.is-sliding>.field-mode{transition:none}.field-modes.is-sliding>.field-mode[aria-pressed=true]{transition:color .25s .12s}.field-modes.is-sliding[data-pill-jump]>.field-mode[aria-pressed=true]{transition:none}.field-pause{border:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);width:40px;height:40px;color:var(--muted);cursor:pointer;background:#fffc;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:color .2s,border-color .2s;display:flex}.field-pause[hidden]{display:none}.field-pause:hover{color:var(--ink);border-color:var(--ink)}.field-pause .icon{width:16px;height:16px}.field-pause[data-paused=false] .icon-play,.field-pause[data-paused=true] .icon-pause{display:none}.field-modes,.field-pause{box-shadow:inset 0 -1px #14185a0f,0 10px 30px -18px #14185a99}.proof{border-block:1px solid var(--line);grid-template-columns:repeat(4,minmax(0,1fr));margin-top:26px;display:grid}.stat{flex-direction:column;align-items:flex-start;gap:8px;padding:26px 22px;display:flex}.stat+.stat{border-left:1px solid var(--line)}.stat-cap{color:var(--ink);text-align:left;font-size:14px;font-weight:600}.stat-context{color:var(--muted);text-align:left;font-size:14px;line-height:1.55}.stat-source{color:var(--accent);text-underline-offset:3px;margin-top:auto;padding-top:6px;font-size:14px;font-weight:600;text-decoration:underline}.read{padding-block:96px 72px}.read-copy{flex-direction:column;align-items:flex-start;gap:14px;display:flex}.read-text{font-size:clamp(22px, 2.4vw, calc(32px + var(--wide) * .0143));letter-spacing:-.02em;margin-top:6px;font-weight:600;line-height:1.3}.read-copy .btn{margin-top:10px}.work{padding-block:24px 72px}.work .card-grid--featured{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.work .project-card-link{aspect-ratio:20/9}.work .project-card-body{gap:6px;padding:12px 16px 10px}.work .project-card-body p{text-align:left}.work .project-card>.tech-tags{padding:2px 16px 12px}.work .project-card-links{padding:0 16px 12px}.project-card-contribution{border-top:1px solid var(--line);gap:4px;margin-top:auto;padding-top:10px;display:grid}.project-card-contribution p{color:var(--ink);text-align:left;font-weight:600}.project-card-contribution .project-card-contribution-detail{font-weight:400}.project-card-organization{color:var(--muted);font-size:13px;line-height:1.5}.experience-brief{grid-template-columns:.8fr 1.2fr;gap:48px;padding-block:64px;display:grid}.experience-brief-copy{flex-direction:column;align-items:flex-start;gap:12px;display:flex}.experience-brief-copy .btn{margin-top:8px}.experience-brief .rows{--lifeline-top:20px;--lifeline-bottom:20px;--lifeline-x:43px}.experience-brief .row{grid-template-columns:88px minmax(0,1fr) auto}.row-tile--logo{width:88px;padding:0 10px}.row-tile--logo .logo{max-width:100%;height:auto;display:block}.invitation{color:var(--ink);background:0 0;padding-block:72px 64px}.invitation-inner{grid-template-columns:1.2fr .8fr;align-items:center;gap:48px;display:grid}.invitation-copy{flex-direction:column;align-items:flex-start;gap:10px;display:flex}@media (width<=1099px){.work .card-grid--featured{grid-template-columns:repeat(2,minmax(0,1fr))}.proof{grid-template-columns:1fr 1fr}.stat:nth-child(3){border-left:0}.stat:nth-child(n+3){border-top:1px solid var(--line)}.experience-brief{grid-template-columns:1fr;gap:32px}}@media (width<=800px){.invitation-inner{grid-template-columns:1fr;gap:28px}}@media (width<=700px){.hero{padding-top:24px}.hero-identity{flex-direction:column;align-items:center}.work .card-grid--featured{grid-template-columns:1fr}.hero .button-row,.hero .btn{width:100%}.hero .btn{justify-content:space-between}.hero .field{height:auto}.field-canvas{height:240px;display:block;position:static}.field-controls{grid-template-columns:minmax(0,1fr);grid-auto-flow:column;margin-top:8px;display:grid;position:static;translate:none}.field-modes{border-radius:18px;grid-template-columns:1fr 1fr;display:grid}.field-mode{white-space:normal;padding:6px 8px;line-height:1.2}.field-pause{-webkit-backdrop-filter:none;backdrop-filter:none}.proof{grid-template-columns:1fr 1fr}.stat:nth-child(3){border-left:0}.stat:nth-child(n+3){border-top:1px solid var(--line)}.read{padding-block:56px 48px}.work,.experience-brief,.invitation{padding-block:44px}.experience-brief .row>:not(.row-tile){align-self:baseline}.experience-brief .row{grid-template-columns:72px minmax(0,1fr) auto}.experience-brief .rows{--lifeline-x:35px}.row-tile--logo{width:72px;height:40px;padding:0 8px}}@media (width<=480px){.proof{grid-template-columns:1fr}.stat{padding:22px 8px}.stat+.stat{border-left:0;border-top:1px solid var(--line)}}@media (forced-colors:active){.experience-brief [data-lifeline] .row-tile.row-tile--logo[data-lifeline-node]:not(.row-tile--ink){forced-color-adjust:none;box-shadow:none;background:#fff;border-color:canvastext}}@media (prefers-reduced-motion:reduce){.hero-greeting{animation:none}.field-mode,.field-modes.is-sliding>.field-mode[aria-pressed=true],.field-pause{transition:none}.hero-role-rotation.is-switching .line{animation:none}.hero-role-rotation.is-vaporising .line{visibility:visible}.hero-title-vapour{display:none}}@media print{.hero-greeting,.hero-role-rotation.is-switching .line{animation:none}.hero-role-rotation.is-vaporising .line{visibility:visible}.hero-title-vapour{display:none}}.about{grid-template-columns:minmax(0,4fr) minmax(0,7fr);grid-template-areas:"identity story"".next";gap:20px 32px;padding-bottom:72px;display:grid}.identity{flex-direction:column;grid-area:identity;display:flex}.about>.text-link{grid-area:next;justify-self:start}.identity-plate{height:calc(220px + var(--wide) * .0982);flex-grow:1;justify-content:center;align-items:center;display:flex;position:relative}.identity-mark{width:calc(91px + var(--wide) * .0405);height:auto;color:var(--ink);--mark-accent:var(--accent)}.identity-particles{width:100%;height:100%;position:absolute;inset:0}.identity-plate.is-particles{cursor:grab;touch-action:pan-y;-webkit-user-select:none;user-select:none}.identity-plate.is-dragging{cursor:grabbing}.identity-plate.is-particles .identity-mark{visibility:hidden}.identity-body{flex-direction:column;align-items:flex-start;gap:8px;padding:24px;display:flex}.identity-body h2{letter-spacing:-.025em;font-size:24px;font-weight:700}.identity-title{color:var(--muted);font-size:15px}.story{flex-direction:column;grid-area:story;align-items:flex-start;gap:20px;display:flex}.story .section-title{font-size:clamp(24px, 2.1vw, calc(30px + var(--wide) * .0134))}.story-lead{font-size:calc(18px + var(--wide) * .0032);color:var(--ink-2);line-height:1.55}.story>p:not(.story-lead){color:var(--muted)}.story>p{text-align:left}.achievement-link{color:inherit;text-decoration:underline;-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);text-underline-offset:3px}.achievement-link:hover{color:var(--accent)}.facts{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;width:100%;margin-top:8px;display:grid}@media (width>=1001px){.story .facts{margin-top:auto}}.facts>div{border-radius:var(--radius-tile);flex-direction:column;gap:6px;padding:18px;display:flex}.facts strong{letter-spacing:-.01em;font-size:17px;font-weight:600}.facts p:not(.label){color:var(--muted);font-size:14px}.education{grid-template-columns:minmax(0,3fr) minmax(0,8fr);gap:32px;padding-block:56px 72px;display:grid}.edu-rail{--lifeline-x:7px;--lifeline-node-y:12px;--lifeline-top:12px;--lifeline-bottom:12px;flex-direction:column;gap:40px;list-style:none;display:flex;position:relative}.edu-item{flex-direction:column;align-items:flex-start;gap:6px;padding-left:40px;display:flex;position:relative}.edu-item:before{content:"";border:1px solid var(--ink);background:var(--canvas);border-radius:999px;width:14px;height:14px;transition:border-color .3s;position:absolute;top:5px;left:1px}.edu-item.is-current:before{border-color:var(--accent);background:var(--accent);box-shadow:inset 0 0 0 3px var(--canvas)}[data-lifeline] .edu-item:not(.is-current):before{border-color:var(--accent)}[data-lifeline].is-live .edu-item:not(.is-current):not(.is-passed):before{border-color:var(--muted)}.edu-item h3{letter-spacing:-.02em;font-size:clamp(19px,1.6vw,22px);font-weight:600}.edu-school{font-size:16px}.edu-note{color:var(--muted);margin-top:4px;font-size:15px;line-height:1.55}.coursework{flex-direction:column;gap:10px;margin-top:12px;display:flex}.expertise-band{background:var(--surface);border-top:1px solid var(--line);padding-block:64px 72px}.expertise-inner{flex-direction:column;gap:32px;display:flex}.panel-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.panel-sub{color:var(--muted);font-size:14px}.panel--data,.panel--cloud{--tone:var(--accent)}.panel--software,.panel--ai{--tone:#0e9384}@media (width<=900px){.panel--ai{--tone:var(--accent)}.panel--cloud{--tone:#0e9384}}.panel--data,.panel--software,.panel--ai,.panel--cloud{background:linear-gradient(160deg, color-mix(in srgb, var(--tone) 13%, #ffffffb8), color-mix(in srgb, var(--tone) 6%, #fff9));-webkit-backdrop-filter:blur(18px)saturate(1.15);backdrop-filter:blur(18px)saturate(1.15);border-color:color-mix(in srgb, var(--tone) 22%, #ffffffd9);box-shadow:inset 0 1px 0 #ffffff8c, var(--glass-shadow)}.panel--data .icon-tile,.panel--software .icon-tile,.panel--ai .icon-tile,.panel--cloud .icon-tile{background:var(--tone);color:#fff}.panel--data:hover .icon-tile,.panel--software:hover .icon-tile,.panel--ai:hover .icon-tile,.panel--cloud:hover .icon-tile{background:color-mix(in srgb, var(--tone) 85%, #000);color:#fff}@media (prefers-reduced-transparency:reduce),(prefers-contrast:more){.panel--data,.panel--software,.panel--ai,.panel--cloud{background:var(--glass-sheen), var(--glass-solid);-webkit-backdrop-filter:none;backdrop-filter:none}}@media (forced-colors:active){.panel--data,.panel--software,.panel--ai,.panel--cloud{-webkit-backdrop-filter:none;backdrop-filter:none;background:canvas;border-color:canvastext}.panel--data .icon-tile,.panel--software .icon-tile,.panel--ai .icon-tile,.panel--cloud .icon-tile{color:canvastext;background:canvas}}@media print{.panel--data,.panel--software,.panel--ai,.panel--cloud{background:var(--surface);-webkit-backdrop-filter:none;backdrop-filter:none}}.skill-list{margin-top:4px}.skill-list>div{border-top:1px solid var(--line-soft);grid-template-columns:140px minmax(0,1fr);column-gap:16px;padding:12px 0;display:grid}.skill-list dt{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding-top:2px;font-size:12px;font-weight:600}.skill-list dd{font-size:14px;line-height:1.55}.strengths{flex-direction:column;gap:28px;padding-block:64px 56px;display:flex}.strengths-grid{grid-template-columns:2fr 1fr;gap:16px;display:grid}.strength-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:4px;list-style:none;display:grid}.strength-list li{border:1px solid var(--glass-edge);background:var(--glass-inner);border-radius:12px;align-items:center;gap:12px;min-height:52px;padding:0 16px;font-size:15px;font-weight:600;display:flex}.strength-list .icon{color:var(--accent-ink)}.lang-list>div{border-top:1px solid var(--line-soft);flex-direction:column;gap:4px;padding-top:14px;display:flex}.lang-list dt{font-size:16px;font-weight:600}.lang-list dd{color:var(--muted);font-size:14px}.next-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;padding-bottom:88px;display:grid}.next-card{padding:28px}.next-card h2{margin-top:4px}.next-card p{color:var(--muted);font-size:15px}@media (width<=1000px){.about{grid-template-columns:1fr;grid-template-areas:"identity""story""next"}.identity{max-width:460px;margin-bottom:12px}.education{grid-template-columns:1fr;gap:24px}}@media (width<=900px){.panel-grid,.strengths-grid,.next-cards{grid-template-columns:1fr}}@media (width<=560px){.facts,.strength-list{grid-template-columns:1fr}.skill-list>div{grid-template-columns:1fr;row-gap:4px}.panel,.next-card{padding:20px}.education,.expertise-band,.strengths{padding-block:44px}}.rail-panel{padding:24px}.rail-scroll{overflow-x:auto}.rail-svg{width:100%;min-width:900px;height:auto;display:block}@media (width<=1099px){.rail-svg{min-width:1100px}}.rail-year{font-family:var(--font);letter-spacing:.04em;fill:var(--muted);font-size:11px;font-weight:600}.rail-grid{stroke:var(--line)}.rail-rule{stroke:var(--line-soft)}.rail-hit{fill:#0000}.rail-lane:hover .rail-hit,.rail-lane:focus-visible .rail-hit,.rail-lane.is-shown .rail-hit{fill:var(--surface-2)}.rail-lane:focus-visible{outline:none}.rail-lane:focus-visible .rail-hit{stroke:var(--accent);stroke-width:2px}.rail-name{font-family:var(--font);fill:var(--ink);font-size:14px;font-weight:600}.rail-lane:hover .rail-name{fill:var(--accent-ink)}.rail-role{font-family:var(--font);fill:var(--muted);font-size:10.5px;font-weight:500}.rail-tenure{font-family:var(--font);font-variant-numeric:tabular-nums;fill:var(--ink-2);stroke:var(--surface-2);stroke-width:4px;stroke-linejoin:round;paint-order:stroke;opacity:0;font-size:12px;font-weight:600;transition:opacity .2s}.rail-lane:focus-visible .rail-tenure,.rail-lane.is-shown .rail-tenure{opacity:1}@media (hover:hover) and (pointer:fine){.rail-lane:hover .rail-tenure{opacity:1}}.rail-bar{fill:var(--ink);opacity:.85}.rail-bar--current{fill:var(--accent);opacity:1}.rail-path{fill:none;stroke:var(--accent);stroke-width:2px;stroke-linecap:round;stroke-dasharray:1;animation:rail-draw 1.8s var(--ease-out) .3s both}@keyframes rail-draw{0%{stroke-dashoffset:1px}to{stroke-dashoffset:0}}.rail-start{fill:var(--surface);stroke:var(--ink);stroke-width:2px}.rail-start--current{fill:var(--accent);stroke:var(--surface)}.rail-now{fill:var(--accent)}.rail-marks{pointer-events:none}@property --role-marker{syntax:"<length>";inherits:true;initial-value:0}.roles{--node:14px;--node-box:34px;--years-size:calc(40px + var(--wide) * .0179);--years-width:calc(var(--years-size) * 6.4);--rail-gap:calc(68px + var(--wide) * .015);--card-top:calc(44px + var(--wide) * .0196);--card-x:calc(52px + var(--wide) * .0232);--card-bottom:calc(40px + var(--wide) * .0179);--role-h2:clamp(24px, 2.05vw, calc(29px + var(--wide) * .013));--role-marker:calc(1px + var(--card-top) + var(--role-h2) * .55);--lifeline-x:calc(var(--years-width) + var(--rail-gap) / 2 - 1px);--lifeline-node-y:var(--role-marker);--lifeline-top:var(--role-marker);--lifeline-bottom:40px;--lifeline-tip:160px;flex-direction:column;gap:72px;margin-top:64px;display:flex}.role{grid-template-columns:var(--years-width) minmax(0, 1fr);column-gap:var(--rail-gap);display:grid}.role-node{left:calc(var(--lifeline-x) + 1px - var(--node-box) / 2);top:calc(var(--role-marker) - var(--node-box) / 2);width:calc(var(--rail-gap) / 2 + var(--node-box) / 2);height:var(--node-box);position:absolute}.role-node-ring{fill:var(--canvas);stroke:var(--accent);stroke-width:1px;transition:stroke .3s}.role-node-core{fill:var(--accent);transition:fill .3s}.role-node-tie{stroke:var(--accent-soft);stroke-width:1px;transition:stroke .3s}[data-lifeline].is-live .role:not(.is-passed):not(.role--current) .role-node-ring,[data-lifeline].is-live .role:not(.is-passed):not(.role--current) .role-node-tie{stroke:var(--lifeline-noise);transition:none}[data-lifeline].is-live .role:not(.is-passed):not(.role--current) .role-node-core{fill:var(--canvas);transition:none}.role-node-pulse{fill:none;stroke:var(--accent);stroke-width:1px;vector-effect:non-scaling-stroke;opacity:0;transform-box:fill-box;transform-origin:50%;animation:2.4s ease-out 3 node-pulse}@keyframes node-pulse{0%{opacity:.6;scale:1}to{opacity:0;scale:2.4}}.role-meta{padding-top:calc(var(--role-marker) - var(--years-size) / 2);flex-direction:column;align-self:start;align-items:flex-start;display:flex}.role-years{font-size:var(--years-size);letter-spacing:-.045em;font-variant-numeric:tabular-nums lining-nums;white-space:nowrap;color:var(--ink);font-weight:300;line-height:1}.role-years-dash{vertical-align:.35em;color:#0000;background:var(--ink);opacity:.3;width:.5em;height:1px;margin:0 .22em 0 .18em;display:inline-block;overflow:hidden}.role-years-now{letter-spacing:-.03em;color:var(--accent-ink)}.role-tenure{letter-spacing:.14em;text-transform:uppercase;color:var(--muted);opacity:0;margin-top:14px;font-size:11.5px;font-weight:600;line-height:1.4;transition:opacity .2s}.role:focus-within .role-tenure,.role:target .role-tenure,.role.is-shown .role-tenure{opacity:1}@media (hover:hover) and (pointer:fine){.role:hover .role-tenure{opacity:1}}.role-period{color:var(--ink-2);margin-top:26px;padding-top:18px;font-size:13px;font-weight:500;line-height:1.5;position:relative}.role-period:before{content:"";background:var(--lifeline-noise);width:28px;height:1px;position:absolute;top:0;left:0}.role-meta .meta{margin-top:6px}.role-meta .pill--live{letter-spacing:.14em;background:0 0;gap:8px;margin-top:20px;padding:0;font-size:11.5px}.role .live-dot{width:6px;height:6px;animation-iteration-count:3;box-shadow:0 0 0 3px #16a34a29}.role-body{padding:var(--card-top) var(--card-x) var(--card-bottom);flex-direction:column;align-items:flex-start;gap:18px;display:flex;position:relative}.role-head{justify-content:space-between;align-self:stretch;align-items:flex-start;gap:24px;display:flex}.role-head-text{flex-direction:column;gap:12px;min-width:0;display:flex}.role-body h2{font-size:var(--role-h2);letter-spacing:-.028em;font-weight:700;line-height:1.1}.role-titles{flex-direction:column;gap:4px;display:flex}.role-titles h3{letter-spacing:-.01em;font-size:17px;font-weight:600}.role-titles p{color:var(--muted);font-size:14px}.role-highlight{font-size:calc(18px + var(--wide) * .002);letter-spacing:-.008em;color:var(--ink);margin-top:6px;line-height:1.55}.role-body .chips{border-top:1px solid var(--line);align-self:stretch;margin-top:10px;padding-top:22px}.logo-tile{border:1px solid var(--glass-edge);background:var(--glass-inner);width:128px;height:56px;box-shadow:var(--glass-rim), 0 0 0 1px #0b0f190d, 0 1px 2px #0b0f190f;zoom:calc(1 + var(--wide-share) * .4);border-radius:14px;flex-shrink:0;justify-content:center;align-items:center;margin-bottom:4px;padding:0 14px;display:flex}.logo-tile .logo{max-width:100%;height:auto;display:block}.role-edge{top:-1px;left:var(--radius);right:var(--radius);background:var(--hot);opacity:.6;border-radius:2px;height:2px;position:absolute;-webkit-mask-image:linear-gradient(90deg,#0000,#000 8% 92%,#0000);mask-image:linear-gradient(90deg,#0000,#000 8% 92%,#0000)}.role-edge:before{content:"";border-radius:inherit;background:var(--accent);position:absolute;inset:0;-webkit-mask-image:linear-gradient(90deg,#000 20%,#0000);mask-image:linear-gradient(90deg,#000 20%,#0000)}@media (width>=1100px){.role-meta{top:calc(var(--header-h) + 24px);position:sticky}}.ticks{flex-direction:column;gap:10px;list-style:none;display:flex}.ticks li{color:var(--ink-2);grid-template-columns:20px minmax(0,1fr);font-size:15px;line-height:1.6;display:grid}.ticks li:before{content:"";background:var(--accent);border-radius:1px;width:6px;height:6px;margin:9px 0 0 2px;rotate:45deg}.ticks strong{color:var(--ink);font-weight:600}.ticks li.tick-impact:before{content:none}.tick-ring{width:18px;height:18px;margin:3px 0 0 -4px}.tick-ring .ring{width:100%;height:100%}.tick-ring .ring-track,.tick-ring .ring-fill{stroke-width:3px}.tick-ring .ring-fill{stroke-linecap:butt}.role.reveal:not(.is-in) .tick-ring .ring-fill{stroke-dashoffset:var(--ring-c)}.role.reveal.is-in .tick-ring .ring-fill{transition:stroke-dashoffset .9s var(--ease-out) calc(var(--reveal-delay,0s) + .35s)}.closing-cta,.cta-together{justify-content:space-between;align-items:flex-end;gap:32px;padding-block:64px 88px;display:flex}@media (width<=1099px){.roles{--years-size:30px;--rail-gap:60px;--card-top:36px;--card-x:36px;--card-bottom:32px;gap:56px}}@media (width<=900px){.roles{--role-marker:calc(var(--years-size) / 2);--lifeline-x:6px;--lifeline-bottom:24px;--card-top:26px;--card-x:22px;--card-bottom:24px;gap:48px;margin-top:40px}.role{grid-template-columns:minmax(0,1fr);gap:16px;padding-left:28px}.role-node{width:var(--node-box)}.role-node-tie{display:none}.role-meta{grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"years years live""period tenure tenure""place place place";align-items:baseline;display:grid}.role-years{grid-area:years}.role-meta .pill--live{grid-area:live;align-self:center;margin-top:0}.role-tenure{grid-area:tenure;margin-top:10px;padding-left:21px;position:relative}.role-tenure:before{content:"";background:var(--lifeline-noise);border-radius:999px;width:3px;height:3px;position:absolute;top:calc(50% - 1.5px);left:9px}.role-period{grid-area:period;margin-top:10px;padding:0}.role-period:before{display:none}.role-meta .meta{grid-area:place;margin-top:4px}.role-body{gap:16px}.role-head{flex-direction:column-reverse;gap:16px}.logo-tile{border-radius:12px;width:112px;height:48px;padding:0 10px}.role-highlight{font-size:17px}.closing-cta,.cta-together{flex-direction:column;align-items:flex-start}}@media (width<=560px){.rail-panel{padding:12px}.roles{--card-top:24px;--card-x:20px;--card-bottom:22px;--role-h2:23px}}.closing-cta--fan{flex-direction:column;align-items:flex-start}.closing-copy{flex-direction:column;align-items:flex-start;gap:32px;display:flex}.card-fan{--fan-x:150px;--fan-y:18px;--fan-rot:12deg;--fan-lift:16px;--fan-push:28px;isolation:isolate;zoom:calc(1 + var(--wide-share) * .5);align-self:stretch;width:100%;max-width:640px;height:250px;margin-inline:auto;list-style:none;position:relative}.card-fan>li{z-index:var(--fan-z);transform-origin:50% 130%;width:200px;transform:translate(calc(var(--fan-d) * var(--fan-x) + var(--push,0) * var(--fan-push)), calc(var(--fan-d2) * var(--fan-y) - var(--up,0) * var(--fan-lift))) rotate(calc(var(--fan-d) * var(--fan-rot) + var(--push,0) * 3deg)) scale(calc(1 - .1 * var(--fan-d2) + var(--up,0) * .06));transition:transform .45s var(--ease-spring);margin-left:-100px;position:absolute;bottom:24px;left:50%}.card-fan-card{box-shadow:var(--glass-rim), var(--shadow-lift);border-radius:14px;flex-direction:column;padding:3px;display:flex}.card-fan-card:after{content:"";inset-inline:0;height:calc(var(--up,0) * (var(--fan-lift) + 8px));position:absolute;top:100%}.card-fan-title{letter-spacing:-.01em;opacity:0;padding:10px 8px 6px;font-size:14px;font-weight:600;line-height:1.3;transition:opacity .25s}.card-fan-card:focus-visible{outline-offset:-4px}.card-fan>li:focus-within{--up:1;z-index:20}.card-fan>li:focus-within~li{--push:1}.card-fan>li:has(~li:focus-within){--push:-1}.card-fan>li.card-fan-centre .card-fan-title,.card-fan>li:focus-within .card-fan-title{opacity:1}.card-fan>li:focus-within~li .card-fan-title{opacity:0}.card-fan>li:has(~li:focus-within) .card-fan-title{opacity:0}@media (hover:hover) and (pointer:fine){.card-fan>li:hover{--up:1;z-index:20}.card-fan>li:hover~li{--push:1}.card-fan>li:has(~li:hover){--push:-1}.card-fan>li:hover .card-fan-title{opacity:1}.card-fan>li:hover~li .card-fan-title{opacity:0}.card-fan>li:has(~li:hover) .card-fan-title{opacity:0}.card-fan:has(>li:hover)>li:focus-within:not(:hover){--up:0;z-index:var(--fan-z)}.card-fan:has(>li:focus-within)>li:hover .card-fan-title{opacity:1}}.card-fan.reveal.is-in{opacity:1;animation:none}.card-fan.reveal.is-in>li{animation:fan-deal .7s var(--ease-spring) backwards;animation-delay:calc(var(--reveal-delay,0s) + 80ms + var(--fan-i) * 60ms)}@keyframes fan-deal{0%{opacity:0;transform:translateY(28px)scale(.92)}}@media (width>=1100px){.closing-cta--fan{grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:center;display:grid}}@media (width<=700px){.card-fan{display:none}}.research-overview{grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);align-items:stretch;gap:40px;padding-bottom:72px;display:grid}.research-overview>.publications{gap:20px}.research-overview .section-head{margin-bottom:0}.research-current{border-left:1px solid var(--line);flex-direction:column;gap:20px;padding-left:28px;display:flex}.research-current>p,.research-work p{color:var(--muted);text-align:left;font-size:15px;line-height:1.6}.research-work{border-top:1px solid var(--line);flex-direction:column;align-items:flex-start;gap:8px;padding-top:20px;display:flex}.research-work h3{font-size:18px;font-weight:600;line-height:1.35}.research-overview .profiles{gap:8px;margin-block:0}.research-overview .profile-tile{gap:8px;min-height:64px;padding-inline:12px}.research-overview .profile-tile .icon-tile{width:32px;height:32px}.research-overview .profile-name{font-size:14px}@media (width>=1100px){.research-overview .rows,.research-overview .pub,.research-current .research-work{flex:1}.research-current .research-work .text-link{margin-top:auto}.research-current .research-work:last-child{border-bottom:1px solid var(--line);padding-bottom:22px}}@media (width<=1099px){.research-overview{grid-template-columns:1fr;gap:32px;padding-bottom:48px}.research-current{border-left:0;border-top:1px solid var(--line);padding:28px 0 0}}.focus-band{padding-block:56px 64px}.focus-band.band-night--texture{--texture-pos:80% 55%}.focus-inner{grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:center;gap:40px;display:grid}.focus-copy{flex-direction:column;align-items:flex-start;gap:14px;display:flex}.focus-figure{padding:var(--media-inset)}.focus-media{aspect-ratio:16/9;border-radius:var(--radius-media);background:var(--night);position:relative;overflow:hidden}.focus-still img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.focus-media:after{content:"";background:linear-gradient(#0000 45%,#0009);position:absolute;inset:0}.focus-svg{z-index:1;width:100%;height:auto;display:block;position:relative}.mon-label{font-family:var(--font);letter-spacing:.04em;fill:var(--on-night-label);font-size:11px;font-weight:600}.mon-label-bright{fill:#d7dcec}.mon-label-pulse{fill:var(--accent-night)}.mon-rule{fill:none;stroke:var(--night-line);stroke-width:1px}.mon-arrow{fill:none;stroke:#8592be;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.mon-trace{fill:none;stroke:var(--accent-night);stroke-width:2.2px;stroke-linejoin:round;stroke-linecap:round}.mon-glow{fill:var(--accent-night);opacity:.2}.mon-head{fill:#dce4ff}.focus-gap,.focus-head{animation:3.3333s linear infinite focus-x}.focus-dot{animation:.8333s linear infinite focus-y}@keyframes focus-x{0%{transform:translate(0)}to{transform:translate(420px)}}@keyframes focus-y{0%{transform:translateY(285.6px)}2.5%{transform:translateY(284.5px)}5%{transform:translateY(279.5px)}7.5%{transform:translateY(262.1px)}10%{transform:translateY(221.9px)}12.5%{transform:translateY(162.7px)}15%{transform:translateY(117.3px)}17.5%{transform:translateY(113.5px)}20%{transform:translateY(124.7px)}22.5%{transform:translateY(144.6px)}25%{transform:translateY(168.5px)}27.5%{transform:translateY(191.2px)}30%{transform:translateY(207.5px)}32.5%{transform:translateY(213.3px)}35%{transform:translateY(208.6px)}37.5%{transform:translateY(199.3px)}40%{transform:translateY(194.8px)}42.5%{transform:translateY(200.6px)}45%{transform:translateY(213.8px)}47.5%{transform:translateY(227.4px)}50%{transform:translateY(236.7px)}52.5%{transform:translateY(241.9px)}55%{transform:translateY(245.1px)}57.5%{transform:translateY(248.1px)}60%{transform:translateY(251.4px)}62.5%{transform:translateY(255.2px)}65%{transform:translateY(259.3px)}67.5%{transform:translateY(263.4px)}70%{transform:translateY(267.4px)}72.5%{transform:translateY(271.1px)}75%{transform:translateY(274.3px)}77.5%{transform:translateY(277.1px)}80%{transform:translateY(279.4px)}82.5%{transform:translateY(281.2px)}85%{transform:translateY(282.6px)}87.5%{transform:translateY(283.7px)}90%{transform:translateY(284.4px)}92.5%{transform:translateY(285px)}95%{transform:translateY(285.4px)}97.5%{transform:translateY(285.6px)}to{transform:translateY(285.8px)}}.areas{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;padding-block:56px;display:grid}.area{flex-direction:column;display:flex;overflow:hidden}.area-figure{aspect-ratio:421/240;background:radial-gradient(120% 100% at 18% 0%, var(--night-2) 0%, var(--night) 60%)}.area-figure img{object-fit:cover;width:100%;height:100%;display:block}.area-body{flex-direction:column;gap:8px;padding:22px 24px 26px;display:flex}.area-body h3{letter-spacing:-.02em;font-size:19px;font-weight:600}.area-body p{color:var(--muted);font-size:14px;line-height:1.55}.publications{flex-direction:column;gap:8px;display:flex}.pub{grid-template-columns:minmax(0,1fr) auto;align-items:start;padding-block:22px}.pub-body{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.pub-body h3{letter-spacing:-.015em;font-size:clamp(17px,1.4vw,20px);font-weight:600;line-height:1.25}.pub-venue{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px;font-size:14px;display:flex}.pub-summary{color:var(--ink-2);text-align:left;font-size:15px;line-height:1.6}.profiles{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:32px;display:grid}.profile-tile{--tone:#4285f4;background:linear-gradient(160deg, color-mix(in srgb, var(--tone) 13%, #ffffffb8), color-mix(in srgb, var(--tone) 6%, #fff9));-webkit-backdrop-filter:blur(18px)saturate(1.15);backdrop-filter:blur(18px)saturate(1.15);border-color:color-mix(in srgb, var(--tone) 22%, #ffffffd9);min-height:76px;box-shadow:inset 0 1px 0 #ffffff8c, var(--glass-shadow);align-items:center;gap:14px;padding:0 18px;display:flex}.profile-tile .icon-tile{--paper:var(--tone);background:var(--tone);color:#fff}@media (prefers-reduced-transparency:reduce),(prefers-contrast:more){.profile-tile{background:var(--glass-sheen), var(--glass-solid);-webkit-backdrop-filter:none;backdrop-filter:none}}@media (forced-colors:active){.profile-tile{-webkit-backdrop-filter:none;backdrop-filter:none;background:canvas;border-color:canvastext}.profile-tile .icon-tile{color:canvastext;background:canvas}}@media print{.profile-tile{background:var(--surface);-webkit-backdrop-filter:none;backdrop-filter:none}}.profile-name{letter-spacing:-.01em;flex-grow:1;font-size:16px;font-weight:600}.cite-stat{min-height:40px;color:var(--ink);align-items:center;gap:14px;display:inline-flex}.cite-stat .stat-num{font-size:clamp(36px, 3.6vw, calc(52px + var(--wide) * .023))}.cite-caption{flex-direction:column;gap:4px;display:flex}.cite-label{font-size:calc(15px + var(--wide) * .0027);letter-spacing:-.01em;font-weight:600}.cite-source{font-size:calc(13px + var(--wide) * .0023);color:var(--accent-ink);align-items:center;gap:4px;font-weight:600;display:inline-flex}.cite-source .icon{width:1.1em;height:1.1em}.cite-stat:hover .cite-source{color:var(--ink)}@media (width<=1000px){.focus-inner,.areas{grid-template-columns:1fr}.areas .area{max-width:560px}}@media (width<=900px){.pub{grid-template-columns:minmax(0,1fr)}.pub .row-end{text-align:left}.profiles{grid-template-columns:1fr}}@media (width<=640px){.focus-band{padding-block:44px}.mon-label{font-size:16px}.focus-step-ppg{transform:translate(36px)}.focus-step-estimate{transform:translate(50px)}}.cert-section{flex-direction:column;gap:40px;padding-block:8px 24px;display:flex}.cert-group{border-top:1px solid var(--line);grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:24px;padding-top:28px;display:grid}.cert-group-head{flex-direction:column;gap:8px;padding-right:24px;display:flex}.cert-group-title{letter-spacing:-.02em;font-size:20px;font-weight:600}.cert-group-head p:not(.cert-group-title){color:var(--muted);font-size:14px}.cert-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.cert{--tone:#ffcb05;flex-direction:column;display:flex}.recog{--tone:var(--accent)}.cert,.recog{background:linear-gradient(160deg, color-mix(in srgb, var(--tone) 13%, #ffffffb8), color-mix(in srgb, var(--tone) 6%, #fff9));-webkit-backdrop-filter:blur(18px)saturate(1.15);backdrop-filter:blur(18px)saturate(1.15);border-color:color-mix(in srgb, var(--tone) 22%, #ffffffd9);box-shadow:inset 0 1px 0 #ffffff8c, var(--glass-shadow)}.cert{background:linear-gradient(160deg, color-mix(in srgb, var(--tone) 8%, #ffffffc2), color-mix(in srgb, var(--tone) 3%, #ffffffa3));border-color:color-mix(in srgb, var(--tone) 14%, #ffffffe0)}@media (prefers-reduced-transparency:reduce),(prefers-contrast:more){.cert,.recog{background:var(--glass-sheen), var(--glass-solid);-webkit-backdrop-filter:none;backdrop-filter:none}}@media (forced-colors:active){.cert,.recog{-webkit-backdrop-filter:none;backdrop-filter:none;background:canvas;border-color:canvastext}}@media print{.cert,.recog{background:var(--surface);-webkit-backdrop-filter:none;backdrop-filter:none}}.cert-preview,.recog-mark{aspect-ratio:16/10;border-radius:calc(var(--radius) - 1px) calc(var(--radius) - 1px) 0 0;background:linear-gradient(135deg, var(--surface-2) 0%, #e6eaf3 100%);place-items:center;padding:5.5% 7%;display:grid;container-type:size}.cert .cert-preview,.recog .cert-preview,.recog .recog-mark{background:linear-gradient(135deg, color-mix(in srgb, var(--tone) 9%, var(--surface-2)) 0%, color-mix(in srgb, var(--tone) 15%, #e6eaf3) 100%)}.cert .cert-preview{background:linear-gradient(135deg, color-mix(in srgb, var(--tone) 5%, var(--surface-2)) 0%, color-mix(in srgb, var(--tone) 9%, #e6eaf3) 100%)}.cert-preview:focus-visible{outline-offset:-4px}.cert-sheet{width:min(100cqw, 100cqh * var(--sheet-ratio));background:var(--surface);height:auto;transition:transform .35s var(--ease-out), box-shadow .35s var(--ease-out);border:1px solid #0b0f191a;border-radius:3px;display:block;box-shadow:0 1px 2px #0b0f1914,0 10px 22px -14px #0b0f1966}.cert-body{flex-direction:column;flex-grow:1;align-items:flex-start;gap:8px;padding:22px 24px;display:flex}.cert-preview+.cert-body{padding-top:18px}.cert-top{justify-content:space-between;align-items:flex-start;gap:12px;width:100%;display:flex}.cert-date{border:1px solid var(--line);border-radius:6px;padding:3px 8px;font-size:12px}.cert h3{letter-spacing:-.015em;margin-top:4px;font-size:18px;font-weight:600;line-height:1.25}.cert-summary{color:var(--ink-2);font-size:14px;line-height:1.55}.cert-verify{color:var(--muted);margin-top:4px;font-size:12px;font-weight:500}.cert-verify strong{color:var(--ink);font-weight:600}.cert-body>.text-link,.cert-verify{margin-top:auto}@media (hover:hover) and (pointer:fine){.cert:hover .cert-sheet,.recog:hover .cert-sheet{transform:translateY(-3px)scale(1.02);box-shadow:0 2px 4px #0b0f1914,0 16px 28px -16px #0b0f1973}}:root:has(.cert-viewer[open]){overflow:hidden}.cert-viewer{--viewer-w:min(100% - 48px, 1080px);--viewer-h:min(100% - 48px, 880px);border:1px solid var(--line);border-radius:var(--radius-box);background:var(--surface);width:min(100% - 48px,1080px);max-width:none;height:min(100dvh - 48px,880px);max-height:none;color:var(--ink);padding:0;box-shadow:0 48px 96px -48px #0b0f1999}.cert-viewer[open]{animation:viewer-in var(--motion-panel) var(--ease-smooth)}.cert-viewer::backdrop{background:#0b0f198f}.cert-viewer[open]::backdrop{animation:viewer-fade var(--motion-fast) var(--ease-out)}.cert-viewer-panel{grid-template-rows:auto minmax(0,1fr) auto;height:100%;display:grid}.cert-viewer-head{justify-content:space-between;align-items:flex-start;gap:16px;padding:16px 16px 16px 24px;display:flex}.cert-viewer-copy{flex-direction:column;align-items:flex-start;gap:8px;min-width:0;padding-top:8px;display:flex}.cert-viewer-title{letter-spacing:-.02em;font-size:20px;font-weight:600;line-height:1.2}.cert-viewer-meta{flex-wrap:wrap;align-items:center;gap:8px 12px;display:flex}.cert-viewer-stage{background:linear-gradient(135deg, var(--surface-2) 0%, #e6eaf3 100%);border-radius:14px;place-items:center;margin-inline:16px;padding:28px;display:grid;container-type:size}.cert-viewer-image{width:min(100cqw, 100cqh * var(--sheet-ratio));background:var(--surface) center / 100% 100% no-repeat;border:1px solid #0b0f191a;border-radius:4px;height:auto;display:block;box-shadow:0 1px 3px #0b0f1914,0 24px 48px -28px #0b0f1973}.cert-viewer-foot{justify-content:space-between;align-items:center;gap:16px;padding:16px 24px 16px 16px;display:flex}.cert-viewer-steps{gap:8px;display:flex}.cert-viewer-verify{align-self:center}.cert-viewer-verify[hidden]{display:none}.cert-viewer-button{border:1px solid var(--line);background:var(--surface);width:44px;height:44px;color:var(--ink);cursor:pointer;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:border-color .2s,background-color .2s;display:inline-flex}.cert-viewer-button .icon{width:20px;height:20px}@media (hover:hover) and (pointer:fine){.cert-viewer-button:hover{border-color:var(--ink);background:var(--surface-2)}}@media (width>=861px){.cert-viewer{--viewer-w:min(100% - 176px, 1080px);width:min(100% - 176px,1080px);overflow:visible}.cert-viewer-steps>[data-viewer-step]{z-index:1;width:52px;height:52px;position:absolute;top:50%;translate:0 -50%;box-shadow:0 10px 24px -12px #0b0f1980}.cert-viewer-steps>[data-viewer-step="-1"]{left:-72px}.cert-viewer-steps>[data-viewer-step="1"]{right:-72px}}@supports (width:round(down, 1.5px, 1px)){.cert-viewer{width:round(down, var(--viewer-w), 2px);height:round(down, var(--viewer-h), 2px);inset:auto;left:round(down, (100% - round(down, var(--viewer-w), 2px)) / 2, 1px);top:round(down, (100% - round(down, var(--viewer-h), 2px)) / 2, 1px);margin:0}}.cert-viewer:before,.cert-viewer:after{content:"";z-index:-1;background:var(--surface);pointer-events:none;position:absolute}.cert-viewer:before{inset:calc(var(--radius-box) - 1px) 0}.cert-viewer:after{inset:0 calc(var(--radius-box) - 1px)}.recognition{flex-direction:column;gap:28px;padding-block:48px 40px;display:flex}.recognition-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.recog-summary{color:var(--ink-2);font-size:15px;line-height:1.55}.recog-top{--preview-width:38%;align-items:flex-start;gap:20px;display:flex}.recog-copy{flex-direction:column;flex:1 1 0;gap:12px;min-width:0;display:flex}.recog-top .cert-preview,.recog-top .recog-mark{order:1;flex:0 0 var(--preview-width);padding:calc(var(--preview-width) * .055) calc(var(--preview-width) * .07);border-radius:var(--radius-media)}.recog-mark-logo{width:auto;height:58cqh;display:block}.recog-mark-tray{fill:#848383}.recog-mark-bars{fill:#c3661d}.rank-plot{width:100%;height:auto;margin-top:8px;display:block}.rank-axis{fill:none;stroke:var(--ink);stroke-width:1px}.rank-stem{stroke:var(--line);stroke-dasharray:2 3}.rank-dot{fill:var(--surface);stroke:var(--ink);stroke-width:2px}.rank-dot--best{fill:var(--accent);stroke:none}.rank-tick,.rank-round{font-family:var(--font);letter-spacing:.04em;fill:var(--muted);font-size:10.5px;font-weight:500}.rank-round--best{fill:var(--accent-ink)}.rank-value{font-family:var(--font);fill:var(--ink);font-size:15px;font-weight:600}.recog-readouts{border-top:1px solid var(--line);grid-template-columns:repeat(2,minmax(0,1fr));margin-top:8px;display:grid}.recog-readouts>div{padding-top:calc(16px + var(--wide) * .0071);flex-direction:column;gap:6px;display:flex}.recog-readouts>div+div{border-left:1px solid var(--line);padding-left:20px}.recog-value{font-size:calc(32px + var(--wide) * .0143);letter-spacing:-.03em;font-weight:700;line-height:1}.recog-value .plus{color:var(--accent)}@media (width>=901px) and (width<=1200px){.recog-top{--preview-width:min(34%, 140px);grid-template:"head window" auto "label window" auto ". window" 1fr "summary summary" auto / minmax(0, 1fr) var(--preview-width);gap:12px 20px;display:grid}.recog-top--mark{--preview-width:56px;grid-template:"head window" auto "label window" auto "summary summary" auto / minmax(0, 1fr) var(--preview-width);column-gap:12px}.recog-copy{display:contents}.recog-copy>h3{grid-area:head}.recog-copy>.label{grid-area:label}.recog-copy>.recog-summary{grid-area:summary}.recog-top .cert-preview,.recog-top .recog-mark{grid-area:window;padding:5.5% 7%}.recog-top--mark .recog-mark{aspect-ratio:1}}@media (width>=1441px){.recog-top{--preview-width:min(38%, 188px + var(--wide) * .02)}.rank-plot{max-width:calc(496px + var(--wide) * .06);margin-inline:auto}}@media (width<=1000px){.cert-group{grid-template-columns:1fr}}@media (width<=900px){.recognition-grid{grid-template-columns:1fr}}@media (width<=640px){.cert-grid{grid-template-columns:1fr}.cert-top{flex-direction:column;gap:8px}.recog-top{--preview-width:100%;flex-direction:column;align-items:stretch}.recog-top .cert-preview,.recog-top .recog-mark{flex-basis:auto;order:0}.cert-viewer{--viewer-w:calc(100% - 24px);--viewer-h:calc(100% - 24px);width:calc(100% - 24px);height:calc(100dvh - 24px)}.cert-viewer-head{padding:12px 12px 12px 18px}.cert-viewer-title{font-size:18px}.cert-viewer-stage{margin-inline:12px;padding:16px}.cert-viewer-foot{padding:12px 18px 12px 12px}}.recognition-grid>.recog--github{grid-column:1/-1}.recog--github{--chart-h:180px}.recog-mark-github{fill:var(--ink)}.recog-readouts--github{grid-template-columns:repeat(6,minmax(0,1fr))}.recog-readouts--github>div{grid-column:span 2}.recog-readouts--github>div:nth-child(n+4){border-top:1px solid var(--line);grid-column:span 3;margin-top:16px}.recog-readouts--github>div:nth-child(4){border-left:0;padding-left:0}.recog-unit{letter-spacing:0;color:var(--muted);margin-left:.18em;font-size:.5em;font-weight:600}.recog-chart{flex-direction:column;gap:12px;min-width:0;margin:12px 0 0;display:flex}.recog-chart-plot{flex-direction:column;flex:auto;gap:8px;display:flex}.recog-chart-svg{flex:1 1 var(--chart-h);width:100%;height:var(--chart-h);min-height:var(--chart-h);display:block;overflow:visible}.recog-chart-stop{stop-color:var(--accent);stop-opacity:.2}.recog-chart-stop--foot{stop-opacity:.02}.recog-chart-line{fill:none;stroke:var(--accent);stroke-width:2px;stroke-linejoin:round;vector-effect:non-scaling-stroke}.recog-chart-base{fill:none;stroke:var(--ink);stroke-width:1px;vector-effect:non-scaling-stroke}.recog-chart-months{height:20px;color:var(--muted);font-size:12px;font-weight:500;line-height:1;position:relative}.recog-chart-months span{top:0;left:var(--at);padding-top:8px;position:absolute;transform:translate(-50%)}.recog-chart-months span:before{content:"";background:var(--ink);width:1px;height:5px;position:absolute;top:0;left:50%}.recog-chart-months span:last-child{transform:translate(-100%)}.recog-chart-months span:last-child:before{left:auto;right:0}.recog-asof{color:var(--muted);font-size:13px}@media (width>=641px){.recog-top--tile{--preview-width:56px;grid-template:"head window" auto "label window" auto "summary summary" auto / minmax(0, 1fr) var(--preview-width);gap:12px;display:grid}.recog-top--tile .recog-copy{display:contents}.recog-top--tile .recog-copy>h3{grid-area:head}.recog-top--tile .recog-copy>.label{grid-area:label}.recog-top--tile .recog-copy>.recog-summary{grid-area:summary}.recog-top--tile .recog-mark{aspect-ratio:1;grid-area:window}}@media (width>=901px) and (width<=1200px){.recog-readouts--github{grid-template-columns:repeat(5,minmax(0,1fr))}.recog-readouts--github>div:nth-child(n){border-top:0;grid-column:auto;margin-top:0}.recog-readouts--github>div:nth-child(4){border-left:1px solid var(--line);padding-left:20px}}@media (width>=1201px){.recog--github{grid-template:"top chart""numbers chart""asof chart""link chart"1fr/minmax(0,2fr) minmax(0,3fr);gap:12px 48px;display:grid}.recog--github>.recog-top{grid-area:top}.recog--github>.recog-readouts{grid-area:numbers}.recog--github>.recog-chart{grid-area:chart;margin-top:0}.recog--github>.recog-asof{grid-area:asof}.recog--github>.text-link{grid-area:link;place-self:end start}}@media (width<=640px){.recog--github{--chart-h:140px}.recog-readouts--github{grid-template-columns:repeat(2,minmax(0,1fr))}.recog-readouts--github>div:nth-child(n){border-left:1px solid var(--line);grid-column:auto;padding-left:20px}.recog-readouts--github>div:nth-child(odd){border-left:0;padding-left:0}.recog-readouts--github>div:nth-child(n+3){border-top:1px solid var(--line);margin-top:16px}.recog-readouts--github>div:last-child{grid-column:1/-1}}.contact-layout{padding-bottom:96px}.contact-layout .channels{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.contact-layout .channel{column-gap:14px;min-height:112px}@media (width<=700px){.contact-layout .channels{grid-template-columns:minmax(0,1fr)}.contact-layout .channel{min-height:96px}}.channels{flex-direction:column;gap:10px;display:flex}.channel{border-radius:var(--radius-tile);flex:1 1 0;grid-template-columns:40px minmax(0,1fr) 20px;padding:14px 16px;transition:border-color .2s,box-shadow .2s}.channel .icon-tile{width:40px;height:40px}@media (hover:hover) and (pointer:fine){.channel:hover{box-shadow:var(--glass-rim), var(--shadow-lift);border-color:#fff}.channel:hover .icon-tile{background:var(--accent);color:var(--surface)}}.contact-box,.channel{--tone:var(--accent);background:linear-gradient(160deg, color-mix(in srgb, var(--tone) 15%, #ffffffb8), color-mix(in srgb, var(--tone) 7%, #fff9));-webkit-backdrop-filter:blur(18px)saturate(1.15);backdrop-filter:blur(18px)saturate(1.15);border-color:color-mix(in srgb, var(--tone) 22%, #ffffffd9);box-shadow:inset 0 1px 0 #ffffff8c, var(--glass-shadow)}.channel--github{--tone:#24292f}.channel--linkedin{--tone:#0a66c2}.channel--scholar{--tone:#4285f4}.channel--stackoverflow{--tone:#e8701a}.contact-box .icon-tile,.channel .icon-tile{background:var(--tone);color:#fff}@media (hover:hover) and (pointer:fine){.channel:hover{border-color:color-mix(in srgb, var(--tone) 40%, #fff);background:linear-gradient(160deg, color-mix(in srgb, var(--tone) 21%, #ffffffbd), color-mix(in srgb, var(--tone) 11%, #ffffff9e))}.channel:hover .icon-tile{background:color-mix(in srgb, var(--tone) 85%, #000);color:#fff}}@media (prefers-reduced-transparency:reduce),(prefers-contrast:more){.contact-box,.channel,.channel:hover{background:var(--glass-sheen), var(--glass-solid);-webkit-backdrop-filter:none;backdrop-filter:none}}@media (forced-colors:active){.contact-box,.channel{-webkit-backdrop-filter:none;backdrop-filter:none;background:canvas;border-color:canvastext}.contact-box .icon-tile,.channel .icon-tile{color:canvastext;background:canvas}}@media print{.contact-box,.channel{background:var(--surface);-webkit-backdrop-filter:none;backdrop-filter:none}}.page-404 .page-intro{padding-block:64px 40px}.field--noise{height:220px;margin-bottom:72px}@media (forced-colors:active){.identity-particles{display:none}.identity-plate.is-particles .identity-mark{visibility:visible}.logo-tile{forced-color-adjust:none;box-shadow:none;background:#fff;border-color:canvastext}.cert-sheet{outline-offset:-1px;outline:1px solid canvastext}.recog-mark-tray,.recog-mark-bars,.recog-mark-github{fill:canvastext}.recog-chart-line,.recog-chart-base{stroke:canvastext}.recog-chart-area{fill:none}.edu-item.is-current:before{forced-color-adjust:none;background:canvastext;border-color:canvastext;box-shadow:inset 0 0 0 3px canvas}[data-lifeline] .edu-item:not(.is-current):before{forced-color-adjust:none;background:canvas;border-color:canvastext}[data-lifeline].is-live .edu-item:not(.is-current):not(.is-passed):before{background:canvas;border-color:graytext}.role-node{forced-color-adjust:none}.role-node-ring{fill:canvas;stroke:canvastext}.role-node-core{fill:canvastext}[data-lifeline].is-live .role:not(.is-passed):not(.role--current) .role-node-ring{stroke:graytext}[data-lifeline].is-live .role:not(.is-passed):not(.role--current) .role-node-core{fill:canvas}.role-node-tie,.role-node-pulse,.role-edge{display:none}.role-years-dash{forced-color-adjust:none;background:canvastext}.rail-tenure{forced-color-adjust:none;fill:canvastext;stroke:canvas}.rail-lane:hover .rail-hit,.rail-lane:focus-visible .rail-hit,.rail-lane.is-shown .rail-hit{fill:canvas}.ticks li:before{forced-color-adjust:none;background:canvastext}.focus-still,.focus-media:after{display:none}.focus-svg .mon-label,.focus-svg .mon-head{fill:canvastext}.focus-svg .mon-trace,.focus-svg .mon-arrow{stroke:canvastext}.focus-svg .mon-rule{stroke:graytext}}@media (prefers-reduced-motion:reduce){.identity-particles{display:none}.identity-plate.is-particles .identity-mark{visibility:visible}.focus-gap,.focus-head,.focus-dot{animation:none;display:none}.channel,.cert-sheet,.cert-viewer-button{transition:none}.cert-viewer[open],.cert-viewer[open]::backdrop{animation:none}.rail-path{stroke-dasharray:none;animation:none}.edu-item:before,.role-node-ring,.role-node-core,.role-node-tie{transition:none}.role-node-pulse{animation:none}.rail-tenure,.role-tenure{transition:none}[data-lifeline].is-live .edu-item:not(.is-current):not(.is-passed):before{border-color:var(--accent)}[data-lifeline].is-live .role:not(.is-passed):not(.role--current) .role-node-ring{stroke:var(--accent)}[data-lifeline].is-live .role:not(.is-passed):not(.role--current) .role-node-core{fill:var(--accent)}[data-lifeline].is-live .role:not(.is-passed):not(.role--current) .role-node-tie{stroke:var(--accent-soft)}.role.reveal.is-in .tick-ring .ring-fill{transition:none}.role.reveal:not(.is-in) .tick-ring .ring-fill{stroke-dashoffset:var(--ring-off)}.card-fan>li,.card-fan.reveal.is-in>li{transition:none;animation:none}.card-fan-title{transition:none}.card-fan>li:focus-within{--up:0}.card-fan>li:focus-within~li{--push:0}.card-fan>li:has(~li:focus-within){--push:0}@media (hover:hover) and (pointer:fine){.card-fan>li:hover{--up:0}.card-fan>li:hover~li{--push:0}.card-fan>li:has(~li:hover){--push:0}.cert:hover .cert-sheet,.recog:hover .cert-sheet{transform:none}}}@media print{.rail-path{stroke-dasharray:none;animation:none}[data-lifeline].is-live .edu-item:not(.is-current):not(.is-passed):before{border-color:var(--accent)}[data-lifeline].is-live .role:not(.is-passed):not(.role--current) .role-node-ring{stroke:var(--accent)}[data-lifeline].is-live .role:not(.is-passed):not(.role--current) .role-node-core{fill:var(--accent)}[data-lifeline].is-live .role:not(.is-passed):not(.role--current) .role-node-tie{stroke:var(--accent-soft)}.role-edge,.role-edge:before,.edu-item:before,.ticks li:before,.role-years-dash,.role-period:before,.role-tenure:before{-webkit-print-color-adjust:exact;print-color-adjust:exact}.role-node-pulse{display:none}.rail-tenure,.role-tenure{opacity:1}.rail-tenure{stroke:var(--surface)}.role-meta{position:static}.role.reveal.is-in .tick-ring .ring-fill{transition:none}.role.reveal:not(.is-in) .tick-ring .ring-fill{stroke-dashoffset:var(--ring-off)}.card-fan,.cert-preview,.recog-mark{display:none}.recog-chart-months span:before{-webkit-print-color-adjust:exact;print-color-adjust:exact}.channel:hover{border-color:var(--line);box-shadow:none}.logo-tile{background:var(--surface);border-color:var(--line);box-shadow:none}.strength-list li{border-color:var(--line)}.identity-particles{display:none}.identity-plate.is-particles .identity-mark{visibility:visible}}.directory{flex-direction:column;gap:20px;padding-bottom:96px;display:flex}.directory-tools{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:20px;display:flex}.directory-tools:not(.is-live){visibility:hidden}.filters{border:1px solid var(--line);background:var(--surface);border-radius:999px;flex-wrap:wrap;gap:4px;padding:4px;display:flex}.filter{min-height:40px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:999px;align-items:center;gap:8px;padding:0 14px;font-size:14px;font-weight:600;transition:background-color .2s,color .2s,transform .15s;display:flex}.filter:hover{color:var(--ink)}.filter:active{transform:scale(.97)}.filter[aria-pressed=true]{background:var(--ink);color:var(--surface)}.filter span{border:1px solid var(--line);font-variant-numeric:tabular-nums;min-width:24px;height:20px;color:var(--muted);border-radius:999px;justify-content:center;align-items:center;padding:0 6px;font-size:12px;font-weight:500;display:inline-flex}.filter[aria-pressed=true] span{color:var(--accent-soft);border-color:#ffffff3d}.filters.is-sliding>.filter{transition:transform .15s}.filters.is-sliding>.filter[aria-pressed=true],.filters.is-sliding>.filter[aria-pressed=true] span{transition:color .25s .12s,border-color .25s .12s,transform .15s}.filters.is-sliding[data-pill-jump]>.filter[aria-pressed=true],.filters.is-sliding[data-pill-jump]>.filter[aria-pressed=true] span{transition:none}.glyph{fill:currentColor;flex-shrink:0;width:10px;height:10px}.directory-search{align-items:center;gap:20px;display:flex}.directory-count{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:12px;font-weight:600}.search{align-items:center;display:flex;position:relative}.search .icon{color:var(--muted);pointer-events:none;position:absolute;left:16px}.search input{width:calc(360px + var(--wide) * .1071);border:1px solid var(--line);background:var(--surface);border-radius:999px;max-width:100%;min-height:48px;padding:0 18px 0 44px;font-size:14px}.search input::placeholder{color:var(--muted)}.search input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.filter-divider{border-inline-start:1px solid var(--line);align-self:stretch;margin:6px 4px}.project-grid{overflow-anchor:none;margin-top:8px}.project-grid>li[hidden]{display:none}:root{view-transition-name:none}::view-transition{pointer-events:none}::view-transition-group(*){animation-duration:.35s}@media (width<=900px){.directory-tools,.directory-search{flex-direction:column;align-items:stretch}.directory-search{flex-direction:column-reverse;gap:12px}.filters{border-radius:18px}.filter-divider{border-inline-start:0;border-block-start:1px solid var(--line);flex-basis:100%;margin:2px 12px}.search input{width:100%}}.notice-frame{border-radius:calc(var(--radius) + 4px);margin-top:12px;padding:4px}.notice-frame[hidden]{display:none}.notice{border:1px solid var(--glass-edge);border-radius:var(--radius);background:var(--glass-inner);grid-template-columns:40px minmax(0,1fr) auto;align-items:center;gap:4px 14px;padding:18px 20px;display:grid}.notice .icon-tile{grid-row:span 2}.notice h2,.notice p{grid-column:2}.notice h2{letter-spacing:-.02em;font-size:20px;font-weight:600;line-height:1.2}.notice p{font-size:calc(16px + var(--wide) * .0018);color:var(--muted)}.notice .btn{grid-area:1/3/span 2}@media (width<=560px){.notice{grid-template-columns:40px minmax(0,1fr)}.notice .btn{grid-area:auto/1/auto/-1;margin-top:12px}}@media (prefers-reduced-motion:reduce){.filter,.filters.is-sliding>.filter,.filters.is-sliding>.filter[aria-pressed=true],.filters.is-sliding>.filter[aria-pressed=true] span{transition:none}}.react-site .editorial-content{display:contents}.react-site #main:focus{outline:none}.react-site .react-header{z-index:30}.react-site .header-inner{align-items:center;gap:18px;min-height:72px;display:flex}.react-site .brand{white-space:nowrap;align-items:center;gap:10px;display:inline-flex}.react-site .brand>span:first-child,.react-site .footer-name>span{display:inline-flex}.react-site .react-desktop-nav{align-items:center;gap:2px;margin-left:auto;display:flex}.react-site .react-nav-link{min-height:42px;color:var(--muted);border-radius:11px;justify-content:center;align-items:center;padding:0 10px;font-size:13px;font-weight:500;text-decoration:none;display:inline-flex;position:relative}.react-site .react-nav-link>span:last-child{z-index:1;position:relative}.react-site .nav-current{background:var(--surface-2);border-radius:11px;position:absolute;inset:0}.react-site .react-nav-link[aria-current=page],.react-site .react-nav-link:hover{color:var(--ink)}.react-site .header-cv{white-space:nowrap;padding-inline:14px}.react-site .react-menu-toggle{border:1px solid var(--line);background:var(--surface);border-radius:12px;justify-content:center;align-items:center;width:44px;height:44px;display:none}.react-site .react-menu-toggle svg{width:22px;height:22px}.react-site .react-mobile-nav{top:calc(100% + 8px);right:var(--gutter);left:var(--gutter);z-index:40;border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow-float);border-radius:18px;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;padding:14px;display:grid;position:absolute}.react-site .react-mobile-nav .react-nav-link{justify-content:flex-start;font-size:15px;display:flex}.react-site .nav-cv{min-height:44px;color:var(--accent-ink);grid-column:1/-1;justify-content:space-between;align-items:center;padding:10px;display:flex}.react-site .react-no-script-nav{flex-wrap:wrap;gap:8px 20px;padding-block:16px;display:none}.react-site .react-no-script-nav a{align-items:center;min-height:40px;display:inline-flex}.navigation-progress{background:var(--accent);z-index:100;transform-origin:0;pointer-events:none;width:100%;height:2px;position:fixed;top:0;left:0}.react-site .hero-greeting{z-index:31;white-space:nowrap;animation:none;translate:none;rotate:none}.react-site .react-role{min-height:1.25em}.react-site .react-role-words{white-space:nowrap;display:inline-block}.react-site .field-mode{isolation:isolate;position:relative}.react-site .field-mode[aria-pressed=true]{background:0 0}.react-site .field-mode>span:last-child{z-index:1;position:relative}.react-site .react-field-pill{border-radius:inherit;background:var(--ink);position:absolute;inset:0}.react-site .field-pause svg{width:16px;height:16px}.react-site .react-number{font-variant-numeric:tabular-nums}.react-site .react-number>span[aria-hidden]{align-items:baseline;display:inline-flex}.react-site .react-count-value{display:inline-block}.react-site .react-directory-tools{visibility:visible}.react-site .projects-intro .page-intro-copy{gap:14px;max-width:740px}.react-site .projects-intro .page-title{line-height:1.1}.react-site .react-filters{isolation:isolate;gap:5px;position:relative}.react-site .react-filters .filter{isolation:auto;border:1px solid #0000;min-height:44px;position:relative;overflow:visible}.react-site .react-filters .filter:active{transform:none}.react-site .react-filters .filter[aria-pressed=true]{background:0 0}.react-site .react-filters .filter-current{z-index:-1;background:var(--ink);border-radius:inherit;border:0;width:auto;height:auto;padding:0;position:absolute;inset:0}.react-site .react-filters .filter-name{min-width:0;height:auto;color:inherit;border:0;border-radius:0;padding:0;font-size:13px;font-weight:500}.react-site .search>svg{width:18px;height:18px;color:var(--muted);pointer-events:none;position:absolute;left:16px}.react-site .search input{min-width:0}.react-site .project-grid{position:relative}.react-site .react-project-card{height:100%;transition:box-shadow .35s var(--ease-out), border-color .25s ease}.react-site .react-project-card .project-card-link{cursor:zoom-in}.react-site .react-project-card .react-tags{padding:4px 22px 16px}.react-site .card-grid--featured .react-tags{padding:0 16px 12px}.react-site .project-fallback{padding:0 20px 20px;font-size:14px;display:block}.react-site .project-fallback p,.react-site .project-fallback ul,.react-site .project-fallback h3{margin-block:12px}.react-site .project-fallback ul{padding-left:20px}.react-site .project-fallback a{color:var(--accent-ink);margin-right:20px;text-decoration:underline;display:inline-block}.react-ready .project-fallback{display:none}.react-site .react-project-card:focus-within{outline:2px solid var(--accent);outline-offset:4px}.react-site .react-empty{text-align:center;padding:80px 20px}.react-site .react-empty p{margin:12px 0 24px}.react-modal-overlay{z-index:60;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0b0f198a;position:fixed;inset:0}.react-project-modal{--project-step-size:80px;z-index:61;grid-template-columns:var(--project-step-size) minmax(0,1fr) var(--project-step-size);width:min(1380px,100% - 48px);height:min(820px,100dvh - 48px);color:var(--ink);grid-template-rows:minmax(0,1fr);align-items:center;gap:20px;margin:auto;display:grid;position:fixed;inset:0}.react-project-panel{background:var(--surface);border:1px solid var(--line);border-radius:24px;grid-area:1/2;grid-template-rows:minmax(0,1fr) 64px;grid-template-columns:minmax(0,44%) minmax(0,1fr);min-width:0;height:100%;min-height:0;display:grid;position:relative;overflow:hidden;box-shadow:0 40px 100px -20px #0005}.react-project-modal:focus,.react-certificate-modal:focus{outline:none}.react-modal-close{z-index:3;background:var(--surface);border:1px solid var(--line);cursor:pointer;border-radius:50%;place-items:center;width:44px;height:44px;display:grid;position:absolute;top:14px;right:14px}.react-modal-close svg{width:20px;height:20px}.react-project-media{flex-direction:column;gap:12px;min-height:0;padding:16px 0 0 16px;display:flex}.react-project-figure{background:var(--surface-2);border-radius:14px;flex:1;justify-content:center;align-items:center;min-height:0;padding:20px;display:flex;position:relative}.react-project-figure img{object-fit:contain;border-radius:10px;width:100%;height:100%}.react-test-badge{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:3px 8px;font-size:12px;position:absolute;top:28px;left:28px}.react-screen-picker{flex-wrap:wrap;gap:8px;display:flex}.react-screen-picker button{border:1px solid var(--line);background:var(--surface);cursor:pointer;border-radius:8px;min-width:68px;min-height:44px;padding:2px}.react-screen-picker button[aria-pressed=true]{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.react-screen-picker img{object-fit:contain;border-radius:5px;width:64px;height:40px}.react-screen-caption{color:var(--muted);font-size:13px;line-height:1.5}.react-project-copy{overscroll-behavior:contain;flex-direction:column;align-items:flex-start;gap:16px;min-height:0;padding:32px;display:flex;overflow-y:auto}.react-project-copy .project-viewer-title{padding-right:34px}.react-project-copy .project-viewer-links{margin-top:8px}.react-modal-navigation{border-top:1px solid var(--line);color:var(--muted);grid-column:1/-1;justify-content:flex-end;align-items:center;gap:16px;padding:10px 18px;font-size:13px;display:flex}.react-modal-navigation button{border:1px solid var(--line);background:var(--surface);cursor:pointer;border-radius:50%;place-items:center;width:44px;height:44px;display:grid}.react-modal-navigation button:hover,.react-modal-close:hover{background:var(--surface-2)}.react-project-count{font-variant-numeric:tabular-nums;justify-content:center}.react-project-step{z-index:2;width:var(--project-step-size);height:var(--project-step-size);border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;opacity:0;pointer-events:none;border-radius:50%;grid-row:1;place-items:center;padding:0;transition:opacity .2s,background-color .2s;display:grid;box-shadow:0 8px 24px #0003}.react-project-step--previous{grid-column:1}.react-project-step--next{grid-column:3}.react-project-step svg{width:36px;height:36px}.react-project-modal:hover .react-project-step,.react-project-step:focus-visible{opacity:1;pointer-events:auto}.react-project-step:hover{background:var(--surface-2)}.react-project-step:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.react-project-step:disabled{visibility:hidden}@media (hover:none),(pointer:coarse){.react-project-step{opacity:1;pointer-events:auto}}@media (width<=1100px){.react-project-modal{--project-step-size:64px;gap:12px}}@media (width<=900px){.react-project-modal{grid-template-rows:minmax(0,1fr) var(--project-step-size);width:calc(100% - 20px);height:calc(100dvh - 20px)}.react-project-panel{border-radius:18px;grid-column:1/-1;grid-template-rows:210px minmax(0,1fr) 58px;grid-template-columns:minmax(0,1fr)}.react-project-panel:has(.react-screen-picker){grid-template-rows:240px minmax(0,1fr) 58px}.react-project-step{opacity:1;pointer-events:auto;grid-row:2}.react-project-media{gap:6px;padding:10px 10px 0}.react-project-figure{padding:10px}.react-project-copy{gap:14px;padding:20px}.react-project-copy .project-viewer-title{padding-right:0}}.react-certificate-modal{z-index:61;background:var(--surface);border:1px solid var(--line);border-radius:22px;flex-direction:column;gap:16px;width:min(1000px,100% - 32px);height:min(900px,100dvh - 32px);margin:auto;padding:24px;display:flex;position:fixed;inset:0}.react-certificate-modal h2{padding-right:50px;font-size:18px}.react-certificate-modal>img{object-fit:contain;flex:1;min-height:0}.react-certificate-links{flex-wrap:wrap;gap:12px 24px;display:flex}.react-certificate-modal .react-modal-navigation{padding:10px 0 0}.react-site .cert-viewer{display:none}.react-site .react-error{padding-block:100px}.react-site .react-error p{margin-block:20px}.react-site .rail-path{animation:none;display:none}.react-site .btn svg,.react-site .text-link svg,.react-site .footer-links svg{flex-shrink:0;width:18px;height:18px}@media (width<=1100px){.react-site .react-desktop-nav{display:none}.react-site .react-menu-toggle{display:inline-flex}.react-site .header-cv{margin-left:auto}}@media (width>=1101px){.react-site .react-mobile-nav{display:none}}@media (width<=700px){.react-site .header-inner{gap:10px;min-height:64px}.react-site .brand{gap:8px;font-size:14px}.react-site .header-cv{display:none}.react-site .react-menu-toggle{margin-left:auto}.react-site .hero{padding-top:32px}.react-site .hero-greeting{font-size:22px}.react-screen-picker button{min-width:52px}.react-screen-picker img{width:48px;height:30px}.react-screen-caption{display:none}.react-modal-close{top:12px;right:12px}.react-site .react-no-script-nav{width:100%}.react-site .header-inner:has(.react-no-script-nav){flex-wrap:wrap}}@media (height<=600px) and (width<=900px){:is(.react-project-panel,.react-project-panel:has(.react-screen-picker)){grid-template-rows:130px minmax(0,1fr) 54px}}@media (prefers-reduced-motion:reduce){.react-site *,.react-site :before,.react-site :after{scroll-behavior:auto!important}.react-site .react-project-card,.react-project-step{transition:none}.react-site .project-results,.react-site .project-grid>li,.react-site .react-project-card,.react-site .filter-current,.react-site .hero-greeting{opacity:1!important;transform:none!important}}@media (prefers-reduced-transparency:reduce),(forced-colors:active){.react-modal-overlay{-webkit-backdrop-filter:none;backdrop-filter:none}}@media print{.react-site .react-header,.react-site .react-menu-toggle,.react-site .field,.react-modal-overlay,.react-project-modal{display:none}.react-site .project-fallback{display:block}}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(/static/fonts/geist-latin.woff2)format("woff2")}:root{--font-body:Geist, var(--font);--canvas:#fff;--surface:#fff;--surface-2:#f3f5f6;--ink:#171717;--ink-2:#373737;--muted:#676767;--line:#dfe4e6;--line-soft:#edf0f1;--ambient:#d7f5fa;--accent:#355fbd;--accent-ink:#3056aa;--accent-tint:#e6edf8;--night:#101b24;--night-2:#172936;--header-fill:#ffffffc7;--glass-edge:#d7e1e5cc;--glass-fill:linear-gradient(#ffffffd1, #ffffffb3);--glass-sheen:radial-gradient(130% 90% at 0% 0%, #ffffff40, transparent 46%);--glass-rim:inset 0 1px 0 #ffffffb3;--glass-shadow:0 1px 3px #10252f05, 0 18px 40px -30px #10252f2b;--glass-inner:#ffffff9e;--glass-solid:#fcfdfd;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--canvas:#0a0a0a;--surface:#15181a;--surface-2:#1c2226;--ink:#f0f0f0;--ink-2:#d0d0d0;--muted:#b2b2b2;--line:#343b40;--line-soft:#252c30;--ambient:#103040;--accent:#8fb5f7;--accent-ink:#a3c5ff;--accent-mid:#8ea9d6;--accent-soft:#90aaca;--accent-tint:#1c2d43;--accent-deep:#d0e1ff;--hot:#eea17e;--live:#5bcd8d;--header-fill:#0a0a0ac7;--glass-edge:#98b3c233;--glass-fill:linear-gradient(#181e22db, #12171acc);--glass-sheen:radial-gradient(130% 90% at 0% 0%, #a0cfe50a, transparent 46%);--glass-rim:inset 0 1px 0 #ffffff09;--glass-shadow:0 1px 3px #0002, 0 18px 40px -30px #0008;--glass-inner:#ffffff09;--glass-solid:#171c1f;--shadow-lift:0 22px 44px -28px #0009;--shadow-float:0 44px 70px -40px #000c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body.react-site:before{background:radial-gradient(ellipse 85vw 90vh at 50% 0%, var(--ambient), transparent 75%);border-radius:0;width:auto;height:100vh;margin:0;inset:0;transform:none}body.react-site:after{content:none}.react-site .site-header{background:var(--header-fill);border-bottom-color:var(--line-soft)}.react-site .btn-ghost,.react-site .field-modes,.react-site .field-pause{background:var(--glass-solid)}.react-site .band-night .btn-ghost{background:0 0}.react-site .site-footer{--footer-top:var(--surface);--footer-bottom:var(--surface-2);--footer-line:var(--line)}.react-site [data-lifeline]{--lifeline-noise:var(--line)}.react-site :is(.project-card,.panel--data,.panel--software,.panel--ai,.panel--cloud,.profile-tile,.cert,.recog,.contact-box,.channel){background:var(--glass);border-color:var(--glass-edge);box-shadow:var(--glass-rim), var(--glass-shadow)}.react-site :is(.project-card,.card--link,.channel):hover{border-color:var(--accent-soft)}.react-site .channel:hover,.react-site :is(.cert,.recog) :is(.cert-preview,.recog-mark){background:var(--surface-2)}.react-site .project-card-body{border-top-color:var(--line-soft)}.react-site .logo-tile,.react-site .row-tile--logo:not(.row-tile--ink),.react-site .cert-sheet{background:#fff}[data-theme=dark] .tech-mark{color:color-mix(in srgb, var(--tech) 60%, #fff)}[data-theme=dark] .filter[aria-pressed=true]>span:not(.filter-current,.filter-name){color:#344e75;border-color:#afb9c6}[data-theme=dark] .field-mode[aria-pressed=true]{color:var(--canvas)}[data-theme=dark] .project-card-badge{border-color:var(--line)}[data-theme=dark] :is(.panel--data,.contact-box) .icon-tile{color:var(--canvas)}.react-site p:not(.footer-wordmark),.react-site .ticks,.react-site .read-copy,.project-viewer-highlights{font-family:var(--font-body)}.react-site :is(.story>p,.read-copy>p,.section-lede,.role-highlight,.contact-lede){letter-spacing:normal;font-size:18px;font-weight:400;line-height:1.55}.react-site :is(.hero-lead,.lede){font-family:var(--font-body);letter-spacing:-.015em;font-size:24px;font-weight:400;line-height:32px}.react-site .hero-lead{max-width:720px}.react-site :is(.pub-summary,.research-work p,.research-current p:not(.label),.ticks li,.edu-note,.next-card p,.cert-summary,.recog-summary,.project-card-body>p){font-size:16px;line-height:24px}.react-site .card-grid--featured .project-card-body>p{font-size:15px;line-height:22px}.react-project-copy :is(.project-viewer-summary,.project-viewer-role,.project-viewer-highlights){font-family:var(--font-body);font-size:16px;line-height:25px}.theme-toggle{border:1px solid var(--line);background:var(--glass-inner);width:44px;height:44px;color:var(--ink);cursor:pointer;border-radius:50%;flex:0 0 44px;place-items:center;padding:0;transition:background-color .18s,border-color .18s;display:inline-grid}.theme-toggle:hover{background:var(--surface-2);border-color:var(--accent-soft)}.theme-toggle svg{width:19px;height:19px}.theme-toggle .theme-icon-sun,[data-theme=dark] .theme-toggle .theme-icon-moon{display:none}[data-theme=dark] .theme-toggle .theme-icon-sun{display:block}@media (width>=1101px){.react-site .header-inner{gap:12px}.react-site .react-nav-link{padding-inline:8px}}@media (width<=700px){.react-site .theme-toggle{margin-left:auto}.react-site .react-menu-toggle{margin-left:0}.react-site :is(.hero-lead,.lede){font-size:20px;line-height:28px}.react-site :is(.story>p,.read-copy>p,.section-lede,.role-highlight,.contact-lede){font-size:17px;line-height:26px}}@media (prefers-reduced-motion:reduce){.theme-toggle{transition:none}}@media (forced-colors:active){body.react-site:before{display:none}.theme-toggle{border-color:buttontext}}@media print{:root[data-theme]{--canvas:#fff;--surface:#fff;--surface-2:#f3f5f6;--ink:#171717;--ink-2:#373737;--muted:#676767;--line:#dfe4e6;--accent:#355fbd;--accent-ink:#3056aa;--glass:#fff;--glass-inner:#fff;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}body.react-site:before,.theme-toggle{display:none}}
