:root{--n-0: #ffffff;--n-50: #f5f5f5;--n-100: #e8e8e8;--n-200: #cccccc;--n-300: #999999;--n-400: #888888;--n-500: #666666;--n-600: #444444;--n-700: #222222;--n-800: #161616;--n-850: #111111;--n-900: #0d0d0d;--n-950: #0a0a0a;--n-1000: #000000;--green-300: #86efac;--green-400: #4ade80;--green-500: #22c55e;--green-600: #16a34a;--green-700: #15803d;--green-800: #166534;--green-900: #14532d;--blue-400: #60a5fa;--blue-500: #3b82f6;--blue-600: #2563eb;--blue-700: #1d4ed8;--cyan-600: #0891b2;--orange-400: #fb923c;--orange-500: #f97316;--orange-600: #ea580c;--orange-700: #c2410c;--yellow-500: #eab308;--yellow-600: #ca8a04;--yellow-700: #a16207;--pink-400: #f472b6;--pink-500: #ec4899;--violet-400: #a78bfa;--violet-500: #8b5cf6;--purple-500: #a855f7;--red-400: #f87171;--red-500: #ef4444;--red-600: #dc2626;--red-700: #b91c1c}:root{--surface: var(--n-950);--surface-card: var(--n-850);--surface-raised: var(--n-800);--surface-inset: var(--n-900);--surface-hover: rgba(255, 255, 255, .04);--surface-active: rgba(255, 255, 255, .08);--surface-accent: rgba(74, 222, 128, .1);--scrim: rgba(10, 10, 10, .9)}:root{--ink: var(--n-100);--ink-secondary: var(--n-300);--ink-muted: var(--n-400);--ink-inverse: var(--n-950);--ink-accent: var(--green-400);--ink-on-accent: var(--n-950)}:root{--border: var(--n-700);--border-strong: var(--n-600);--border-control: var(--n-500);--border-accent: var(--green-400);--border-width: 1px}:root{--status-good: var(--green-500);--status-info: var(--blue-500);--status-warning: var(--yellow-500);--status-serious: var(--orange-500);--status-critical: var(--red-500);--status-neutral: var(--n-400);--status-good-bg: rgba( 34, 197, 94, .1);--status-info-bg: rgba( 59, 130, 246, .1);--status-warning-bg: rgba(234, 179, 8, .1);--status-serious-bg: rgba(249, 115, 22, .1);--status-critical-bg: rgba(239, 68, 68, .1);--status-note-bg: rgba(168, 85, 247, .1);--status-note: var(--purple-500)}:root{--series-1: var(--green-600);--series-2: var(--blue-500);--series-3: var(--orange-600);--series-4: var(--cyan-600);--series-5: var(--pink-500);--series-6: var(--yellow-700);--series-7: var(--violet-500);--series-8: var(--red-500);--series-other: var(--n-400);--seq-1: var(--green-300);--seq-2: var(--green-400);--seq-3: var(--green-500);--seq-4: var(--green-600);--seq-5: var(--green-700);--seq-6: var(--green-800);--seq-7: var(--green-900);--div-neg-2: var(--blue-700);--div-neg-1: var(--blue-500);--div-mid: var(--n-600);--div-pos-1: var(--red-500);--div-pos-2: var(--red-700);--viz-surface: var(--surface-card);--viz-grid: #181818;--viz-axis: #2a2a2a;--viz-label: var(--ink-muted);--viz-fill: rgba(74, 222, 128, .08);--viz-gap: 2px;--viz-mark: 2px;--viz-dot: 8px;--viz-radius: 4px}:root{--node-input: #0d1a0d;--node-hidden: #0d0d1a;--node-output: #1a0d0d;--node-border: #2a2a2a;--eq-var: var(--blue-400);--eq-op: var(--pink-400);--eq-num: var(--orange-400);--eq-func: var(--violet-400);--eq-glow: rgba(74, 222, 128, .06);--annotation: rgba(74, 222, 128, .7);--highlight-bg: rgba( 96, 165, 250, .1);--highlight-border: rgba( 96, 165, 250, .3)}:root{--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--text-xs: .75rem;--text-sm: .8125rem;--text-base: .875rem;--text-md: 1rem;--text-read: 1.0625rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--text-3xl: 2rem;--text-4xl: 2.25rem;--text-5xl: 2.5rem;--text-code: .9375em;--hero-display: 3rem;--hero-portrait: 80px;--portfolio-rail: 13rem;--education-meta-width: 10rem;--pub-rail: 12rem;--work-label: 4.5rem;--work-preview-max: 22rem;--control-touch: 44px;--research-scene-h: 6rem;--leading-none: 1;--leading-tight: 1.25;--leading-snug: 1.4;--leading-normal: 1.6;--leading-read: 1.75;--weight-light: 300;--weight-regular: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--tracking-label: .08em;--tracking-title: .12em;--tracking-tight: -.02em;--measure: 68ch;--measure-wide: 80ch}:root{--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-7: 3rem;--space-8: 4rem;--space-9: 6rem;--space-10: 8rem;--flow: var(--space-5);--card-pad: var(--space-5);--section-gap: clamp(5rem, 9vw, 9rem);--content-max: 1400px;--gutter: var(--space-9);--main-col: 46rem;--margin-col: 23rem;--meta-label: 7rem;--col-gap: var(--space-7)}:root{--radius-tight: 2px;--radius: 4px;--radius-lg: 6px;--radius-pill: 9999px;--radius-round: 50%}:root{--shadow-popover: 0 4px 12px rgba(0, 0, 0, .3);--shadow-overlay: 0 8px 32px rgba(0, 0, 0, .5);--glow-accent: 0 0 0 1px rgba(74, 222, 128, .4), 0 4px 20px rgba(74, 222, 128, .12);--ring-focus: 0 0 0 2px var(--surface), 0 0 0 4px var(--ink-accent)}:root{--ease: cubic-bezier(.4, 0, .2, 1);--dur-fast: .12s;--dur: .2s;--dur-slow: .32s;--transition: var(--dur) var(--ease);--ease-enter: cubic-bezier(.16, 1, .3, 1);--dur-enter: .7s;--dur-generate: 1.1s}:root{--header-h: 54px;--max-ultra: 1800px;--max-wide: 1600px;--max-content: 900px;--sidebar-w: clamp(240px, 18vw, 320px);--blur: 12px;--z-base: 0;--z-raised: 10;--z-sticky: 100;--z-overlay: 1000;--z-toast: 1100}@media(max-width:1200px){:root{--gutter: var(--space-7)}}@media(max-width:768px){:root{--gutter: var(--space-5);--text-4xl: 1.75rem;--text-3xl: 1.5rem}}@media(max-width:480px){:root{--gutter: var(--space-4)}}@media print{:root{--surface: #ffffff;--surface-card: #ffffff;--surface-raised: #f5f5f5;--surface-inset: #f5f5f5;--ink: #141414;--ink-secondary: #525252;--ink-muted: #6b6b6b;--ink-accent: #15803d;--border: #e5e5e5;--border-strong: #a3a3a3;--border-control: #767676;--status-good: var(--green-700);--status-info: var(--blue-700);--status-warning: var(--yellow-700);--status-serious: var(--orange-700);--status-critical: var(--red-700);--viz-surface: #ffffff;--viz-grid: #ececec;--viz-axis: #cfcfcf;--viz-fill: rgba(22, 163, 74, .1)}}:root[data-theme=light]{--surface: #ffffff;--surface-card: #ffffff;--surface-raised: #f5f5f5;--surface-inset: #f5f5f5;--ink: #141414;--ink-secondary: #525252;--ink-muted: #6b6b6b;--ink-accent: #15803d;--border: #e5e5e5;--border-strong: #a3a3a3;--border-control: #767676;--status-good: var(--green-700);--status-info: var(--blue-700);--status-warning: var(--yellow-700);--status-serious: var(--orange-700);--status-critical: var(--red-700);--viz-surface: #ffffff;--viz-grid: #ececec;--viz-axis: #cfcfcf;--viz-fill: rgba(22, 163, 74, .1)}:root{--bg: var(--surface);--bg-card: var(--surface-card);--bg-elevated: var(--surface-raised);--text: var(--ink);--text-secondary: var(--ink-secondary);--dim: var(--ink-muted);--border-hover: var(--border-strong);--accent: var(--ink-accent);--font-size-base: var(--text-md);--line-height: var(--leading-normal);--tip-bg: var(--status-good-bg);--tip-border: var(--status-good);--note-bg: var(--status-info-bg);--note-border: var(--status-info);--warning-bg: var(--status-warning-bg);--warning-border: var(--status-warning);--danger-bg: var(--status-critical-bg);--danger-border: var(--status-critical);--question-bg: var(--status-note-bg);--question-border: var(--status-note);--graph-grid: var(--viz-grid);--graph-axis: var(--viz-axis);--graph-line-1: var(--series-1);--graph-line-2: var(--series-2);--graph-line-3: var(--series-5);--graph-line-4: var(--series-3);--graph-fill: var(--viz-fill);--eq-bg: var(--surface-inset);--eq-border: var(--border);--spacing-horizontal: var(--gutter);--spacing-vertical-top: calc(var(--header-h) + var(--space-8));--spacing-vertical-bottom: var(--space-8);--header-height: var(--header-h);--max-width-ultra: var(--max-ultra);--max-width-wide: var(--max-wide);--max-width-content: var(--max-content);--max-width-default: 1400px;--sidebar-width: var(--sidebar-w);--card-padding: var(--card-pad);--card-gap: var(--card-pad);--card-margin-bottom: var(--card-pad);--paragraph-margin: var(--flow);--content-element-margin: var(--space-6);--heading-margin-top: var(--space-7);--heading-margin-bottom: var(--flow);--section-margin-top: var(--section-gap);--section-margin-bottom: var(--space-7);--footer-margin-top: var(--space-9)}:root{--page-paper: #f6f5f1;--page-ink: #242720;--page-muted: #62665d;--page-line: #d9dbd2;--page-accent: #45634e;--page-wash: #eeefe8}:root{--page-font-body: var(--font-sans);--page-font-display: Georgia,"Times New Roman",serif;--page-type-body: .9375rem;--page-type-section: 1.5rem;--page-type-hero: 3.25rem;--page-type-hero-compact: 2.75rem;--page-leading-body: 1.65;--page-space-5: 1.25rem;--page-space-7: 1.75rem;--page-space-9: 2.25rem;--page-space-10: 2.5rem;--page-section-gap: 3.25rem;--page-section-gap-compact: 2.75rem;--page-width: 80rem;--page-document-width: 51.25rem;--page-radius: 3px;--page-rule: 1px;--page-rule-strong: 2px;--page-store-rule: 3px;--page-print-muted: #333;--page-print-line: #bbb;--page-icon-size: 1rem;--page-icon-stroke: 1.5;--page-control-line: #7c8578;--page-selection: #dce5d6;--page-shadow-menu: 0 12px 24px #0000000d;--diagram-gap: 1.75rem;--diagram-vertical-gap: 1.5rem;--diagram-connector-width: 1.25rem;--diagram-connector-height: 1rem}@media(prefers-color-scheme:dark){:root{--page-paper: #1b1d1a;--page-ink: #edeee7;--page-muted: #a9aea2;--page-line: #383d34;--page-accent: #b7c8a5;--page-wash: #262a23;--page-control-line: #7b8373;--page-selection: #394334;--page-shadow-menu: 0 12px 24px #00000033}}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + var(--space-5));-webkit-text-size-adjust:100%;text-size-adjust:100%;overflow-x:hidden}body{background:var(--surface);color:var(--ink);font-family:var(--font-sans);font-size:var(--text-md);line-height:var(--leading-normal);font-weight:var(--weight-regular);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;min-height:100vh;overflow-x:hidden;display:flex;flex-direction:column}h1,h2,h3,h4,h5,h6{font-family:var(--font-sans);font-weight:var(--weight-semibold);line-height:var(--leading-tight);color:var(--ink);text-wrap:balance}h1{font-size:var(--text-3xl);letter-spacing:var(--tracking-tight)}h2{font-size:var(--text-2xl);letter-spacing:var(--tracking-tight)}h3{font-size:var(--text-xl)}h4{font-size:var(--text-lg)}h5{font-size:var(--text-md)}h6{font-size:var(--text-base);font-weight:var(--weight-medium);color:var(--ink-secondary)}.prose{font-size:var(--text-read);line-height:var(--leading-read);color:var(--ink);max-width:var(--measure);text-wrap:pretty}.prose>*+*{margin-top:var(--flow)}.prose h1,.prose h2,.prose h3,.prose h4{margin-top:var(--space-7)}.prose h1+*,.prose h2+*,.prose h3+*,.prose h4+*{margin-top:var(--space-4)}.prose figure,.prose table,.prose pre,.prose .viz,.prose .full-bleed{max-width:var(--measure-wide);width:100%}a{color:var(--ink-accent);text-decoration:none;transition:color var(--dur-fast) var(--ease)}a:hover{color:var(--ink)}.prose a{text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--ink-accent) 40%,transparent);text-decoration-thickness:1px;text-underline-offset:.2em}.prose a:hover{text-decoration-color:var(--ink-accent)}:focus-visible{outline:none;box-shadow:var(--ring-focus);border-radius:var(--radius-tight)}.skip-link{position:absolute;left:var(--space-4);top:calc(-1 * var(--space-10));z-index:var(--z-toast);padding:var(--space-2) var(--space-4);background:var(--surface-raised);color:var(--ink);border:var(--border-width) solid var(--border-control);border-radius:var(--radius);font-family:var(--font-mono);font-size:var(--text-sm);transition:top var(--dur) var(--ease)}.skip-link:focus{top:var(--space-4)}.label{font-family:var(--font-mono);font-size:var(--text-sm);font-weight:var(--weight-medium);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-muted)}.label--accent{color:var(--ink-accent)}.label--plain{text-transform:none;letter-spacing:0}.mono,time,code,kbd,samp,var{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-feature-settings:"zero" 1}code{font-size:var(--text-code);background:var(--surface-inset);border:var(--border-width) solid var(--border);border-radius:var(--radius-tight);padding:.15em .4em;color:var(--ink);word-break:break-word}pre{background:var(--surface-inset);border:var(--border-width) solid var(--border);border-radius:var(--radius);padding:var(--space-4);overflow-x:auto;line-height:var(--leading-normal);font-size:var(--text-base);-moz-tab-size:2;tab-size:2}pre code{background:none;border:none;padding:0;font-size:inherit}kbd{font-size:var(--text-xs);background:var(--surface-raised);border:var(--border-width) solid var(--border-control);border-bottom-width:2px;border-radius:var(--radius-tight);padding:.1em .4em;color:var(--ink-secondary)}.prose ul,.prose ol{padding-left:var(--space-5)}.prose li+li{margin-top:var(--space-2)}.prose li>ul,.prose li>ol{margin-top:var(--space-2)}.prose ::marker{color:var(--ink-muted)}blockquote{border-left:2px solid var(--border-accent);padding-left:var(--space-4);color:var(--ink-secondary);font-style:normal}hr{border:none;border-top:var(--border-width) solid var(--border);margin-block:var(--space-7)}.table-wrap{overflow-x:auto;max-width:100%}table{width:100%;border-collapse:collapse;font-size:var(--text-base);line-height:var(--leading-snug)}th{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:var(--weight-medium);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-muted);text-align:left;padding:var(--space-2) var(--space-3);border-bottom:var(--border-width) solid var(--border-strong);white-space:nowrap}td{padding:var(--space-3);border-bottom:var(--border-width) solid var(--border);color:var(--ink-secondary);vertical-align:top}td:first-child{color:var(--ink)}th.num,td.num{text-align:right;font-variant-numeric:tabular-nums}tbody tr{transition:background var(--dur-fast) var(--ease)}tbody tr:hover{background:var(--surface-hover)}img,svg,video,canvas{max-width:100%;height:auto;display:block}figure{margin:0}figcaption{margin-top:var(--space-2);font-family:var(--font-mono);font-size:var(--text-xs);line-height:var(--leading-snug);color:var(--ink-muted)}input,textarea,select,button{font-family:inherit;font-size:var(--text-base);color:inherit}input[type=text],input[type=search],input[type=email],textarea,select{width:100%;background:var(--surface-inset);border:var(--border-width) solid var(--border-control);border-radius:var(--radius);padding:var(--space-2) var(--space-3);transition:border-color var(--dur-fast) var(--ease)}input::placeholder,textarea::placeholder{color:var(--ink-muted)}input:hover,textarea:hover,select:hover{border-color:var(--ink-muted)}input:focus-visible,textarea:focus-visible,select:focus-visible{border-color:var(--border-accent)}button{background:none;border:none;cursor:pointer}::selection{background:var(--surface-accent);color:var(--ink)}.wrap{width:100%;margin-inline:auto;padding-inline:var(--gutter)}.wrap--wide{max-width:var(--max-wide)}.wrap--ultra{max-width:var(--max-ultra)}.wrap--read{max-width:var(--max-content)}.l-margin{display:grid;grid-template-columns:minmax(0,var(--main-col)) minmax(var(--margin-col),1fr);gap:var(--space-4) var(--col-gap)}@media(max-width:1024px){.l-margin{grid-template-columns:minmax(0,1fr)}}.card-grid{--card-min: 18rem;display:flex;flex-wrap:wrap;gap:var(--space-5)}.card-grid>*{flex:1 1 var(--card-min);min-width:0}.stack>*+*{margin-top:var(--flow)}p,li,dd,figcaption{text-wrap:pretty}h1,h2,h3{text-wrap:balance}[data-noise-reveal]{position:relative}.noise-reveal__layer{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:var(--noise-texture) center / cover;opacity:0}[data-noise-reveal=pending] .noise-reveal__layer{opacity:1}[data-noise-reveal=done] .noise-reveal__layer{opacity:0;transition:opacity var(--dur-generate) linear}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@media(forced-colors:active){*{border-color:CanvasText}.label,figcaption,th{color:CanvasText}}.tacle-page{font-family:var(--font-sans);line-height:1.6;max-width:800px;margin:0 auto;padding:clamp(1rem,4vw,2.5rem) clamp(1rem,5vw,1.5rem);color:#333;background:#fff}body.tacle-route{background:#fff;color:#333}.tacle-page h1,.tacle-page h2,.tacle-page h3{font-family:inherit;font-size:inherit;font-weight:inherit;letter-spacing:normal;line-height:inherit;color:inherit;margin:0}.tacle-page .result-item h3{font-size:1.0625rem;font-weight:700;margin-bottom:.5rem}.tacle-page .header{text-align:center;margin-bottom:40px}.tacle-page .title{font-size:clamp(1.25rem,4vw,1.5rem);font-weight:700;margin-bottom:20px;text-wrap:balance}.tacle-page .authors{font-size:clamp(1rem,3vw,1.125rem);margin-bottom:10px}.tacle-page .affiliation{font-style:italic;margin-bottom:20px}.tacle-page .conference{font-weight:700;margin-bottom:30px}.tacle-page .section{margin-bottom:30px}.tacle-page .section-title{font-size:clamp(1.125rem,3.5vw,1.25rem);font-weight:700;margin-bottom:15px}.tacle-page .links{display:flex;justify-content:center;flex-wrap:wrap;gap:clamp(.5rem,2vw,1.25rem);margin-bottom:30px}.tacle-page .button{display:inline-flex;align-items:center;justify-content:center;padding:10px 20px;color:#333;text-decoration:none;transition:all .3s ease;background:none;font-size:16px;gap:8px;border-radius:5px;min-height:44px}.tacle-page .button:hover{transform:translateY(-2px);box-shadow:0 2px 8px #0000001a}.tacle-page .button:focus-visible{outline:2px solid #b31b1b;outline-offset:2px}.tacle-page .button i{font-size:20px}.tacle-page .button.arxiv{color:#b31b1b}.tacle-page .button.github{color:#24292e}.tacle-page .button.dataset{color:#4caf50}.tacle-page .section pre{background:#f5f5f5;padding:15px;border-radius:5px;overflow-x:auto;max-width:100%;font-size:clamp(.7rem,2.5vw,.875rem)}.tacle-page .section img{max-width:100%;height:auto;margin:20px auto 10px;display:block}.tacle-page .results-container{width:100%;max-width:800px;margin:0 auto}.tacle-page .result-item{width:100%;margin:20px 0;display:flex;flex-direction:column;align-items:center}.tacle-page .result-item img{width:90%;max-width:700px;height:auto;display:block}.tacle-page .results-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;margin:20px auto;width:90%}.tacle-page .results-column{display:flex;flex-direction:column;align-items:center}.tacle-page .results-column img{width:100%;height:auto;display:block}.tacle-page .caption{margin:10px auto 20px;color:#595959;font-size:.95em;text-align:center;width:95%}.tacle-page .logo-container{display:flex;justify-content:space-between;align-items:center;gap:1rem;width:100%;margin-bottom:30px;padding:10px 0}.tacle-page .logo{margin:0}.tacle-page .logo:first-child img{max-width:180px;height:auto}.tacle-page .logo:last-child img{max-width:150px;height:auto}.tacle-page .equal-contribution{font-size:.9em;color:#595959;margin-top:5px}@media(max-width:900px){.tacle-page .result-item img{width:100%}}@media(max-width:768px){.tacle-page .results-grid{grid-template-columns:1fr;width:100%}.tacle-page .results-column img,.tacle-page .caption{width:100%}.tacle-page .logo:first-child img{max-width:140px}.tacle-page .logo:last-child img{max-width:115px}}@media(max-width:420px){.tacle-page .logo-container{flex-direction:column;gap:1.25rem}.tacle-page .links{flex-direction:column;align-items:stretch}.tacle-page .button{justify-content:flex-start}}@media(prefers-reduced-motion:reduce){.tacle-page .button,.tacle-page .button:hover{transition:none;transform:none}}html:has(.portfolio-page){scroll-padding-top:var(--space-5);overflow-x:visible;scroll-behavior:auto}body:has(.portfolio-page){background:var(--page-paper);color:var(--page-ink);overflow-x:visible}.portfolio-page{font:var(--page-type-body)/var(--page-leading-body) var(--page-font-body);color:var(--page-ink);min-height:100vh;container-type:inline-size;overflow-wrap:break-word}.portfolio-page :is(h1,h2,h3,h4,p,ol,ul,dl,dd){margin:0;color:inherit}.portfolio-page :is(h1,h2,h3,h4){text-wrap:balance;letter-spacing:normal}.portfolio-page a{color:inherit;text-decoration:underline;text-decoration-color:var(--page-line);text-underline-offset:var(--space-1)}.portfolio-page a:hover{color:var(--page-accent);text-decoration-color:currentColor}.portfolio-page :is(button,a,summary):focus-visible{outline:var(--page-rule-strong) solid var(--page-accent);outline-offset:var(--space-1)}.portfolio-page svg{flex:none;vertical-align:middle;pointer-events:none}.portfolio-page button{font:inherit;cursor:pointer}.portfolio-page section{scroll-margin-top:var(--page-space-7)}.page-grid{max-width:var(--page-width);margin:auto;display:grid;grid-template-columns:152px minmax(0,1fr);gap:var(--space-7);padding:var(--space-8) var(--page-space-10) var(--space-6)}.page-grid main{min-width:0}.page-index{align-self:start;position:sticky;top:var(--space-6);font-size:var(--text-sm)}.page-index .index-identity{font-weight:var(--weight-semibold);text-decoration:none;white-space:nowrap}.page-links{display:flex;flex-direction:column;gap:var(--space-1);margin-top:var(--space-6)}.page-links a{display:flex;align-items:center;gap:var(--space-2);min-height:var(--control-touch);text-decoration:none;color:var(--page-muted);white-space:nowrap}.page-links a:before{content:"";width:var(--space-2);height:1px;background:transparent;flex:none}.page-links a[aria-current]{color:var(--page-ink);font-weight:var(--weight-medium)}.page-links a[aria-current]:before{background:var(--page-accent)}.compact-menu{display:none}.opening{display:grid;grid-template-columns:minmax(0,500px) 112px;gap:var(--page-space-7);padding-bottom:var(--page-space-9);border-bottom:var(--page-rule) solid var(--page-line);align-items:start}.portfolio-page .eyebrow{font-size:var(--text-sm);color:var(--page-muted);margin-bottom:var(--space-3)}.portfolio-page h1{font-family:var(--page-font-display);font-weight:var(--weight-regular);font-size:var(--page-type-hero);line-height:1.1;letter-spacing:-.04em}.portfolio-page .opening-lead{font-size:var(--text-xl);line-height:1.5;max-width:34ch;margin-top:var(--page-space-5);text-wrap:balance}.portfolio-page .opening-detail{font-size:var(--text-base);color:var(--page-muted);margin-top:var(--space-3);max-width:54ch}.portrait{display:block;box-sizing:border-box;width:112px;height:134px;padding:clamp(3px,.35cqi,var(--space-1));padding-bottom:0;object-fit:cover;object-position:50% 0;background:var(--page-wash);border:var(--page-rule) solid var(--page-line);border-radius:var(--page-radius);filter:grayscale(1)}.opening-links{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1) var(--space-4);margin-top:var(--space-5)}.opening-actions,.opening-profiles{display:flex;align-items:center;gap:var(--space-4);flex-wrap:nowrap}.opening-links a{min-width:var(--control-touch);display:inline-flex;align-items:center;gap:var(--space-2);min-height:var(--control-touch);font-size:var(--text-sm);white-space:nowrap}.opening-links .email-action{background:var(--page-ink);color:var(--page-paper);padding:var(--space-2) var(--space-3);border-radius:var(--page-radius);text-decoration:none}.opening-links .email-action:hover{background:var(--page-accent);color:var(--page-paper)}.chapter{margin-top:var(--page-section-gap);display:grid;grid-template-columns:minmax(max-content,10rem) minmax(0,1fr);gap:var(--space-5)}.chapter-heading h2{font-family:var(--page-font-display);font-weight:var(--weight-regular);font-size:var(--page-type-section);line-height:1.2;overflow-wrap:normal}.chapter-heading p{font-size:var(--text-xs);color:var(--page-muted);margin-top:var(--space-2);max-width:16ch}.chapter-body{min-width:0}.paper-record,.work-record{padding-bottom:var(--space-5)}.paper-record+.paper-record,.work-record+.work-record{padding-top:var(--space-5);border-top:var(--page-rule) solid var(--page-line)}.portfolio-page h3{font-size:var(--text-lg);font-weight:var(--weight-semibold);line-height:1.4}.portfolio-page .record-context{font-size:var(--text-xs);color:var(--page-accent);margin-bottom:var(--space-1)}.paper-record h3+p{margin-top:var(--space-1);font-size:var(--text-base);line-height:1.55;max-width:62ch}.portfolio-page .record-authors{font-size:var(--text-xs);color:var(--page-muted);margin-top:var(--space-2)}.record-authors strong{color:var(--page-ink);font-weight:var(--weight-medium)}.portfolio-page .equal-credit{font-size:var(--text-xs);color:var(--page-muted);margin-top:3px}.resource-links{display:flex;flex-wrap:wrap;gap:2px var(--space-4);margin-top:var(--space-2)}.resource-links a{display:inline-flex;align-items:center;gap:var(--space-2);min-height:var(--control-touch);font-size:var(--text-sm);white-space:nowrap}.resource-links svg{color:var(--page-muted)}.portfolio-page details{margin-top:var(--space-2)}.portfolio-page summary{display:flex;align-items:center;gap:var(--space-2);min-height:var(--control-touch);width:fit-content;list-style:none;cursor:pointer;font-size:var(--text-sm);color:var(--page-muted)}.portfolio-page summary::-webkit-details-marker{display:none}.portfolio-page summary svg{transition:transform .15s ease}.portfolio-page details[open]>summary svg{transform:rotate(180deg)}.portfolio-page details p{font-size:var(--text-base);max-width:62ch;color:var(--page-muted);margin-top:var(--space-2)}.portfolio-page .section-note{font-size:var(--text-xs);color:var(--page-muted);margin-top:var(--space-2)}.record-top{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-4)}.record-top>span{font-size:var(--text-xs);color:var(--page-muted);white-space:nowrap}.work-record p{font-size:var(--text-base);color:var(--page-muted);max-width:62ch;margin-top:var(--space-2)}.work-record .contribution{color:var(--page-ink)}.career-record{display:grid;grid-template-columns:minmax(0,1fr) max-content;gap:var(--page-space-5);padding:var(--space-4) 0;border-bottom:var(--page-rule) solid var(--page-line)}.career-record:first-child{padding-top:0}.career-record h3{font-size:var(--text-base)}.career-record p{font-size:var(--text-sm);color:var(--page-muted);margin-top:var(--space-1)}.career-record>span{font-size:var(--text-xs);color:var(--page-muted);padding-top:3px;white-space:nowrap}.skills-list{font-size:var(--text-sm);max-width:62ch}.skills-list div+div{margin-top:var(--space-3)}.skills-list dt{font-weight:var(--weight-medium)}.skills-list dd{color:var(--page-muted)}.portfolio-page .background-copy{font-size:var(--text-base);color:var(--page-muted);max-width:62ch;margin-bottom:var(--space-5)}.credentials{list-style:none;font-size:var(--text-sm);color:var(--page-muted)}.credentials li{padding:var(--space-1) 0}#contact{border-top:var(--page-rule) solid var(--page-line);padding-top:var(--space-6)}.contact-tools{display:flex;align-items:center;gap:var(--space-1);max-width:100%}.contact-tools>a{font-size:var(--text-read);min-height:var(--control-touch);min-width:0;padding:var(--space-2) 0;line-height:1.5;overflow-wrap:anywhere}.copy-email{display:inline-flex;align-items:center;position:relative;flex:none}.copy-email button{display:inline-flex;align-items:center;justify-content:center;width:var(--control-touch);height:var(--control-touch);padding:0;background:transparent;border:0;border-radius:var(--page-radius);color:var(--page-muted)}.copy-email button:hover{background:var(--page-wash);color:var(--page-ink)}.copy-email-status{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.copy-email-error{position:absolute;right:0;top:100%;z-index:2;width:min(26ch,70vw);padding:var(--space-2) var(--space-3);border:var(--page-rule) solid var(--page-line);background:var(--page-paper);font-size:var(--text-xs);line-height:1.5;color:var(--page-muted)}.page-footer{margin-top:var(--space-7);border-top:var(--page-rule) solid var(--page-line);padding-top:var(--page-space-5);display:flex;flex-wrap:wrap;gap:var(--space-2) var(--page-space-5);align-items:center;font-size:var(--text-xs);color:var(--page-muted)}.page-footer a{max-width:100%;min-width:0;overflow-wrap:anywhere}.page-footer>span{margin-right:auto}.page-footer a,.credentials a,.work-record h3 a{display:inline-flex;align-items:center;min-height:var(--control-touch)}.skip-link{position:absolute;top:0;left:var(--page-space-5);padding:var(--space-3);transform:translateY(-120%);background:var(--page-paper);z-index:10}.skip-link:focus{transform:none}@container (max-width:71.875rem){.chapter{display:block}.chapter-heading{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2) var(--page-space-5);margin-bottom:var(--page-space-5)}.chapter-heading p{margin:0;max-width:none}.career-record{grid-template-columns:minmax(0,1fr) max-content}}@container (max-width:65.625rem){.page-grid{grid-template-columns:minmax(0,1fr);gap:var(--space-6);padding:var(--page-space-7) clamp(var(--space-5),6cqi,var(--space-8))}.page-index{position:static;display:flex;justify-content:space-between;align-items:center;gap:var(--page-space-5);border-bottom:var(--page-rule) solid var(--page-line);padding-bottom:var(--space-4)}.page-links{flex-direction:row;margin:0;gap:var(--page-space-5)}.page-links a{font-size:var(--text-xs);gap:0}.page-links a:before{display:none}.page-links a[aria-current]{text-decoration:underline;text-underline-offset:var(--space-1)}}@container (max-width:50rem){.page-grid{padding:var(--page-space-5) var(--space-5) var(--page-space-7);gap:var(--page-space-7)}.page-links{display:none}.compact-menu{display:block;position:relative;margin:0!important}.compact-menu>summary{min-height:var(--control-touch)}.compact-menu nav{position:absolute;right:0;top:100%;z-index:5;min-width:184px;margin-top:var(--space-2);padding:var(--space-2) var(--space-4);background:var(--page-paper);border:var(--page-rule) solid var(--page-line);box-shadow:var(--page-shadow-menu)}.compact-menu nav a{display:flex;align-items:center;min-height:var(--control-touch);font-size:var(--text-sm);text-decoration:none;white-space:nowrap}.compact-menu nav a[aria-current]{font-weight:var(--weight-semibold);color:var(--page-accent)}.opening{grid-template-columns:minmax(0,500px) 88px;gap:var(--page-space-5)}.portrait{width:88px;height:106px}.portfolio-page h1{font-size:var(--page-type-hero-compact)}.chapter{margin-top:var(--page-section-gap-compact)}.record-top{display:block}.record-top>span{display:block;margin-top:var(--space-1)}}@container (max-width:35rem){.opening-copy{display:contents}.opening{grid-template-columns:minmax(0,1fr) 76px;gap:var(--space-4)}.opening .eyebrow{grid-column:1;align-self:end;margin:0;font-size:var(--text-xs)}.opening h1{grid-column:1;grid-row:1;font-size:var(--text-4xl);align-self:start}.portrait{grid-column:2;grid-row:1;width:76px;height:92px}.opening-lead,.opening-detail,.opening-links{grid-column:1/-1!important;margin-top:0!important}.opening .opening-lead{font-size:var(--text-xl);margin-top:var(--space-2)!important}.opening-links{gap:var(--space-1) var(--space-4)}.career-record{grid-template-columns:minmax(0,1fr);gap:var(--space-1)}.career-record>span{padding:0;font-size:var(--text-xs)}.chapter-heading h2{font-size:var(--page-type-section)}.record-authors{font-size:var(--text-sm)!important}}@container (max-width:22.5rem){.page-index{flex-wrap:wrap}.compact-menu{margin-left:auto!important}.opening-actions,.opening-profiles{flex-wrap:wrap}.page-grid{padding-inline:var(--space-4)}.opening{gap:var(--space-3);grid-template-columns:minmax(0,1fr) var(--space-8)}.portrait{width:var(--space-8);height:80px}.opening h1{font-size:var(--text-3xl)}.opening .eyebrow{font-size:var(--text-xs)}}@media(prefers-reduced-motion:reduce){.portfolio-page *{scroll-behavior:auto!important;transition:none!important}}.document-page{max-width:var(--page-document-width);margin:auto;padding:var(--page-space-10) var(--page-space-7) var(--space-8)}.document-nav{display:flex;justify-content:space-between;flex-wrap:wrap;gap:var(--space-4);font-size:var(--text-sm);margin-bottom:var(--control-touch)}.document-nav a{min-width:var(--control-touch);display:inline-flex;align-items:center;min-height:var(--control-touch)}.document-page h1{font-size:var(--text-5xl);max-width:24ch}.document-page .document-intro{font-size:var(--text-lg);max-width:60ch;margin-top:var(--page-space-5)}.document-block{margin-top:var(--space-6)}.document-block h2{font:400 var(--page-type-section)/1.3 var(--page-font-display);margin-bottom:var(--space-3)}.document-block p{font-size:var(--page-type-body);max-width:66ch;color:var(--page-muted)}.document-block p+p{margin-top:var(--space-3)}.document-block ul{padding-left:var(--page-space-5);font-size:var(--text-base);color:var(--page-muted)}.document-block li+li{margin-top:var(--space-2)}.resume-job{margin-top:var(--page-space-5)}.resume-job .record-top{margin-bottom:var(--space-2)}.document-page button{background:transparent;color:inherit;border:var(--page-rule) solid var(--page-line);padding:var(--space-2) var(--space-3);border-radius:var(--page-radius);min-height:var(--control-touch)}@media(max-width:35rem){.document-page{padding:var(--space-5) var(--page-space-5) var(--space-7)}.document-page h1{font-size:var(--text-3xl)}}.resume-publication h3{margin-bottom:var(--space-1)}.resume-publication .publication-credit{font-size:var(--text-sm);margin-top:var(--space-1)}.publication-resources{display:flex;flex-wrap:wrap;gap:var(--space-1) var(--space-4);margin-top:var(--space-1)}.publication-resources a{display:inline-flex;align-items:center;min-height:var(--control-touch);font-size:var(--text-sm);white-space:nowrap}.resume-page .publication-credit{font-size:var(--text-sm);margin-top:var(--space-2)}.portfolio-page .manager-line{font-size:var(--text-xs);color:var(--page-muted);margin-top:var(--space-1)}.resume-project-heading{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-1) var(--page-space-5);flex-wrap:wrap}.resume-project-heading>a{font-size:var(--text-sm);font-weight:var(--weight-regular);white-space:nowrap}.portfolio-page :is(.chapter,.opening,#main-content):focus{outline:none;box-shadow:none}.portfolio-page :is(a,button,summary):focus-visible{outline:2px solid var(--page-ink);outline-offset:3px;box-shadow:none;border-radius:var(--page-radius)}.portfolio-page svg:not(.diagram-connector){width:var(--page-icon-size);height:var(--page-icon-size);stroke-width:var(--page-icon-stroke)}.portfolio-page .document-page button{border-color:var(--page-control-line)}.portfolio-page ::selection{background:var(--page-selection);color:var(--page-ink)}@media print{@page{size:A4;margin:16mm 17mm}body{background:var(--n-0)!important}.portfolio-page{color:var(--page-ink);font-size:11pt;--page-ink: var(--n-850);--page-muted: var(--page-print-muted);--page-line: var(--page-print-line);--page-paper: var(--n-0);--page-wash: var(--n-50)}.document-nav,.page-index,.copy-email,.page-footer{display:none!important}.document-page{max-width:none;padding:0}.document-page h1{font-size:28pt}.document-block{margin-top:18px}.document-block h2{font-size:16pt;break-after:avoid}.document-block p,.document-block ul{font-size:10pt;max-width:none}.resume-job,.career-record{break-inside:avoid}.resource-links{display:none}a{text-decoration:none!important}.resume-page{line-height:1.28}.resume-page .document-block p,.resume-page .document-block ul{font-size:11pt}.resume-page .document-intro{font-size:11pt;margin-top:8px}.resume-page h3{font-size:11pt}.resume-page .document-block{margin-top:14px}.resume-page .document-block h2{font-size:13pt;margin-bottom:8px}.resume-page .document-block p+p{margin-top:5px}.resume-page .resume-job{margin-top:12px}.resume-page .record-top{display:flex;margin-bottom:4px}.resume-page .record-top>span{display:inline;margin:0;font-size:9pt}.resume-page li+li{margin-top:4px}.resume-page .resume-experience-continuation{break-before:page}.resume-experience-continuation:before{content:"Experience (continued)";display:block;font:400 14pt/1.3 var(--page-font-display);margin-bottom:12px}.publication-resources{margin-top:4px;gap:12px}.publication-resources a{min-height:0;font-size:9pt}.resume-project-heading>a,.resume-page .document-block .manager-line,.resume-page .document-block .publication-credit{font-size:9pt}}.resume-page .publication-highlight{margin-top:var(--space-1)}@media print{.resume-page .document-block .publication-highlight{font-size:10pt;line-height:1.25}}@media print{.resume-page{font-family:var(--page-font-display)}.resume-page h1{font-family:var(--page-font-body);font-size:26pt;font-weight:var(--weight-semibold)}.resume-page .document-intro{font-family:var(--page-font-body);font-size:10pt}.resume-page .document-block h2,.resume-page h3,.resume-page .document-block>p>strong{font-family:var(--page-font-body)}.resume-page .document-block h2{font-weight:var(--weight-semibold)}.resume-page .resume-publication>p{font-size:10pt}}@media print{.resume-page{line-height:1.2}.resume-page .document-block{margin-top:10px}.resume-page .document-block h2{margin-bottom:6px}.resume-page .document-block p+p{margin-top:3px}.resume-page .resume-job{margin-top:8px}.resume-page li+li{margin-top:3px}}.technical-diagram{container-type:inline-size;margin:var(--space-6) 0 0;padding-block:var(--space-5);border-block:var(--page-rule) solid var(--page-line);min-width:0;break-inside:avoid}.portfolio-page .diagram-heading{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-2) var(--space-3);flex-wrap:wrap;margin-bottom:var(--space-5)}.portfolio-page .diagram-heading h3{font-size:1rem;font-weight:var(--weight-medium);line-height:var(--leading-snug);text-wrap:pretty}.diagram-heading>span{font-size:var(--text-xs);color:var(--page-muted)}.diagram-lanes{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-5)}.diagram-lane{min-width:0}.portfolio-page .diagram-lane-label{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--page-muted);margin-bottom:var(--space-3)}.diagram-flow{display:grid;grid-template-columns:repeat(var(--diagram-columns),minmax(0,1fr));gap:var(--diagram-gap);list-style:none;padding:0}.portfolio-page .diagram-flow>.diagram-stage{position:relative;min-width:0;margin:0;padding:var(--space-3);border:var(--page-rule) solid var(--page-line);border-radius:var(--page-radius);background:var(--page-paper)}.portfolio-page .diagram-flow>.diagram-stage--check{border-color:var(--page-accent)}.portfolio-page .diagram-flow>.diagram-stage--output{background:var(--page-wash)}.portfolio-page .diagram-flow>.diagram-stage--store{border-top:var(--page-store-rule) double var(--page-muted);padding-top:calc(var(--space-3) - var(--page-rule-strong))}.diagram-stage-kind{display:block;font-size:var(--text-xs);line-height:var(--leading-snug);color:var(--page-muted);margin-bottom:var(--space-2)}.portfolio-page .diagram-stage-title{margin:0;font-size:var(--text-base);line-height:var(--leading-snug);font-weight:var(--weight-semibold);color:var(--page-ink);text-wrap:pretty}.portfolio-page .diagram-stage-detail{margin:var(--space-2) 0 0;font-size:var(--text-sm);line-height:var(--leading-normal);color:var(--page-muted)}.diagram-connector{position:absolute;width:var(--diagram-connector-width);height:var(--diagram-connector-height);left:calc(100% + (var(--diagram-gap) - var(--diagram-connector-width)) / 2);top:calc(50% - var(--diagram-connector-height) / 2);color:var(--page-muted);stroke-width:var(--page-icon-stroke);pointer-events:none}.diagram-relationship{padding-inline-start:var(--space-3);border-inline-start:var(--page-rule-strong) solid var(--page-line)}.portfolio-page .diagram-relationship-label{font-size:var(--text-xs);color:var(--page-muted);margin:0 0 var(--space-1)}.portfolio-page .diagram-relationship-path{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--page-ink);margin:0;max-width:none}.diagram-relationship-path>span{min-width:0}.technical-diagram figcaption{font-family:var(--page-font-body);margin-top:var(--space-4);font-size:var(--text-sm);line-height:var(--leading-normal);color:var(--page-muted);max-width:var(--measure)}@container (max-width: 46.25rem){.diagram-flow--long{grid-template-columns:minmax(0,1fr);gap:var(--diagram-vertical-gap)}.diagram-flow--long .diagram-stage{display:grid;grid-template-columns:4rem minmax(0,1fr);column-gap:var(--space-3);align-items:baseline}.diagram-flow--long .diagram-stage-kind{grid-row:1 / span 2;margin:0}.diagram-flow--long .diagram-stage-detail{grid-column:2}.diagram-flow--long .diagram-connector{left:calc(50% - var(--diagram-connector-width) / 2);top:calc(100% + (var(--diagram-vertical-gap) - var(--diagram-connector-height)) / 2);transform:rotate(90deg)}}@container (max-width: 37.5rem){.diagram-flow{grid-template-columns:minmax(0,1fr);gap:var(--diagram-vertical-gap)}.diagram-stage{display:grid;grid-template-columns:4rem minmax(0,1fr);column-gap:var(--space-3);align-items:baseline}.diagram-stage-kind{grid-row:1 / span 2;margin:0}.portfolio-page .diagram-stage-detail{grid-column:2;margin-top:var(--space-1)}.diagram-connector{left:calc(50% - var(--diagram-connector-width) / 2);top:calc(100% + (var(--diagram-vertical-gap) - var(--diagram-connector-height)) / 2);transform:rotate(90deg)}}@media print{.technical-diagram{break-inside:auto}.diagram-stage,.diagram-relationship{break-inside:avoid}}.diagram-stage-kind{display:flex;align-items:center;gap:var(--space-2)}.diagram-stage-symbol{flex:none;color:var(--page-muted)}.diagram-icon-credit{font-size:var(--text-xs);color:var(--page-muted)}@container (max-width:46.25rem){.diagram-flow--long .diagram-stage-kind{flex-direction:column;align-items:flex-start;gap:var(--space-1)}}@container (max-width:37.5rem){.diagram-stage-kind{flex-direction:column;align-items:flex-start;gap:var(--space-1)}}@media print{.portfolio-page .page-footer:has(.diagram-icon-credit){display:flex!important;border:0;margin-top:var(--space-5)}.page-footer:has(.diagram-icon-credit)>:not(.diagram-icon-credit){display:none}}@container (max-width: 22rem){.diagram-flow .diagram-stage{display:block}.diagram-flow .diagram-stage-kind{flex-direction:row;margin-bottom:var(--space-2)}.portfolio-page .diagram-relationship-path{flex-wrap:wrap}}
