:root{color-scheme:light dark;--bg: #fbfbf8;--fg: #171717;--muted: #5c5c57;--rule: #dcdad3;--link: #0b4fbf;--visited: #6b2d8b;--mono: ui-monospace, "SFMono-Regular", "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", monospace}.comments{margin-top:4rem}.comments .comment-heading{margin:0 0 1.2rem;font-size:1rem}.comment-feedback{color:var(--muted);font-size:.8rem}.comment-feedback:empty{display:none}.reader-comment{margin:2rem 0}.comment-label{display:flex;align-items:baseline;gap:.6rem;margin:0 0 .6rem;color:var(--muted);font-size:.85em}.comment-label span:first-child{flex-shrink:0}.comment-label span:last-child{min-width:0;overflow-wrap:anywhere;font-style:italic}.comment-body{margin:0 0 0 1.7rem;white-space:pre-wrap}.comment-time{display:block;margin:.4rem 0 0 1.7rem;color:var(--muted);font-size:.65rem;font-variant-numeric:tabular-nums}.comment-composer{display:grid}.comment-composer>*{grid-area:1 / 1}.comment-composer form{transition:opacity .16s ease,transform .16s ease;transform-origin:center}.comment-composer.is-reading form{opacity:0;transform:scale(.96);pointer-events:none}.comment-thinking{display:flex;align-items:center;justify-content:center;gap:.45rem;color:var(--muted)}.comment-thinking[hidden]{display:none}.comment-thinking span{width:.3rem;height:.3rem;background:currentColor;border-radius:50%;animation:comment-think 1.8s ease-in-out infinite}.comment-thinking span:nth-child(2){animation-delay:.15s}.comment-thinking span:nth-child(3){animation-delay:.3s}@keyframes comment-think{0%,to{opacity:.25}50%{opacity:1}}.comment-new{animation:comment-arrive 1.6s ease-out both}@keyframes comment-arrive{0%{background-color:color-mix(in srgb,var(--link) 12%,transparent);opacity:.4}20%{opacity:1}to{background-color:transparent}}.comments button{padding:.25rem 0;border:0;background:none;color:var(--link);font:inherit;cursor:pointer}.comments button:disabled{color:var(--muted);cursor:default}.comments form{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:1rem}.comments form[hidden],.comments button[hidden]{display:none}.comments .comment-input-label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.comments textarea{display:block;width:100%;min-height:0;resize:none;overflow:hidden;margin:0;padding:.4rem 0;border:0;border-bottom:1px solid var(--rule);border-radius:0;background:transparent;color:var(--fg);font:inherit;line-height:inherit}.comments textarea::placeholder{color:var(--muted);opacity:1}.comments textarea:focus{border-bottom-color:var(--fg)}.comments textarea:focus-visible{outline:none;border-bottom-color:var(--link)}.comments button:focus-visible{outline:2px solid var(--link);outline-offset:3px}.comments form button{margin-bottom:1px;padding:.4rem 0;white-space:nowrap}.comments .comment-trap{position:absolute;left:-10000px}@media(prefers-reduced-motion:reduce){.comment-composer form{transition:none}.comment-composer.is-reading form{transform:none}.comment-thinking span{animation:none;opacity:.6}.comment-new{animation:none;background-color:color-mix(in srgb,var(--link) 12%,transparent)}}@media(prefers-color-scheme:dark){:root{--bg: #161513;--fg: #ece8e1;--muted: #a49e94;--rule: #3c3934;--link: #8cb4ff;--visited: #d4a3f5}}*,*:before,*:after{box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%}body{margin:0 auto;max-width:48rem;padding:2.5rem 1.5rem 4rem;background:var(--bg);color:var(--fg);font-family:var(--mono);font-size:.9375rem;line-height:1.6;overflow-wrap:break-word}@media(max-width:40rem){body{padding:1.5rem 1.15rem 3rem;font-size:1.0625rem}}.skip{position:absolute;left:-999px;top:0;padding:.4rem .6rem;background:var(--bg)}.skip:focus{left:1rem;top:1rem;z-index:1}h1,h2,h3{font-weight:600;line-height:1.25}h1{margin:0 0 .2em;font-size:2rem}h2{margin:2em 0 .5em;font-size:1.125rem}h3{margin:1.6em 0 .4em;font-size:1.05rem}@media(max-width:40rem){h1{font-size:1.85rem}}p,ul,ol{margin:0 0 1em}.affiliation,.date,.meta{color:var(--muted)}.affiliation{font-family:var(--mono);font-size:.82rem;font-weight:400;margin:.15em 0 1.75em}.affiliation a{color:inherit}.status-wrap{position:relative;display:inline-block;margin:0 0 1.5rem;color:var(--muted);font-size:.9rem}.status-trigger{display:inline-flex;align-items:center;gap:.35rem;padding:0;border:0;background:none;color:var(--muted);font-family:var(--mono);font-size:.9rem;cursor:pointer;outline-offset:3px}.status-trigger:hover,.status-trigger:focus-visible{color:var(--fg)}.status-cursor{display:inline-block;color:var(--fg);animation:status-cursor-blink 1s steps(1,end) infinite}@keyframes status-cursor-blink{50%{opacity:0}}.status-panel{position:absolute;top:calc(100% + .35rem);left:0;z-index:30;width:clamp(17.5rem,85vw,22rem);padding:.7rem .85rem;background:var(--bg);border-left:2px solid var(--rule);font-family:var(--mono);font-size:.85rem;line-height:1.5;color:var(--fg);opacity:0;transform:translateY(4px) scale(.99);transition:opacity .16s cubic-bezier(.2,.8,.2,1),transform .16s cubic-bezier(.2,.8,.2,1);pointer-events:none}.ask-affordance{position:fixed;z-index:70;align-items:center;gap:.28em;padding:.1rem .15rem;border:0;background:var(--bg);color:var(--link);font:inherit;font-size:.78rem;line-height:1.35;cursor:pointer;text-decoration:none;white-space:nowrap;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.ask-affordance:not([hidden]){display:inline-flex}.ask-affordance-dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex:0 0 auto;animation:ask-breathe 3s ease-in-out infinite}@media(pointer:coarse){.ask-affordance{padding:.12rem .2rem;font-size:.94rem}.ask-affordance-dot{width:7px;height:7px;order:-1}}@keyframes ask-breathe{0%,to{transform:scale(.82);opacity:.52}50%{transform:scale(1);opacity:.92}}.ask-affordance:focus-visible,.ask-retry:focus-visible,.ask-mark:focus-visible{outline:2px solid var(--fg);outline-offset:2px}.status-panel.ask-panel{position:fixed;z-index:80;width:min(88vw,24rem);max-height:min(70vh,30rem);overflow-y:auto}.ask-loading-dot{animation:pulse-active 2.4s ease-in-out infinite}.ask-answer{white-space:pre-wrap}.ask-retry{padding:0;border:0;background:none;color:var(--link);font:inherit;cursor:pointer}.ask-mark{text-decoration-line:underline;text-decoration-style:dashed;text-decoration-color:var(--link);text-decoration-thickness:1px;text-underline-offset:.15em;cursor:pointer}.status-cmd{color:var(--muted);margin-bottom:.35rem}.status-active-label{font-weight:600;margin-bottom:.15rem}.status-meta{color:var(--muted);font-size:.8em;margin-bottom:.5rem}.status-body{margin:.4rem 0 0;font-size:.85rem}.status-body p{margin:0 0 .5rem}.status-contact{margin-top:.5rem}@media(prefers-reduced-motion:reduce){.status-cursor{animation:none}.status-panel{transition:none!important}.ask-loading-dot,.ask-affordance-dot{animation:none!important}}a{color:var(--link);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.15em}a:visited{color:var(--visited)}a:hover{text-decoration-thickness:2px}a:focus-visible{outline:2px solid var(--fg);outline-offset:2px}.flow-region,.intro{position:relative;margin:0 0 2.4rem}.flow-source p,.intro-source p{margin:0 0 1em}.flow-source p:last-child,.intro-source p:last-child{margin-bottom:0}#portrait-wrap{display:block;width:10.75rem;border:0;background:none;user-select:none;position:relative;padding-bottom:.5rem}#portrait-wrap img,.portrait-image img{display:block;width:100%;height:auto;border:0;background:none;box-shadow:none;pointer-events:none;-webkit-user-drag:none}.portrait-status{display:flex;align-items:center;justify-content:flex-start;gap:.35rem;margin-top:6px;padding:0 0 0 .35rem;width:100%;border:0;background:none;font-family:var(--mono);font-size:.76rem;line-height:1.2;color:var(--muted);cursor:pointer;outline-offset:3px;user-select:none;white-space:nowrap}.portrait-status:hover,.portrait-status:focus-visible{color:var(--fg)}.status-prefix,.status-short{color:var(--muted)}.status-pulse{display:inline-block;width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0}.portrait-status[data-activity=active] .status-pulse{animation:pulse-active 2.4s ease-in-out infinite}@keyframes pulse-active{0%,to{transform:scale(.72);opacity:.45}50%{transform:scale(1);opacity:1}}.portrait-status[data-activity=quiet] .status-pulse{animation:pulse-quiet 4.2s ease-in-out infinite}@keyframes pulse-quiet{0%,to{transform:scale(.78);opacity:.3}50%{transform:scale(.95);opacity:.62}}.status-panel{position:absolute;z-index:50;width:min(88vw,24rem);padding:.65rem .85rem;background:var(--bg);border-left:1px solid var(--rule);font-family:var(--mono);font-size:.82rem;line-height:1.5;color:var(--fg);opacity:0;transform:translateY(5px) scale(.985);transition:opacity .17s cubic-bezier(.2,.8,.2,1),transform .17s cubic-bezier(.2,.8,.2,1);pointer-events:none;box-shadow:none}.status-panel.is-open{opacity:1;transform:translateY(0) scale(1);pointer-events:auto}.status-short-header{font-weight:600;margin-bottom:.15rem}.status-meta{color:var(--muted);font-size:.8em;margin-bottom:.45rem}.status-message{margin-bottom:.45rem}.status-contact{margin:.45rem 0 0}@media(prefers-reduced-motion:reduce){.status-pulse{animation:none!important}.status-panel{transition:none!important;transform:none!important}}.intro:not(.is-enhanced) #portrait-wrap{float:right;shape-outside:url(/assets/portrait/me.webp);shape-margin:.7rem;margin:.15rem 0 .9rem 1rem}@media(max-width:40rem){#portrait-wrap{width:8.75rem}.intro:not(.is-enhanced) #portrait-wrap{shape-margin:.45rem;margin:.1rem 0 .7rem .7rem}}.flow-region.is-enhanced .flow-source,.intro.is-enhanced .flow-source{display:none}.flow-region.is-enhanced .flow-image,.intro.is-enhanced #portrait-wrap{position:absolute;z-index:2;margin:0;float:none;cursor:grab;touch-action:none}.flow-region.is-enhanced .flow-image.is-dragging,.intro.is-enhanced #portrait-wrap.is-dragging{cursor:grabbing}.flow-region.is-dragging,.intro.is-dragging{user-select:none}.flow-layer,.intro-flow{position:relative;z-index:1}.flow-image img{display:block;width:100%;height:auto;pointer-events:none}.flow-image{display:inline-block;width:var(--flow-image-width, auto);max-width:100%}.flow-image-caption{display:block;margin-top:.25rem;color:var(--muted);font-size:.75rem;line-height:1.3;text-align:center;pointer-events:none}.flow-line{position:absolute;left:0;top:0;white-space:nowrap;user-select:text}.flow-line a{color:var(--link)}.flow-line a:visited{color:var(--visited)}.columns{display:grid;grid-template-columns:1fr 1fr;gap:2rem 3rem;margin:0 0 2.4rem}.columns section h2,.now h2,.keep h2{margin-top:0}.columns ul{margin:0}@media(max-width:40rem){.columns{grid-template-columns:1fr;gap:1.8rem}}.now,.keep{margin:0 0 2.1rem}.masthead{margin:0 0 2rem;font-size:1rem}ul.loose{list-style:none;padding:0}ul.loose li{margin:.4em 0}ul.papers{padding-left:1.2em}ul.papers li{margin:.7em 0}.back{margin:0 0 1.4em}figure{margin:1.6rem 0}figure img{display:block;width:100%;height:auto}figcaption{margin-top:.45rem;color:var(--muted);font-size:.9rem}figure.photo{margin:2rem 0}figure.photo img{width:100%;height:auto;border:0;box-shadow:none}figure.photo figcaption{text-align:center}.photo-viewer{box-sizing:border-box;width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:1rem;border:0;background:var(--bg);color:var(--fg);overflow:hidden;cursor:zoom-out}.photo-viewer[open]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem}.photo-viewer img{display:block;min-height:0;max-width:100%;max-height:100%;object-fit:contain;flex:1}.photo-viewer p{margin:0;color:var(--muted);text-align:center;font-size:.85rem}.archive-year{margin:1.6em 0 .4em;font-size:1.125rem;font-weight:600}.more{margin-top:.8em}.eq{overflow-x:auto;max-width:100%;margin:1.1em 0;padding:.2em 0}math{font-size:1.05em}math[display=block]{max-width:100%;margin:1.1em 0;padding:.2em 0;overflow-x:auto;overflow-y:hidden}.interactive{margin:1.6rem 0}.interactive-stage{min-height:10rem}.interactive-svg{display:block;width:100%;height:auto;max-height:min(60vh,28rem);overflow:visible}.interactive-canvas{display:block;width:100%;height:auto;aspect-ratio:16 / 9;touch-action:none}.interactive-values{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.3rem .8rem;margin:.7rem 0 0;font-size:.75rem}.interactive-value{min-width:0}.interactive-values dt{margin:0;color:var(--muted)}.interactive-values dd{margin:0;font-variant-numeric:tabular-nums}.interactive-axis{stroke:var(--rule);stroke-width:1;vector-effect:non-scaling-stroke}.interactive-axis-label{fill:var(--muted);font:12px ui-monospace,SFMono-Regular,SF Mono,Menlo,Monaco,Consolas,Liberation Mono,monospace}.interactive-curve,.interactive-trajectory{stroke:var(--fg);stroke-width:1.6;vector-effect:non-scaling-stroke}.interactive-trajectory{stroke:var(--link);stroke-dasharray:4 3}.interactive-point{fill:var(--fg)}.interactive-point[hidden],.interactive-point[visibility=hidden]{display:none}.interactive-architecture-stage rect{fill:transparent;stroke:var(--rule);stroke-width:1;vector-effect:non-scaling-stroke}.interactive-architecture-stage text{fill:var(--muted);font:14px var(--mono)}.interactive-architecture-stage.is-active rect{stroke:var(--link);stroke-width:2}.interactive-architecture-stage.is-active text,.interactive-architecture-stage.is-passed text{fill:var(--fg)}.interactive-architecture-connector{stroke:var(--rule);stroke-width:1;vector-effect:non-scaling-stroke}.interactive-architecture-connector.is-passed{stroke:var(--link)}.interactive-architecture-arrowhead{fill:var(--rule)}.interactive-architecture-signal{fill:var(--link)}.interactive-fallback{color:var(--muted);font-size:.86rem;line-height:1.55}.interactive-controls{display:grid;grid-template-columns:repeat(auto-fit,minmax(10rem,1fr));gap:.9rem 1.2rem;align-items:end;margin-top:1rem}.interactive-field{display:grid;gap:.3rem;min-width:0;font-size:.8rem}.interactive-field input[type=range],.interactive-field select{width:100%;font:inherit}.interactive-toggle{display:flex;align-items:center;gap:.45rem}.interactive-controls button,.interactive-controls select,.interactive-controls input{accent-color:var(--fg)}.interactive-controls button,.interactive-controls select{color:inherit;font:inherit}.interactive-playback{display:flex;flex-wrap:wrap;gap:.45rem;align-items:center}.interactive-controls button{min-height:2.25rem;padding-inline:.7rem}@media(max-width:40rem){.interactive{margin-block:1.35rem}.interactive-controls{grid-template-columns:1fr;gap:.5rem;margin-top:.65rem}.interactive-field{gap:.1rem;font-size:.75rem}.interactive-playback{gap:.4rem}.interactive-field input[type=range]{min-height:2rem;margin-inline:0}.interactive-values{grid-template-columns:repeat(2,minmax(0,1fr));font-size:.8rem}.interactive-controls button,.interactive-controls select{min-height:2.25rem;font-size:.8125rem}.interactive-controls button{padding-inline:.65rem}}@media(prefers-reduced-motion:reduce){.interactive *{scroll-behavior:auto}}
