@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex/IBMPlexSans-Regular-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045f,U+0462-0463,U+046a-046b,U+0472-0475,U+0490-04c2,U+04cf-04d9,U+04dc-04e9,U+04ee-04f9,U+0524-0525}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex/IBMPlexSans-Regular-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000d,U+0020-007e,U+00a0-00ff,U+0131,U+0152-0153,U+02c6,U+02da,U+02dc,U+2013-2014,U+2018-201a,U+201c-201e,U+2020-2022,U+2026,U+2030,U+2039-203a,U+2044,U+20ac,U+2122,U+2212,U+fb01-fb02}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ibm-plex/IBMPlexSans-Medium-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045f,U+0462-0463,U+046a-046b,U+0472-0475,U+0490-04c2,U+04cf-04d9,U+04dc-04e9,U+04ee-04f9,U+0524-0525}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ibm-plex/IBMPlexSans-Medium-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000d,U+0020-007e,U+00a0-00ff,U+0131,U+0152-0153,U+02c6,U+02da,U+02dc,U+2013-2014,U+2018-201a,U+201c-201e,U+2020-2022,U+2026,U+2030,U+2039-203a,U+2044,U+20ac,U+2122,U+2212,U+fb01-fb02}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/ibm-plex/IBMPlexSans-SemiBold-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045f,U+0462-0463,U+046a-046b,U+0472-0475,U+0490-04c2,U+04cf-04d9,U+04dc-04e9,U+04ee-04f9,U+0524-0525}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/ibm-plex/IBMPlexSans-SemiBold-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000d,U+0020-007e,U+00a0-00ff,U+0131,U+0152-0153,U+02c6,U+02da,U+02dc,U+2013-2014,U+2018-201a,U+201c-201e,U+2020-2022,U+2026,U+2030,U+2039-203a,U+2044,U+20ac,U+2122,U+2212,U+fb01-fb02}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex/IBMPlexMono-Regular-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045f,U+0462-0463,U+046a-046b,U+0472-0475,U+0490-04c2,U+04cf-04d9,U+04dc-04e9,U+04ee-04f9,U+0524-0525}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex/IBMPlexMono-Regular-Latin1.woff2) format("woff2");unicode-range:U+0020-007e,U+00a0-00ff,U+0131,U+0152-0153,U+02c6,U+02da,U+02dc,U+2013-2014,U+2018-201a,U+201c-201e,U+2020-2022,U+2026,U+2030,U+2039-203a,U+2044,U+20ac,U+2122,U+2212,U+fb01-fb02}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/ibm-plex/IBMPlexMono-SemiBold-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045f,U+0462-0463,U+046a-046b,U+0472-0475,U+0490-04c2,U+04cf-04d9,U+04dc-04e9,U+04ee-04f9,U+0524-0525}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/ibm-plex/IBMPlexMono-SemiBold-Latin1.woff2) format("woff2");unicode-range:U+0020-007e,U+00a0-00ff,U+0131,U+0152-0153,U+02c6,U+02da,U+02dc,U+2013-2014,U+2018-201a,U+201c-201e,U+2020-2022,U+2026,U+2030,U+2039-203a,U+2044,U+20ac,U+2122,U+2212,U+fb01-fb02}:root{--background: #f4f5f3;--surface: #fff;--surface-subtle: #eaedf0;--text: #1d232a;--secondary: #56616d;--accent: #275da8;--line: #d1d6dc;--tint: #e8edf4;--font-sans: "IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Consolas, monospace;--content-width: 1280px;--header-height: 72px;--motion-fast: .1s;--motion-normal: .15s;--motion-ease-out: cubic-bezier(.2, .8, .2, 1);color-scheme:light}:root[data-theme=dark]{--background: #111a27;--surface: #182536;--surface-subtle: #203149;--text: #edf3fb;--secondary: #b0bfd2;--accent: #93b9f4;--line: #3d506a;--tint: #1d2b3e;color-scheme:dark}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--background: #111a27;--surface: #182536;--surface-subtle: #203149;--text: #edf3fb;--secondary: #b0bfd2;--accent: #93b9f4;--line: #3d506a;--tint: #1d2b3e;color-scheme:dark}}*{box-sizing:border-box}html{scroll-padding-block:calc(var(--header-height) + 24px)}body{margin:0;background:var(--background);color:var(--text);font:18px/1.6 var(--font-sans)}[hidden]{display:none!important}a{color:inherit;text-decoration:none}a:not(.note-card){transition:color var(--motion-fast) var(--motion-ease-out)}a:hover{color:var(--accent)}a:focus-visible,button:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid var(--accent);outline-offset:5px}a,button,select,summary,[tabindex]{scroll-margin-block:calc(var(--header-height) + 24px)}button,select{font:inherit;font-size:13px;background:var(--surface);color:var(--text);border:1px solid var(--secondary);border-radius:4px;min-height:44px;padding:8px 12px;cursor:pointer;transition:color var(--motion-fast) var(--motion-ease-out),background-color var(--motion-fast) var(--motion-ease-out),border-color var(--motion-fast) var(--motion-ease-out)}button:hover,select:hover{background-color:var(--tint);border-color:var(--secondary)}p,h1,h2,h3,figure{margin:0}h1,h2,h3{font-weight:500;line-height:1.2}strong,b{font-weight:600}h2{font-size:36px;letter-spacing:-.04em}.wrap{width:calc(100% - 112px);max-width:var(--content-width);margin-inline:auto}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip{position:fixed;top:-100px;left:20px;z-index:100;background:var(--surface);padding:12px}.skip:focus{top:12px}.site-header{position:sticky;top:0;background:var(--background);border-bottom:1px solid var(--line);z-index:20}.header-inner{height:var(--header-height);display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:40px}.brand{font-size:24px;letter-spacing:-1px;font-weight:600;min-height:44px;display:flex;align-items:center;justify-self:start}.brand span{color:var(--secondary);font-weight:400;margin-left:9px}.primary-links,.nav-social{display:flex;align-items:center;gap:26px}.desktop-nav{font-size:14px;justify-self:center}.desktop-nav a{padding-block:10px}.desktop-actions{justify-self:end;font-size:14px}.nav-social{gap:22px}.nav-action-link{display:inline-flex;align-items:center;gap:7px}.nav-action-icon{width:16px;height:16px;flex:0 0 auto}.theme-control{width:44px;min-width:44px;padding:0;border-color:var(--line);background:transparent;display:inline-grid;place-items:center}.theme-icons{display:grid;place-items:center}.theme-icon{display:none;grid-area:1 / 1;width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.theme-control[data-theme-preference=system] .theme-icon-system,.theme-control[data-theme-preference=light] .theme-icon-light,.theme-control[data-theme-preference=dark] .theme-icon-dark{display:block}.theme-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}a[aria-current=page]{text-decoration:underline;text-underline-offset:6px}.mobile-menu{display:none}.hero{min-height:calc(100svh - var(--header-height));display:grid;grid-template-columns:1.2fr 1fr;gap:70px;align-items:center;position:relative;padding:90px 0 116px}.hero h1{font-size:clamp(54px,6.2vw,88px);line-height:1.01;letter-spacing:-.065em;margin-bottom:32px}.accent{color:var(--accent)}.role,.specialty{font-size:21px}.role{color:var(--accent)}.specialty{margin:3px 0 23px}.hero-copy,.hero-visual{transform:translateY(-16px)}.intro{max-width:505px;color:var(--secondary);font-size:18px;line-height:1.7}.scroll-hint{position:absolute;bottom:30px;left:0;color:var(--accent);font-size:14px;padding:8px 0}.scroll-hint span{display:inline-block;margin-left:16px;transition:transform var(--motion-fast) var(--motion-ease-out)}.scroll-hint:is(:hover,:focus-visible) span{transform:translateY(4px)}.hero-visual{aspect-ratio:1.12;position:relative;display:grid;place-items:center;max-width:470px;width:100%;justify-self:end;--hero-system-line-primary: #91a2b7;--hero-system-line-secondary: #c2cad4;--hero-system-node: #60758e;--hero-system-telemetry: #a6b5c6;--hero-system-active: #2f6fda;--hero-system-active-soft: #d9e7fa;--hero-system-aux-active: #6f8fb5;--hero-system-warn: #d45f2e;--hero-system-alert: #b6424b;--hero-system-primary-opacity: .88;--hero-system-secondary-opacity: .72;--hero-system-telemetry-opacity: .66;--hero-system-primary-related: .96;--hero-system-primary-muted: .58;--hero-system-secondary-related: .86;--hero-system-secondary-muted: .42;--hero-system-telemetry-related: .82;--hero-system-telemetry-muted: .38}:root[data-theme=dark] .hero-visual{--hero-system-line-primary: color-mix( in srgb, var(--line) 86%, var(--secondary) );--hero-system-line-secondary: var(--line);--hero-system-node: color-mix(in srgb, var(--secondary) 70%, var(--line));--hero-system-telemetry: var(--line);--hero-system-active: var(--accent);--hero-system-active-soft: color-mix( in srgb, var(--accent) 22%, var(--background) );--hero-system-aux-active: color-mix( in srgb, var(--hero-system-active) 45%, var(--hero-system-node) );--hero-system-warn: #e0a04b;--hero-system-alert: #d86a72;--hero-system-primary-opacity: .68;--hero-system-secondary-opacity: .38;--hero-system-telemetry-opacity: .36;--hero-system-primary-related: .88;--hero-system-primary-muted: .45;--hero-system-secondary-related: .7;--hero-system-secondary-muted: .22;--hero-system-telemetry-related: .63;--hero-system-telemetry-muted: .2}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .hero-visual{--hero-system-line-primary: color-mix( in srgb, var(--line) 86%, var(--secondary) );--hero-system-line-secondary: var(--line);--hero-system-node: color-mix(in srgb, var(--secondary) 70%, var(--line));--hero-system-telemetry: var(--line);--hero-system-active: var(--accent);--hero-system-active-soft: color-mix( in srgb, var(--accent) 22%, var(--background) );--hero-system-aux-active: color-mix( in srgb, var(--hero-system-active) 45%, var(--hero-system-node) );--hero-system-warn: #e0a04b;--hero-system-alert: #d86a72;--hero-system-primary-opacity: .68;--hero-system-secondary-opacity: .38;--hero-system-telemetry-opacity: .36;--hero-system-primary-related: .88;--hero-system-primary-muted: .45;--hero-system-secondary-related: .7;--hero-system-secondary-muted: .22;--hero-system-telemetry-related: .63;--hero-system-telemetry-muted: .2}}.hero-system-visual{display:block;width:95%;height:auto;overflow:visible}.hero-system-links,.hero-system-telemetry-links,.hero-system-observe-node,.hero-system-observe-reaction,.hero-system-telemetry-summary,.hero-system-trace-response{fill:none;vector-effect:non-scaling-stroke}.hero-system-links--primary{stroke:var(--hero-system-line-primary);stroke-width:1}.hero-system-links--primary>path{opacity:var(--hero-system-primary-opacity)}.hero-system-links--secondary{stroke:var(--hero-system-line-secondary);stroke-width:.85}.hero-system-links--secondary>path{opacity:var(--hero-system-secondary-opacity)}.hero-system-telemetry-links{stroke:var(--hero-system-telemetry);stroke-width:.85;stroke-dasharray:1.5 5}.hero-system-telemetry-links>path{opacity:var(--hero-system-telemetry-opacity)}.hero-system-nodes>:not(.hero-system-state-node,.hero-system-observe-node),.hero-system-state-node,.hero-system-observe-node{stroke:var(--hero-system-node);stroke-width:1}.hero-system-nodes>circle,.hero-system-nodes>rect,.hero-system-router,.hero-system-state-node rect{fill:var(--background)}.hero-system-router{stroke-width:1.15}.hero-system-state-node rect:last-child{fill:var(--hero-system-line-secondary);fill-opacity:.2}.hero-system-observe-node{opacity:.68}.hero-system-observe-node path{stroke-width:1.1}.hero-system-observe-core{fill:var(--hero-system-active);stroke:none;opacity:.34}.hero-system-visual.is-telemetry-active .hero-system-observe-node{opacity:.82}.hero-system-visual.is-telemetry-active .hero-system-observe-core{opacity:.58}.hero-system-visual.is-telemetry-active .hero-system-observe-reaction{opacity:.24}.hero-system-visual.is-telemetry-busy .hero-system-observe-node{stroke-width:1.15;opacity:.94}.hero-system-visual.is-telemetry-busy .hero-system-observe-core{opacity:.78}.hero-system-visual.is-telemetry-busy .hero-system-observe-reaction{stroke-width:1.1;opacity:.42}.hero-system-pulse{offset-distance:0%;offset-rotate:auto;opacity:0}[data-hero-pulse-template]{display:none}[data-hero-pulse-instance]{display:block}.hero-system-pulse-anchor{fill:transparent;stroke:none}.hero-system-pulse-glow{fill:var(--hero-system-active);filter:url(#hero-system-soft-glow);opacity:.28}.hero-system-pulse-tail{fill:none;stroke:url(#hero-system-tail);stroke-linecap:round;stroke-width:1.25;vector-effect:non-scaling-stroke}.hero-system-pulse-core{fill:var(--hero-system-active);stroke:var(--background);stroke-width:.45;vector-effect:non-scaling-stroke}.hero-system-pulse-telemetry .hero-system-pulse-glow{opacity:.2}.hero-system-pulse-telemetry .hero-system-pulse-tail{stroke-width:1}.hero-system-pulse-heavy .hero-system-pulse-glow,.hero-system-pulse-heavy .hero-system-pulse-core{fill:var(--hero-system-warn)}.hero-system-pulse-heavy .hero-system-pulse-tail{stroke:url(#hero-system-tail-warn);stroke-width:1.35}.hero-system-pulse-aux .hero-system-pulse-tail{stroke:var(--hero-system-aux-active);stroke-width:.8;opacity:.72}.hero-system-pulse-aux .hero-system-pulse-core{fill:var(--hero-system-aux-active);stroke-width:.35;opacity:.82}.hero-system-pulse-alert .hero-system-pulse-glow,.hero-system-pulse-alert .hero-system-pulse-core,.hero-system-pulse-feedback .hero-system-pulse-glow,.hero-system-pulse-feedback .hero-system-pulse-core{fill:var(--hero-system-alert)}.hero-system-pulse-alert .hero-system-pulse-tail,.hero-system-pulse-feedback .hero-system-pulse-tail{stroke:var(--hero-system-alert)}.hero-system-pulse-probe .hero-system-pulse-tail{stroke:var(--hero-system-aux-active);stroke-width:.7;opacity:.62}.hero-system-pulse-probe .hero-system-pulse-core{fill:var(--hero-system-aux-active);stroke-width:.25}.hero-system-reaction,.hero-system-observe-reaction,.hero-system-fault-reaction{fill:none;stroke:var(--hero-system-active);stroke-width:1;opacity:0;vector-effect:non-scaling-stroke}.hero-system-source-reaction{transform-box:fill-box;transform-origin:center}.hero-system-source-core{fill:var(--hero-system-active-soft);stroke-width:1.15}.hero-system-source-ring{fill:none;stroke-width:.8}.hero-system-router-reaction>path:first-child{fill:var(--background);stroke-width:1.3}.hero-system-router-core{fill:var(--hero-system-active);stroke:none}.hero-system-router-reaction.is-alert{stroke:var(--hero-system-alert)}.hero-system-router-reaction.is-alert .hero-system-router-core{fill:var(--hero-system-alert)}.hero-system-service-reaction>:first-child{fill:var(--background);stroke-width:1.1}.hero-system-service-core{fill:var(--hero-system-active);stroke:none}.hero-system-source-reaction.is-heavy,.hero-system-service-reaction.is-heavy{stroke:var(--hero-system-warn)}.hero-system-source-reaction.is-heavy .hero-system-source-core,.hero-system-service-reaction.is-heavy .hero-system-service-core{fill:var(--hero-system-warn)}.hero-system-service-step{fill:none;stroke-width:.75}.hero-system-state-reaction rect:first-child{fill:none;stroke-width:.8}.hero-system-state-reaction rect:last-child{fill:var(--hero-system-active-soft);stroke-width:1.1}.hero-system-state-reaction.is-committed{opacity:.76}.hero-system-observe-reaction{stroke-width:.85}.hero-system-observe-reaction.is-busy{stroke-width:1.1}.hero-system-observe-reaction>circle{fill:none;opacity:.38}.hero-system-observe-sweep{fill:none;stroke-width:1.35;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1}.hero-system-fault-reaction{stroke:var(--hero-system-alert);stroke-width:1}.hero-system-fault-reaction>circle{fill:none;opacity:.48}.hero-system-fault-reaction>path{fill:none;stroke-linecap:round;stroke-width:1.4}.hero-system-aux-reaction{fill:var(--background);stroke:var(--hero-system-aux-active);stroke-width:.8;opacity:0;vector-effect:non-scaling-stroke}.hero-system-service-states>*{fill:none;stroke:var(--hero-system-warn);stroke-width:1;opacity:0;vector-effect:non-scaling-stroke;transition:opacity .24s var(--motion-ease-out),stroke .24s var(--motion-ease-out)}.hero-system-service-states>[data-hero-status=degraded]{opacity:.58}.hero-system-service-states>[data-hero-status=open]{stroke:var(--hero-system-alert);opacity:.7}.hero-system-service-states>[data-hero-status=recovering]{stroke:var(--hero-system-warn);stroke-dasharray:3 3;opacity:.62}.hero-system-service-states>.is-faulting{stroke:var(--hero-system-alert);opacity:.82}.hero-system-links path.is-unavailable{opacity:.25}.hero-system-links path.is-degraded{stroke:var(--hero-system-warn);opacity:.5}.hero-system-hold-ring,.hero-system-rate-limit-ring{fill:none;stroke:var(--hero-system-active);stroke-width:.85;opacity:0;transform-box:fill-box;transform-origin:center;vector-effect:non-scaling-stroke}.hero-system-hold-ring{stroke-dasharray:1;stroke-dashoffset:1;transform:rotate(-90deg);transform-box:fill-box;transform-origin:center}.hero-system-hold-ring.is-holding{opacity:.48;animation:hero-system-hold .7s linear forwards}.hero-system-hold-ring.is-armed{stroke:var(--hero-system-warn);opacity:.72}.hero-system-rate-limit-ring.is-active{stroke:var(--hero-system-warn);animation:hero-system-rate-limit .72s ease-out}.hero-system-queue circle{fill:var(--hero-system-active);opacity:0;transition:opacity .18s var(--motion-ease-out),fill .18s var(--motion-ease-out)}.hero-system-queue circle.is-visible{opacity:.55}.hero-system-queue circle.is-warn{fill:var(--hero-system-warn);opacity:.68}.hero-system-hit-area{fill:transparent;stroke:transparent;stroke-width:1;pointer-events:all}.hero-system-visual.is-interactive .hero-system-hit-area--action{cursor:pointer}.hero-system-hit-area--action:focus-visible{stroke:transparent;outline:none}.hero-system-focus-rings{fill:none;stroke:var(--hero-system-active);stroke-width:.85;vector-effect:non-scaling-stroke}.hero-system-focus-rings>*{opacity:0}.hero-system-focus-rings>.is-visible{opacity:.76}@media(hover:hover)and (pointer:fine){.hero-system-links path,.hero-system-telemetry-links path,.hero-system-nodes>*{transition:opacity .16s var(--motion-ease-out),stroke .2s var(--motion-ease-out)}.hero-system-visual.has-neighborhood .hero-system-links--primary .is-neighborhood-muted{opacity:var(--hero-system-primary-muted)}.hero-system-visual.has-neighborhood .hero-system-links--primary .is-neighborhood-route{opacity:var(--hero-system-primary-related)}.hero-system-visual.has-neighborhood .hero-system-links--secondary .is-neighborhood-muted{opacity:var(--hero-system-secondary-muted)}.hero-system-visual.has-neighborhood .hero-system-links--secondary .is-neighborhood-route{opacity:var(--hero-system-secondary-related)}.hero-system-visual.has-neighborhood .hero-system-telemetry-links .is-neighborhood-muted{opacity:var(--hero-system-telemetry-muted)}.hero-system-visual.has-neighborhood .hero-system-telemetry-links .is-neighborhood-route{opacity:var(--hero-system-telemetry-related)}.hero-system-visual.has-neighborhood .hero-system-links path,.hero-system-visual.has-neighborhood .hero-system-telemetry-links path,.hero-system-visual.has-neighborhood .hero-system-nodes>*{transition-duration:.16s}.hero-system-visual.has-neighborhood .hero-system-nodes>.is-neighborhood-muted{opacity:.72}.hero-system-visual.has-neighborhood .is-neighborhood-node{stroke:color-mix(in srgb,var(--hero-system-node) 84%,var(--hero-system-active))}.hero-system-visual.has-neighborhood .is-neighborhood-focus{stroke:var(--hero-system-active)}.hero-system-visual.has-neighborhood .hero-system-links path.is-unavailable{opacity:.25}.hero-system-visual.has-neighborhood .hero-system-links path.is-degraded{stroke:var(--hero-system-warn);opacity:.5}}.hero-system-visual.is-inspecting .hero-system-links path:not(.is-inspection-route,.is-inspection-failed),.hero-system-visual.is-inspecting .hero-system-telemetry-links path:not(.is-inspection-telemetry,.is-inspection-failed),.hero-system-visual.is-inspecting .hero-system-nodes{opacity:.68}.hero-system-links path.is-inspection-route{stroke:var(--hero-system-active);opacity:.92}.hero-system-links path.is-inspection-failed,.hero-system-telemetry-links path.is-inspection-failed{stroke:var(--hero-system-alert);opacity:.72}.hero-system-telemetry-links path.is-inspection-telemetry{stroke:var(--hero-system-active);opacity:.7}[data-hero-marker]{fill:var(--hero-system-active);opacity:0}[data-hero-alert-marker]{fill:var(--hero-system-alert);opacity:0}[data-hero-marker].is-visible{opacity:.72}[data-hero-alert-marker].is-visible{opacity:.82}.hero-system-trace-span{fill:none;stroke:var(--hero-system-active);stroke-width:1;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1;opacity:0;vector-effect:non-scaling-stroke}.hero-system-telemetry-summary line{fill:none;stroke:var(--hero-system-active);stroke-width:.85;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1;opacity:0;vector-effect:non-scaling-stroke}.hero-system-telemetry-summary line.is-visible{stroke-dashoffset:0;opacity:.48}.hero-system-trace-response{opacity:1}.hero-system-trace-span.is-visible{stroke-dashoffset:0;opacity:.68}.hero-system-trace-span.is-heavy{stroke:var(--hero-system-warn)}.hero-system-trace-span.is-alert{stroke:var(--hero-system-alert)}.hero-system-source-reaction.is-active{animation:hero-system-source-active .9s ease-out}.hero-system-router-reaction.is-active{animation:hero-system-router-active .8s ease-out}.hero-system-service-reaction.is-active{animation:hero-system-service-active .98s ease-out}.hero-system-state-reaction.is-active{animation:hero-system-state-active 1.4s ease-out}.hero-system-aux-reaction.is-active{animation:hero-system-aux-active .56s ease-out}.hero-system-observe-reaction.is-active{animation:hero-system-observe-active 1.8s ease-out}.hero-system-observe-reaction.is-active .hero-system-observe-sweep{animation:hero-system-observe-sweep-active 1.8s ease-out}.hero-system-fault-reaction.is-active{animation:hero-system-fault-active 1.8s ease-out}.hero-system-trace-span.is-visible.is-drawing{animation:hero-system-trace-draw .65s ease-out forwards}.hero-system-telemetry-summary line.is-visible.is-drawing{animation:hero-system-trace-draw .52s ease-out forwards}.hero-system-telemetry-summary.is-fading{animation:hero-system-trace-fade .7s ease-out forwards}.hero-system-trace-response.is-fading,.hero-system-telemetry-memory.is-fading{animation:hero-system-trace-fade .8s ease-out forwards}@keyframes hero-system-source-active{0%{opacity:0;transform:scale(.76)}28%{opacity:.84;transform:scale(1)}66%{opacity:.56;transform:scale(1.16)}to{opacity:0;transform:scale(1.28)}}@keyframes hero-system-router-active{0%,to{opacity:0}25%,68%{opacity:.84}}@keyframes hero-system-service-active{0%,to{opacity:0}28%,68%{opacity:.82}}@keyframes hero-system-state-active{0%,to{opacity:0}22%,72%{opacity:.82}}@keyframes hero-system-aux-active{0%,to{opacity:0}30%,68%{opacity:.58}}@keyframes hero-system-observe-active{0%,to{opacity:0}22%,74%{opacity:.72}}@keyframes hero-system-observe-sweep-active{0%{stroke-dashoffset:1}72%,to{stroke-dashoffset:0}}@keyframes hero-system-fault-active{0%,to{opacity:0}24%,70%{opacity:.78}}@keyframes hero-system-hold{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}@keyframes hero-system-rate-limit{0%{opacity:0;transform:scale(.82)}32%{opacity:.7}to{opacity:0;transform:scale(1.25)}}@keyframes hero-system-trace-draw{0%{stroke-dashoffset:1;opacity:0}20%{opacity:.52}to{stroke-dashoffset:0;opacity:.68}}@keyframes hero-system-trace-fade{0%{opacity:1}to{opacity:0}}@media(prefers-reduced-motion:reduce){.scroll-hint span{transition:none}.scroll-hint:is(:hover,:focus-visible) span{transform:none}.hero-system-pulse,.hero-system-reaction,.hero-system-observe-reaction,.hero-system-fault-reaction,.hero-system-aux-reaction,.hero-system-hold-ring,.hero-system-rate-limit-ring,.hero-system-service-states,.hero-system-queue,[data-hero-marker],[data-hero-alert-marker],.hero-system-trace-response,.hero-system-telemetry-summary,.hero-system-telemetry-summary line,.hero-system-trace-span{animation:none!important;opacity:0}}.section{padding:88px 0}.home-projects{background:var(--surface)}.home-projects{scroll-margin-top:calc(var(--header-height) + 24px)}.home-research{padding-block:96px}.section-heading{display:flex;align-items:baseline;justify-content:space-between;gap:28px;margin-bottom:36px}.section-heading p{font-size:14px;color:var(--secondary)}.projects-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:34px 28px}.project-card{display:grid;grid-template-rows:subgrid;grid-row:span 5;row-gap:18px;min-width:0;border-bottom:1px solid var(--line);padding-bottom:26px;transition:border-color var(--motion-normal) var(--motion-ease-out)}.project-card:hover{border-color:var(--secondary)}.project-card:hover h3,.project-card:focus-visible h3{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px}.figure img{display:block;width:100%;height:auto}.cover{position:relative;aspect-ratio:16/9;background:var(--tint);overflow:hidden}.cover img{height:100%;width:100%;padding:8px 14px 20px}.cover.crop img{padding:0}.cover figcaption{position:absolute;bottom:10px;left:14px;font:10px/1.3 var(--font-sans);color:var(--secondary)}.figure:not(.cover) figcaption{font-size:14px;color:var(--secondary);margin-top:8px}.metadata{font-size:13px;color:var(--secondary);line-height:1.6}.metadata>span:not(.project-card-context){color:var(--accent);font-weight:600}.project-card-context{display:block;margin-top:4px;color:var(--secondary);font:12px/1.5 var(--font-mono)}.project-card h3{font-size:24px;letter-spacing:-.025em;line-height:1.3}.description{font-size:16px;color:var(--secondary);line-height:1.65}.tags{display:flex;flex-wrap:wrap;align-content:start;gap:7px;list-style:none;margin:0;padding:0;color:var(--secondary);font-size:11px}.project-card .tags,.project-archive .tags{font-size:12px}.tags li{padding:3px 8px;background:var(--surface-subtle);border-radius:3px}.text-link{display:inline-block;font-size:15px;color:var(--accent);text-decoration:underline;text-underline-offset:6px;margin-top:30px;padding-block:8px}.section-link{display:table;margin:30px auto 0;text-align:center}.label{font-size:12px;text-transform:uppercase;letter-spacing:.12em;color:var(--secondary);margin-bottom:16px}.experience-content{display:grid;grid-template-columns:1fr 2fr;gap:60px}.experience h2{font-size:28px}.experience-items{display:grid;grid-template-columns:1fr 1fr;gap:28px}.experience-items strong{display:block;font-weight:500;font-size:18px}.experience-items span{display:block;font-size:15px;color:var(--secondary);margin-top:5px}.publication-row{display:grid;grid-template-columns:90px 1fr 28px;gap:24px;padding:28px 0;border-top:1px solid var(--line)}.publication-row:first-child{border-top:0;padding-top:0}.publication-row h3{font-size:23px;line-height:1.45;font-weight:500;margin-bottom:12px;max-width:950px}.publication-row:hover h3,.publication-row:focus-visible h3{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px}.year{font:14px/1.6 var(--font-mono);color:var(--accent);padding-top:4px}.summary{font-size:14px;color:var(--secondary);margin-bottom:7px}.authors{font-size:13px;color:var(--secondary)}.authors strong{color:var(--text);font-weight:600}.arrow{color:var(--accent);transition:transform var(--motion-fast) var(--motion-ease-out)}.publication-row:hover .arrow,.publication-row:focus-visible .arrow{transform:translate(3px)}.contact{padding-block:96px;background:var(--surface-subtle)}.contact-inner{display:grid;grid-template-columns:1fr 1fr;gap:65px}.contact h2{font-size:52px;max-width:400px;line-height:1.1;margin-bottom:22px}.contact p:not(.label){max-width:380px;font-size:16px;color:var(--secondary)}.contact-right{align-self:center}.email{font-size:clamp(18px,2vw,29px);letter-spacing:-.03em;text-decoration:underline;text-underline-offset:7px;display:block;overflow-wrap:anywhere;margin-bottom:24px}.copy-status{display:inline-block;font-size:12px;color:var(--secondary);margin-left:12px}footer{border-top:1px solid var(--line);background:var(--surface-subtle);color:var(--secondary)}.footer-inner{padding:28px 0;display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:end;gap:24px;font-size:13px}footer strong,.footer-identity span{display:block}footer strong{color:var(--text);font-size:15px;font-weight:600}.footer-identity span{margin-top:3px}.footer-links{display:flex;flex-wrap:wrap;justify-content:center;gap:8px 18px}.footer-copyright{white-space:nowrap}.footer-closing{justify-self:end}.footer-back-mobile{display:none}footer a{padding-block:8px}.skeleton{padding:80px 0 100px;min-height:70vh;max-width:850px}.skeleton h1{font-size:clamp(32px,5vw,56px);letter-spacing:-.04em;overflow-wrap:anywhere;margin-bottom:24px}.skeleton h2{font-size:24px;margin:32px 0 12px}.skeleton p{margin-bottom:20px}.skeleton a:not(.text-link){text-decoration:underline;text-underline-offset:4px;color:var(--accent)}.notice{color:var(--secondary)}.prose{max-width:70ch}.prose img{max-width:100%;height:auto}.prose pre{overflow:auto;padding:20px;background:var(--surface)}.about-page{padding:76px 0 110px}.about-introduction{display:grid;grid-template-columns:minmax(0,780px) minmax(240px,320px);justify-content:space-between;align-items:center;gap:80px}.about-introduction h1{font-size:clamp(48px,7vw,76px);letter-spacing:-.055em}.about-lede{display:grid;gap:20px;margin-top:30px;color:var(--secondary);font-size:clamp(18px,1.7vw,22px);line-height:1.65}.about-portrait{width:100%;max-width:300px;justify-self:end}.about-portrait img{display:block;width:100%;height:auto}.about-section{max-width:1180px;margin-top:104px}.about-section>h2{margin-bottom:38px;font-size:clamp(32px,4vw,48px)}.about-focus,.about-principles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:42px}.about-focus>article,.about-principles article{padding-top:22px;border-top:1px solid var(--line)}.about-focus h3,.about-principles h3{font-size:20px}.about-focus>article>p,.about-principles p{margin-top:13px;color:var(--secondary);font-size:15px}.about-focus>article>.about-focus-scope{margin-top:22px;color:var(--secondary);font:12px/1.75 var(--font-mono)}.about-focus-state{margin-top:24px}.about-focus-state h4{margin:0;color:var(--accent);font:11px/1.5 var(--font-mono);font-weight:600;letter-spacing:.05em;text-transform:uppercase}.about-focus-state p{margin-top:8px;color:var(--secondary);font-size:13px}.about-focus-state ul{margin:11px 0 0;padding:0;list-style:none;color:var(--secondary);font:12px/1.75 var(--font-mono)}.about-focus-state li{display:inline}.about-focus-state li:not(:last-child):after{content:" · ";color:var(--accent)}.about-dated-list,.about-recognition-grid,.about-mentions{margin:0;padding:0;list-style:none}.about-dated-list{border-top:1px solid var(--line)}.about-dated-row{display:grid;grid-template-columns:190px minmax(0,1fr);gap:56px;padding:34px 0 40px;border-bottom:1px solid var(--line)}.about-date,.about-mention-meta{color:var(--secondary);font:12px/1.6 var(--font-mono)}.about-row-content h3{font-size:24px}.about-row-content{max-width:840px}.about-row-content>p:not(.about-organisation,.about-note){margin-top:16px;color:var(--secondary)}.about-organisation{margin-top:5px;color:var(--accent);font-size:14px}.about-note{display:inline-block;margin-top:18px;color:var(--secondary);font-size:14px}.about-inline-link{display:inline-block;margin-top:20px;color:var(--accent);text-decoration:underline;text-underline-offset:5px}.about-reading-section,.about-research-introduction{max-width:760px}.about-prose{display:grid;gap:20px;color:var(--secondary)}.about-reading-section .about-prose{font-size:18px}.about-education-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:42px}.about-education-grid article{padding-top:22px;border-top:1px solid var(--line)}.about-education-grid h3{margin-top:9px;font-size:24px}.about-programme-link{display:inline-block;margin-top:15px;color:var(--accent);text-decoration:underline;text-underline-offset:5px}.about-education-grid article>p:not(.about-date,.about-note){margin-top:7px;color:var(--secondary)}.about-research-layout{display:grid;grid-template-columns:minmax(0,760px) minmax(260px,340px);justify-content:space-between;gap:72px;align-items:start}.about-community{padding-top:22px;border-top:1px solid var(--line)}.about-community h3{font-size:23px}.about-community>p:not(.about-organisation){margin-top:18px;color:var(--secondary);font-size:15px}.about-recognition-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:42px 48px}.about-recognition-grid li{padding-top:22px;border-top:1px solid var(--line)}.about-recognition-grid h3{margin:9px 0 0;font-size:21px}.about-distinction{margin-top:6px;color:var(--text)}.about-recognition-grid li>p:not(.about-date,.about-distinction){margin-top:15px;color:var(--secondary);font-size:15px}.about-mentions{border-top:1px solid var(--line)}.about-mentions>li{display:grid;grid-template-columns:190px minmax(0,880px);gap:56px;padding:30px 0 36px;border-bottom:1px solid var(--line)}.about-mention-meta span{display:block;margin-top:5px}.about-mentions h3{font-size:24px}.about-mentions li>div>p{margin-top:14px;color:var(--secondary)}.project-cover-placeholder{display:grid;place-items:center;padding:24px;color:var(--secondary);text-align:center;font:12px/1.5 var(--font-mono);letter-spacing:.04em}.project-detail{padding:76px 0 110px}.project-detail-header{max-width:1060px}.project-detail-eyebrow{margin-bottom:20px;color:var(--accent);font:13px/1.5 var(--font-mono);letter-spacing:.08em;text-transform:uppercase}.project-detail h1{max-width:1040px;font-size:clamp(42px,6vw,76px);letter-spacing:-.055em;overflow-wrap:anywhere}.project-detail-summary{max-width:840px;margin-top:24px;color:var(--secondary);font-size:clamp(19px,2vw,25px);line-height:1.5}.project-quick-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 44px;margin:48px 0 0;padding:10px 20px;background:var(--surface);border-block:1px solid var(--line)}.project-quick-facts>div{display:grid;grid-template-columns:minmax(96px,.3fr) minmax(0,1fr);gap:18px;padding:17px 0;border-bottom:1px solid color-mix(in srgb,var(--line) 55%,transparent)}.project-quick-facts>div:nth-last-child(-n+2){border-bottom:0}.project-quick-facts>.project-fact-wide{grid-column:1 / -1;grid-template-columns:minmax(96px,.142fr) minmax(0,1fr)}.project-quick-facts dt{color:var(--secondary);font:13px/1.5 var(--font-mono)}.project-quick-facts dd{min-width:0;margin:0}.project-quick-facts dd strong,.project-quick-facts dd span{display:block}.project-quick-facts dd span{margin-top:5px;color:var(--secondary);font-size:14px}.project-resource-links{display:flex;flex-wrap:wrap;gap:8px 24px;margin:0;padding:0;list-style:none}.project-resource-links a,.project-case-study a{color:var(--accent);text-decoration:underline;text-underline-offset:5px}.project-detail>.project-media{max-width:1080px;margin:64px auto 0}.project-media{margin-block:46px}.project-media-group{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;align-items:start;margin-block:46px}.project-media-group .figure{margin:0}.project-media-group--landscape-portrait{grid-template-columns:minmax(0,1.45fr) minmax(0,.75fr)}.project-media-group--landscape-portrait .figure:nth-child(2) img{width:auto;max-width:100%;max-height:480px;margin-inline:auto;object-fit:contain}.project-media--compact{width:min(420px,100%);margin-inline:auto}.project-media .figure[data-role=diagram]{padding:16px;background:#fff}.project-media .figure{margin:0}.project-video-frame{position:relative;aspect-ratio:16 / 9;overflow:hidden;background:var(--tint)}.project-video-frame video,.project-video-poster{display:block;width:100%;height:100%;object-fit:contain}.project-video-poster{display:none}.project-media-video figcaption{margin-top:8px;color:var(--secondary);font-size:14px}.project-media-placeholder>div{display:grid;place-items:center;min-height:100%;padding:30px;background:var(--tint);color:var(--secondary);text-align:center;font:12px/1.5 var(--font-mono);letter-spacing:.06em}.project-media-ratio-16-9>div{aspect-ratio:16 / 9}.project-media-ratio-3-2>div{aspect-ratio:3 / 2}.project-media-ratio-wide>div{aspect-ratio:2 / 1}.project-media-placeholder figcaption{margin-top:9px;color:var(--secondary);font-size:12px}.project-reading-composition{display:grid;grid-template-columns:200px minmax(0,760px);column-gap:68px;align-items:start;width:100%;max-width:1080px;margin:88px auto 0}.project-toc{position:sticky;top:calc(var(--header-height) + 40px);min-width:0}.project-toc>p{margin-bottom:14px;color:var(--secondary);font:11px/1.5 var(--font-mono);letter-spacing:.1em;text-transform:uppercase}.project-toc ol{display:grid;gap:9px;margin:0;padding:0;list-style:none}.project-toc a{display:inline-block;color:var(--secondary);font-size:13px;line-height:1.45}.project-toc a:hover,.project-toc a:focus-visible,.project-toc a[aria-current=location]{color:var(--accent)}.project-toc a[aria-current=location]{font-weight:600}.project-case-study{grid-column:2;max-width:760px;margin:0}.project-case-study>h2{margin:84px 0 22px;font-size:clamp(28px,3.2vw,40px);letter-spacing:-.035em}.project-case-study>h2:first-child{margin-top:0}.project-case-study>p{margin-bottom:22px;color:var(--secondary)}.project-case-study>ul,.project-case-study>ol{margin:18px 0 28px;padding-left:24px;color:var(--secondary)}.project-case-study li+li{margin-top:7px}.project-case-study code{padding:2px 5px;background:var(--tint);font:.86em var(--font-mono)}.project-case-study>.project-media--wide{width:min(1000px,calc(100% + clamp(90px,calc(50vw - 507px),140px)));max-width:none;margin-left:0;transform:none}.project-publications{margin-top:30px;padding-top:24px;border-top:1px solid var(--line)}.project-publications h3{margin-bottom:14px;font-size:17px}.project-publications ul{display:grid;gap:14px;margin:0;padding:0;list-style:none}.project-publications li{display:grid;gap:3px}.project-publications li span{color:var(--secondary);font-size:13px}.project-related{display:grid;grid-template-columns:190px minmax(0,760px);column-gap:50px;max-width:1000px;margin:72px auto 0}.project-related>*{grid-column:2}.project-related h2{margin-bottom:12px;color:var(--secondary);font:12px/1.5 var(--font-mono);letter-spacing:.06em;text-transform:uppercase}.project-related ul{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:12px 28px;margin:0;padding:0;list-style:none}.project-related a{display:grid;gap:6px;padding:8px 0}.project-related a span{color:var(--secondary);font-size:13px}.project-related a strong{font-size:18px;font-weight:500}.publication-detail{padding:76px 0 110px}.publication-detail-header{max-width:1040px;padding-bottom:48px}.detail-kicker{display:inline-block;margin-bottom:22px;color:var(--accent);font-size:13px;text-decoration:underline;text-underline-offset:5px}.publication-detail h1{font-size:clamp(38px,5.7vw,70px);letter-spacing:-.05em;overflow-wrap:anywhere}.publication-english-title{max-width:850px;margin-top:22px;color:var(--secondary);font-size:clamp(19px,2vw,26px);line-height:1.45}.publication-detail-authors{margin-top:24px;color:var(--secondary);font-size:15px}.publication-detail-authors strong{color:var(--text)}.publication-detail-meta{color:var(--secondary);font-size:13px}.publication-detail-meta span{color:var(--accent);font-weight:600}.publication-detail-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,320px);grid-template-areas:"reading tools" "reading secondary";grid-template-rows:auto 1fr;column-gap:clamp(48px,6vw,88px);row-gap:0;align-items:start}.publication-reading{grid-area:reading;display:grid;gap:52px;max-width:760px}.publication-sidebar{display:contents}.publication-sidebar-primary{grid-area:tools;align-self:start;min-width:0}.publication-sidebar-secondary{grid-area:secondary;min-width:0}.publication-reading section,.publication-sidebar section{border-top:1px solid var(--line);padding-top:28px}.publication-reading h2{margin-bottom:20px;font-size:28px}.publication-reading h3{margin:28px 0 10px;font-size:17px}.publication-reading p{color:var(--secondary)}.publication-sidebar section{margin-top:30px}.publication-sidebar h2{margin-bottom:16px;font-size:17px}.original-abstract{margin-top:28px}.bibliographic-data{display:grid;grid-template-columns:minmax(95px,.38fr) minmax(0,1fr);gap:9px 18px;margin:0}.bibliographic-data dt{color:var(--secondary);font-size:13px}.bibliographic-data dd{margin:0}.publication-links{display:grid;gap:10px;margin:0;padding:0;list-style:none}.publication-links a{color:var(--accent);text-decoration:underline;text-underline-offset:5px}.citation-tool{margin-top:24px}.citation-tool dialog{width:min(720px,calc(100% - 40px));max-height:calc(100dvh - 40px);overflow:auto;padding:28px;color:var(--text);background:var(--background);border:1px solid var(--line);border-radius:6px}.citation-tool dialog::backdrop{background:#070c13ad}.citation-dialog-heading{display:flex;align-items:start;justify-content:space-between;gap:24px;margin-bottom:24px}.citation-dialog-heading h2{font-size:28px}.citation-close{min-height:40px}.citation-tool label{display:block;margin-bottom:7px;color:var(--secondary);font-size:13px}.citation-tool select{width:100%}.citation-tool pre{min-height:150px;margin:20px 0;padding:18px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;background:var(--surface);border:1px solid var(--line);font:13px/1.65 var(--font-mono)}.citation-actions{display:flex;align-items:center;gap:14px}.citation-actions span{color:var(--secondary);font-size:12px}.citation-note{margin-top:18px;color:var(--secondary);font-size:12px}.gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:24px}.collection-page{padding:76px 0 110px;min-height:70vh}.collection-header{padding-bottom:36px}.collection-header h1{font-size:clamp(48px,7vw,76px);letter-spacing:-.055em}.collection-header p{max-width:620px;margin-top:16px;color:var(--secondary)}.project-archive,.research-archive{list-style:none;margin:0;padding:0}.project-archive{--timeline-date-column: 126px;--timeline-marker-column: 36px;--timeline-spine: calc( var(--timeline-date-column) + var(--timeline-marker-column) / 2 );--timeline-content-start: calc( var(--timeline-date-column) + var(--timeline-marker-column) );--timeline-marker-size: 9px;--timeline-marker-border: 2px;--timeline-content-gap: 2px;--timeline-marker-row-height: 24px;--timeline-item-padding: 34px;position:relative}.project-archive:before{content:"";position:absolute;top:42px;bottom:42px;left:var(--timeline-spine);width:1px;background:var(--line)}.project-timeline-item{position:relative;display:grid;grid-template-columns:var(--timeline-date-column) var(--timeline-marker-column) minmax(0,1fr);align-items:start;padding:var(--timeline-item-padding) 0}.project-timeline-label{grid-column:1 / 3;display:grid;grid-template-columns:var(--timeline-date-column) var( --timeline-marker-column );align-items:center;min-height:var(--timeline-marker-row-height)}.project-timeline-time{padding-right:22px;text-align:right;color:var(--secondary);font:13px/1.5 var(--font-mono)}.project-timeline-marker{position:absolute;z-index:1;top:calc(var(--timeline-item-padding) + var(--timeline-marker-row-height) / 2);left:var(--timeline-spine);width:var(--timeline-marker-size);height:var(--timeline-marker-size);border:var(--timeline-marker-border) solid var(--secondary);border-radius:50%;background:var(--background);transform:translate(-50%,-50%)}.project-timeline-item.is-ongoing .project-timeline-marker{border-color:var(--accent);background:var(--accent);box-shadow:0 0 0 3px var(--background)}.project-timeline-marker:after{content:"";position:absolute;top:50%;left:calc(50% + var(--timeline-marker-size) / 2 + var(--timeline-marker-border));width:calc(var(--timeline-content-start) - var(--timeline-spine) - var(--timeline-marker-size) / 2 - var(--timeline-marker-border) - var(--timeline-content-gap));height:1px;background:var(--line);transform:translateY(-50%)}.project-archive-entry{grid-column:3;display:grid;grid-template-columns:minmax(280px,.85fr) minmax(0,1.15fr);grid-template-areas:"media copy";gap:30px}.project-archive-entry>.figure{grid-area:media}.project-archive-copy{grid-area:copy;align-self:center;min-width:0}.project-archive-copy h2{margin:10px 0 14px;font-size:clamp(25px,2.5vw,34px)}.project-archive-copy .tags{margin-top:18px}.project-archive-entry:hover h2,.project-archive-entry:focus-visible h2,.research-archive-entry:hover h2,.research-archive-entry:focus-visible h2,.note-card:hover h2,.note-card:focus-visible h2{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px}.research-identifiers{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;justify-content:space-between;gap:28px;padding:18px 0;margin-bottom:24px;border-block:1px solid var(--line);color:var(--secondary);font-size:13px}.research-identifiers>p{color:var(--text);font-weight:600}.research-identifiers dl{display:grid;grid-template-columns:repeat(4,max-content);gap:8px 22px;margin:0}.research-identifiers dl div{display:contents}.research-identifiers dd{margin:0;color:var(--text);font-family:var(--font-mono)}.research-archive{--research-marker-column: 42px;--research-year-column: 96px;--research-marker-size: 9px;--research-marker-row-height: 24px;--research-item-padding: 36px;--research-marker-x: calc(var(--research-marker-column) / 2);--research-connector-length: 28px;--research-spine: calc( 100% - var(--research-marker-column) - var(--research-year-column) + var(--research-marker-x) );position:relative}.research-archive:before{content:"";position:absolute;top:44px;bottom:44px;left:var(--research-spine);width:1px;background:var(--line)}.research-year-group{position:relative;display:grid;grid-template-columns:minmax(0,1fr) var(--research-marker-column) var(--research-year-column);align-items:start;padding:var(--research-item-padding) 0}.research-timeline-label{grid-column:2 / 4;display:grid;grid-template-columns:var(--research-marker-column) var( --research-year-column );align-items:center;min-height:var(--research-marker-row-height)}.research-year-publications{display:grid;gap:34px;list-style:none;margin:0;padding:0 28px 0 0}.research-year-marker{position:absolute;z-index:1;top:calc(var(--research-item-padding) + var(--research-marker-row-height) / 2);left:var(--research-spine);width:var(--research-marker-size);height:var(--research-marker-size);border:2px solid var(--accent);border-radius:50%;background:var(--background);transform:translate(-50%,-50%)}.research-year-marker:after{content:"";position:absolute;top:50%;right:calc(50% + var(--research-marker-size) / 2);width:calc(var(--research-connector-length) - var(--research-marker-size) / 2);height:1px;background:var(--line);transform:translateY(-50%)}.research-year{grid-column:2;grid-row:1;padding-left:20px;color:var(--accent);font:15px/1.5 var(--font-mono)}.research-archive-entry{display:block}.research-bibliography h2{max-width:900px;margin-bottom:13px;font-size:clamp(23px,2.5vw,32px);line-height:1.35;letter-spacing:-.02em}.research-english-title{max-width:900px;margin-bottom:10px;color:var(--secondary);font-size:15px}.research-venue{margin-top:8px;color:var(--secondary);font-size:13px}.research-publication-state{margin-top:5px;color:var(--secondary);font-size:13px}.notes-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px}.note-card{display:flex;min-width:0;flex-direction:column;padding:14px 14px 20px;border:1px solid var(--line);background:var(--surface);transition:color var(--motion-fast) var(--motion-ease-out),transform var(--motion-normal) var(--motion-ease-out),background-color var(--motion-normal) var(--motion-ease-out),border-color var(--motion-normal) var(--motion-ease-out),box-shadow var(--motion-normal) var(--motion-ease-out)}.note-card:hover{transform:translateY(-2px);border-color:var(--secondary);box-shadow:0 5px 14px #1d232a12}.note-card:focus-visible{transform:none;border-color:var(--accent)}:root[data-theme=dark] .note-card:hover{background-color:var(--surface-subtle);box-shadow:none}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .note-card:hover{background-color:var(--surface-subtle);box-shadow:none}}.note-card-media,.note-cover-placeholder{aspect-ratio:16 / 9}.note-card-media{margin-bottom:18px;overflow:hidden;background:var(--tint)}.note-card-media .cover{height:100%}.note-cover-placeholder{background:var(--tint)}.note-card .note-date{color:var(--accent);font:13px/1.5 var(--font-mono);white-space:nowrap}.note-card h2{margin:10px 0 12px;font-size:25px}.note-card>p{color:var(--secondary);font-size:15px}.note-card .tags{margin-top:auto;padding-top:20px;font-size:12px}.notes-empty{border-block:1px solid var(--line);padding:36px 0;color:var(--secondary)}.note-detail{padding:76px 0 110px}.note-detail-header{max-width:840px;margin-inline:auto}.note-detail-eyebrow{display:flex;flex-wrap:wrap;margin-bottom:20px;color:var(--accent);font:12px/1.5 var(--font-mono);letter-spacing:.08em;text-transform:uppercase}.note-detail h1{font-size:clamp(42px,6vw,72px);letter-spacing:-.05em;overflow-wrap:anywhere}.note-detail-summary{max-width:760px;margin-top:24px;color:var(--secondary);font-size:clamp(19px,2vw,24px);line-height:1.5}.note-detail-tags{margin-top:28px}.note-detail-cover{width:min(1040px,100%);margin:52px auto 0}.note-detail-cover .figure{margin:0}.note-detail-body{width:100%;max-width:760px;margin:62px auto 0}.note-detail-body>p{margin-bottom:22px;color:var(--secondary)}.note-detail-body a{color:var(--accent);text-decoration:underline;text-underline-offset:5px}.note-detail-back{max-width:760px;margin:18px auto 0}.cv-page{width:min(960px,100%);margin-inline:auto;padding:72px 0 108px}.cv-header{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:28px 48px;padding-bottom:38px;border-bottom:1px solid var(--line)}.cv-kicker{margin-bottom:12px;color:var(--accent);font:11px/1.5 var(--font-mono);letter-spacing:.1em;text-transform:uppercase}.cv-header h1{font-size:clamp(46px,6vw,68px);letter-spacing:-.055em}.cv-professional-title{margin-top:12px;color:var(--secondary);font-size:clamp(19px,2.2vw,25px)}.cv-download{display:grid;justify-items:start;gap:7px}.cv-download-control{display:inline-flex;min-height:44px;align-items:center;justify-content:center;padding:9px 16px;border:1px solid var(--secondary);border-radius:4px;background:var(--surface);color:var(--text);font-size:14px}.cv-download-control:disabled{cursor:not-allowed;opacity:.55}.cv-download-status{color:var(--secondary);font:11px/1.5 var(--font-mono)}.cv-contact{grid-column:1 / -1;display:flex;flex-wrap:wrap;gap:7px 24px;font-style:normal;font-size:14px}.cv-contact a,.cv-entry-links a,.cv-degree{color:var(--accent);text-decoration:underline;text-underline-offset:4px}.cv-section{padding-top:42px}.cv-section>h2{margin-bottom:22px;font-size:26px;letter-spacing:-.035em}.cv-summary p{max-width:850px;color:var(--secondary);font-size:17px;line-height:1.7}.cv-skills{margin:0;border-top:1px solid var(--line)}.cv-skills>div{display:grid;grid-template-columns:210px minmax(0,1fr);gap:28px;padding:12px 0;border-bottom:1px solid var(--line)}.cv-skills dt{font-weight:600}.cv-skills dd{min-width:0;margin:0;color:var(--secondary);overflow-wrap:anywhere}.cv-entry-list{border-top:1px solid var(--line)}.cv-entry{padding:25px 0 30px;border-bottom:1px solid var(--line);break-inside:avoid}.cv-entry-header{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px 36px;align-items:baseline}.cv-entry h3{font-size:19px;letter-spacing:-.015em}.cv-entry-context{margin-top:4px;color:var(--accent);font-size:14px}.cv-period{color:var(--secondary);font:12px/1.6 var(--font-mono);white-space:nowrap}.cv-bullets{display:grid;gap:8px;margin:18px 0 0;padding-left:20px;color:var(--secondary);font-size:15px;line-height:1.65}.cv-bullets li::marker{color:var(--accent)}.cv-technologies{margin-top:16px;color:var(--secondary);font:12px/1.65 var(--font-mono)}.cv-entry-links{display:flex;flex-wrap:wrap;gap:6px 20px;margin-top:13px;font-size:14px}.cv-degree{display:inline-block;margin-top:6px;font-size:15px}.cv-distinction{margin-top:13px;color:var(--secondary);font-size:14px}.cv-recognition ul{display:flex;flex-wrap:wrap;gap:10px 32px;margin:0;padding:20px 0 0;border-top:1px solid var(--line);list-style:none;color:var(--secondary);font-size:15px}@media(max-width:74.99rem){.project-reading-composition{display:block;max-width:760px}.project-toc{display:none}.project-case-study>.project-media--wide{width:min(1000px,calc(100vw - 64px));margin-left:50%;transform:translate(-50%)}.project-related{display:block;max-width:760px}}@media(max-width:70rem){.wrap{width:calc(100% - 64px)}.hero{gap:36px}.hero h1{font-size:65px}.role,.specialty{font-size:19px}.contact-inner{gap:30px}.project-archive-entry{grid-template-columns:minmax(250px,.8fr) minmax(0,1.2fr);gap:24px}.notes-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:42rem){.project-media-group{grid-template-columns:1fr}.project-media-group--landscape-portrait .figure:nth-child(2) img{max-height:none}.project-media--compact{width:100%}}@media(max-width:63.99rem){:root{--header-height: 66px}.header-inner{display:flex;height:calc(var(--header-height) - 1px)}.brand{margin-right:auto}.desktop-nav,.desktop-actions{display:none}.mobile-menu{display:block;position:relative}.mobile-menu summary{display:flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;cursor:pointer;list-style:none;font-size:24px}.mobile-menu summary::-webkit-details-marker{display:none}.drawer{position:absolute;right:0;top:54px;width:min(290px,calc(100vw - 40px));max-height:calc(100dvh - 110px);overflow:auto;background:var(--surface);padding:16px;border:1px solid var(--line);display:flex;flex-direction:column;font-size:16px}.drawer a{padding:9px 12px}.drawer .primary-links{display:flex;flex-direction:column;align-items:stretch;gap:0}.drawer .nav-social{margin:10px 0 0;padding-top:10px;border-top:1px solid var(--line);display:flex;flex-direction:column;align-items:stretch;gap:0}.drawer .theme-control{width:100%;padding:9px 12px;display:flex;justify-content:flex-start;gap:12px}.drawer .theme-label{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto;white-space:normal}.hero h1{font-size:clamp(48px,7vw,65px)}.section-heading{align-items:start;flex-direction:column;gap:12px}.experience-content{gap:30px;grid-template-columns:1fr 1.6fr}.experience-items{grid-template-columns:1fr;gap:20px}.about-introduction{grid-template-columns:minmax(0,1fr) 240px;gap:40px}.about-focus{grid-template-columns:repeat(2,minmax(0,1fr))}.about-principles{grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr))}.about-research-layout{grid-template-columns:minmax(0,1.4fr) minmax(220px,.8fr);gap:40px}}@media(min-width:42.01rem)and (max-width:63.99rem){.projects-grid>:last-child:nth-child(odd){grid-column:1 / -1;width:calc((100% - 28px)/2);justify-self:center}}@media(max-width:42rem){.wrap{width:calc(100% - 44px)}.hero{grid-template-columns:1fr;min-height:calc(100svh - var(--header-height));padding:65px 0 100px;gap:0}.hero-visual{display:none}.hero h1{font-size:clamp(43px,12.8vw,68px);margin-bottom:28px}.role,.specialty{font-size:18px}.intro{font-size:17px;line-height:1.65}.section{padding:62px 0}.section-heading h2{font-size:32px}.section-heading p{font-size:13px}.projects-grid{grid-template-columns:1fr;row-gap:32px}.project-card h3{font-size:24px}.experience-content,.contact-inner{grid-template-columns:1fr;gap:28px}.experience h2{font-size:28px}.publication-row{grid-template-columns:1fr 20px;gap:10px;padding-block:24px}.year{grid-column:1/-1;font-size:13px}.publication-row h3{font-size:21px}.summary{font-size:14px}.authors{font-size:13px}.contact h2{font-size:45px}.email{font-size:clamp(18px,5.8vw,24px)}.copy-status{margin-left:8px}.skeleton{padding-block:50px}.about-page{padding:50px 0 76px}.about-introduction{grid-template-columns:1fr;gap:36px}.about-introduction h1{font-size:46px}.about-lede{margin-top:24px;font-size:17px}.about-portrait{width:min(76vw,300px);justify-self:center}.about-section{margin-top:72px}.about-section>h2{margin-bottom:28px;font-size:32px}.about-focus,.about-principles,.about-recognition-grid,.about-education-grid,.about-research-layout{grid-template-columns:1fr;gap:30px}.about-dated-row,.about-mentions>li{grid-template-columns:1fr;gap:12px}.about-dated-row{padding:27px 0 32px}.about-row-content h3,.about-mentions h3{font-size:22px}.about-community{margin-top:14px}.about-mentions>li{padding:26px 0 31px}.project-detail{padding:50px 0 76px}.project-detail h1{font-size:42px}.project-detail-summary{font-size:18px}.project-quick-facts{grid-template-columns:1fr;gap:0;margin-top:36px}.project-quick-facts>div,.project-quick-facts>.project-fact-wide{grid-column:auto;grid-template-columns:1fr;gap:5px;border-bottom:1px solid color-mix(in srgb,var(--line) 55%,transparent)}.project-quick-facts>div:last-child{border-bottom:0}.project-resource-links{display:grid;gap:9px}.project-detail>.project-media{margin-top:42px}.project-reading-composition{margin-top:64px}.project-case-study>h2{margin-top:62px;font-size:30px}.project-case-study>.project-media--wide{width:calc(100vw - 44px)}.project-related{margin-top:56px}.collection-page{padding:50px 0 76px}.collection-header{padding-bottom:28px}.collection-header h1{font-size:46px}.project-archive-entry{grid-template-columns:1fr;grid-template-areas:"media" "copy";gap:18px}.project-archive{--timeline-spine: 12px;--timeline-item-padding: 28px;--timeline-connector-length: 14px}.project-archive:before{top:42px;bottom:42px}.project-timeline-item{grid-template-columns:26px minmax(0,1fr);padding:var(--timeline-item-padding) 0 34px}.project-timeline-label{grid-column:1 / 3;grid-template-columns:26px minmax(0,1fr);gap:12px}.project-timeline-time{grid-column:2;padding:0;text-align:left}.project-timeline-marker:after{left:calc(50% + var(--timeline-marker-size) / 2);width:calc(var(--timeline-connector-length) - var(--timeline-marker-size) / 2)}.project-archive-entry{grid-column:2;margin-top:14px}.project-archive-copy{align-self:auto}.research-identifiers{grid-template-columns:1fr;gap:10px;padding:14px 0;margin-bottom:14px}.research-identifiers dl{grid-template-columns:max-content max-content}.research-archive{--research-marker-column: 26px;--research-year-column: max-content;--research-marker-x: 12px;--research-spine: var(--research-marker-x);--research-item-padding: 30px;--research-connector-length: 14px}.research-archive:before{top:43px;bottom:43px}.research-year-group{grid-template-columns:var(--research-marker-column) minmax(0,1fr);padding:var(--research-item-padding) 0}.research-timeline-label{grid-column:1 / 3;grid-row:1;grid-template-columns:var(--research-marker-column) var( --research-year-column );gap:12px}.research-year-publications{grid-column:2;grid-row:2;gap:30px;padding:18px 0 0}.research-year-marker:after{left:calc(50% + var(--research-marker-size) / 2);right:auto;width:calc(var(--research-connector-length) - var(--research-marker-size) / 2)}.research-year{grid-column:2;grid-row:1;padding:0;font-size:13px}.research-index .collection-header{padding-bottom:20px}.research-index .collection-header p{margin-top:12px;font-size:15px;line-height:1.55}.notes-grid{grid-template-columns:1fr}.note-detail{padding:50px 0 76px}.note-detail h1{font-size:40px}.note-detail-summary{font-size:18px}.note-detail-cover{margin-top:40px}.note-detail-body{margin-top:48px}.footer-inner{grid-template-columns:1fr;gap:20px;padding-block:26px;font-size:12px}.footer-links{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 16px;padding-block:12px;border-block:1px solid var(--line)}.footer-links a{text-align:center}.footer-back-desktop{display:none}.footer-closing{display:flex;align-items:center;justify-content:space-between;gap:18px;width:100%;justify-self:stretch}.footer-back-mobile{display:inline-block;text-align:right}.publication-detail{padding:50px 0 76px}.publication-detail-header{padding-bottom:40px}.publication-detail h1{font-size:38px}.publication-detail-layout{grid-template-columns:1fr;grid-template-areas:"tools" "reading" "secondary";grid-template-rows:auto auto auto;gap:42px}.publication-reading{gap:42px}.bibliographic-data{grid-template-columns:1fr;gap:3px}.bibliographic-data dd+dt{margin-top:12px}.citation-tool dialog{padding:22px}}@media(max-width:22rem){.research-identifiers dl{grid-template-columns:1fr;gap:2px}.research-identifiers dl div+div dt{margin-top:8px}}@media(prefers-reduced-motion:reduce){.project-video-frame video{display:none}.project-video-poster{display:block}.note-card:hover{transform:none}.publication-row:hover .arrow,.publication-row:focus-visible .arrow{transform:none}*,*:before,*:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}@media(max-width:42rem){.cv-page{padding:50px 0 76px}.cv-header{grid-template-columns:1fr;align-items:start;gap:24px;padding-bottom:30px}.cv-header h1{font-size:46px}.cv-contact{grid-column:auto;display:grid;gap:7px}.cv-section{padding-top:34px}.cv-section>h2{font-size:24px}.cv-skills>div,.cv-entry-header{grid-template-columns:1fr}.cv-skills>div{gap:4px}.cv-entry-header{gap:8px}.cv-period{white-space:normal}.cv-recognition ul{display:grid;gap:10px}}@media print{.site-header,body>footer,.cv-download{display:none}:root,:root[data-theme=dark]{--background: #fff;--surface: #fff;--surface-subtle: #fff;--text: #000;--secondary: #333;--accent: #000;--line: #bbb}body{font-size:11pt}.wrap,.cv-page{width:100%;max-width:none}.cv-page{padding:0}.cv-section{padding-top:22px}}
