.graph-layout{--layout-gap: 3rem;--layout-padding-y: 2rem;--layout-padding-x: 3rem;--sidebar-width-min: 19.5rem;--sidebar-width-max: 22.5rem;display:grid;width:100%;height:100vh;align-items:center;grid-template-columns:minmax(0,1fr) minmax(var(--sidebar-width-min),var(--sidebar-width-max));gap:var(--layout-gap);padding:var(--layout-padding-y) var(--layout-padding-x);background-color:var(--color-canvas)}.graph-layout__canvas{position:relative;display:flex;width:100%;height:100%;min-height:0;align-items:center;justify-content:flex-start;padding-left:1.25rem}.graph-layout__sidebar{display:flex;flex-direction:column;width:100%;height:auto;min-height:min(78vh,43rem);max-height:min(78vh,43rem);background-color:var(--color-panel);border:var(--panel-border);border-radius:var(--panel-radius)}.graph-layout__sidebar-top{border-bottom:1px dashed var(--color-line)}@media(max-width:900px){.graph-layout{grid-template-columns:1fr;gap:1rem;padding:1rem}.graph-layout__canvas{height:54vh}.graph-layout__sidebar{min-height:45vh;max-height:45vh;border-radius:.7rem}}.node-graph{position:relative;width:100%;height:100%}.node-graph__canvas{position:absolute;inset:0;width:100%;height:100%}.node-graph__lines{pointer-events:none}.node-graph__line{stroke:var(--line-color);stroke-width:var(--graph-line-width)}.node-graph__line--dashed{stroke-dasharray:var(--graph-line-dash)}.node-graph__line--active{stroke:var(--line-color-active)}.node-graph__line--hidden{opacity:0}.node-graph__hotspots{position:absolute;inset:0}.node-graph__hotspot-label,.node-graph__hotspot-sublabel{display:block;text-align:center;font-family:var(--font-body);line-height:1.2;text-wrap:balance;-webkit-font-smoothing:antialiased;text-rendering:geometricPrecision}.node-graph__hotspot-label{font-size:var(--graph-hotspot-label-size);font-weight:500;color:var(--color-gray-ink)}.node-graph__hotspot--index .node-graph__hotspot-label{font-family:var(--font-display);font-size:var(--graph-hotspot-index-label-size);color:var(--color-black)}.node-graph__hotspot-sublabel{font-size:var(--graph-hotspot-sublabel-size);color:var(--color-gray-muted)}.node-graph__hotspot{position:absolute}.node-graph__hotspot--hidden{opacity:0;pointer-events:none}.node-graph__hotspot-button{position:absolute;top:0;left:0;padding:0;border:0;background:transparent;color:var(--node-stroke)}.node-graph__hotspot-button:not(.node-graph__hotspot-button--index){cursor:pointer}.node-graph__hotspot-button--index{color:var(--color-accent)}.node-graph__hotspot-core{position:absolute;top:0;left:0;display:inline-flex;align-items:center;justify-content:center;width:var(--graph-icon-size);height:var(--graph-icon-size);transform:translate(-50%,-50%)}.node-graph__hotspot--index .node-graph__hotspot-core{width:var(--graph-index-icon-size);height:var(--graph-index-icon-size)}.node-graph__hotspot-icon{display:inline-flex;width:100%;height:100%;align-items:center;justify-content:center}.node-graph__hotspot-icon :where(svg){width:100%;height:100%;transform-origin:center}.node-graph__hotspot-text{position:absolute;top:var(--graph-hotspot-text-top);left:0;transform:translate(-50%)}.node-graph__hotspot--index .node-graph__hotspot-text{top:var(--graph-hotspot-index-text-top);width:var(--graph-hotspot-size-index)}.node-graph__hotspot--experience .node-graph__hotspot-text{width:var(--graph-hotspot-size-experience)}.node-graph__hotspot--education .node-graph__hotspot-text{width:var(--graph-hotspot-size-education)}.node-graph__hotspot--projects .node-graph__hotspot-text{width:var(--graph-hotspot-size-projects)}.node-graph__hotspot--skills .node-graph__hotspot-text{width:var(--graph-hotspot-size-skills)}.node-graph__hotspot-button:hover .node-graph__hotspot-core,.node-graph__hotspot-button:focus-visible .node-graph__hotspot-core{color:var(--node-stroke-active)}.node-graph__hotspot-button:hover .node-graph__hotspot-icon :where(svg),.node-graph__hotspot-button:focus-visible .node-graph__hotspot-icon :where(svg){transform:scale(1.05)}.node-graph__hotspot--active .node-graph__hotspot-button{color:var(--node-stroke-active)}.node-graph__hotspot--dimmed .node-graph__hotspot-button{opacity:var(--node-opacity-dimmed)}.node-graph__hotspot-button:focus-visible{outline:none}.node-graph__hotspot-button:focus-visible .node-graph__hotspot-core{box-shadow:0 0 0 var(--focus-ring-width) var(--node-stroke-active)}@media(prefers-reduced-motion:no-preference){.node-graph__line{transition-property:stroke,opacity;transition-duration:.3s}.node-graph__hotspot{transition:opacity .3s}.node-graph__hotspot-core{transition-property:color,transform;transition-duration:.2s}.node-graph__hotspot-icon :where(svg){transition:transform .2s}}.accordion{height:100%;overflow-y:auto;overflow-x:hidden}.accordion__list{margin:0;padding:0;list-style:none}.accordion__item{padding-inline:var(--accordion-item-padding-x);border-bottom:1px dashed var(--color-line)}.accordion__item:last-child{border-bottom:0}.accordion__item--index-control{padding-top:.5rem}.accordion__title,.accordion__entry-title,.accordion__entry-subtitle,.accordion__entry-date,.accordion__entry-description,.accordion__entry-link,.accordion__tag,.accordion__bio,.accordion__index-hint{font-family:var(--font-body)}.accordion__title{font-size:var(--accordion-title-size);font-weight:500;letter-spacing:var(--letter-spacing-label);text-transform:uppercase;color:var(--color-gray-ink);overflow-wrap:anywhere}.accordion__entry-title{margin:0;font-size:var(--accordion-entry-title-size);font-weight:500;color:var(--color-black)}.accordion__entry-subtitle,.accordion__entry-date,.accordion__entry-description,.accordion__entry-link{margin:0;font-size:var(--accordion-body-size);color:var(--color-gray-ink);overflow-wrap:anywhere}.accordion__header{display:flex;width:100%;align-items:flex-start;justify-content:space-between;gap:.6rem;border:0;background:transparent;padding:var(--accordion-header-padding-y) 0;text-align:left;color:var(--color-black);cursor:pointer}.accordion__header-main{display:inline-flex;min-width:0;align-items:center;gap:.62rem;flex:1}.accordion__header-icon{display:inline-flex;width:var(--accordion-icon-size);height:var(--accordion-icon-size);align-items:center;justify-content:center;color:var(--color-black);flex-shrink:0}.accordion__header--index-control .accordion__header-icon{color:var(--color-accent)}.accordion__header-icon svg{width:100%;height:100%}.accordion__header:hover{opacity:.75}.accordion__header:focus-visible{outline:var(--focus-ring-width) solid var(--color-black);outline-offset:2px}.accordion__index-hint,.accordion__toggle{font-size:var(--accordion-symbol-size);font-weight:500;line-height:1;color:var(--color-gray-ink);text-transform:uppercase;white-space:nowrap;flex-shrink:0}.accordion__body{height:0;overflow:hidden;opacity:0;transition-timing-function:cubic-bezier(.16,1,.3,1)}.accordion__body--open{opacity:1}.accordion__content{display:flex;flex-direction:column;gap:var(--accordion-gap-content);padding:var(--accordion-content-padding-top) 0 var(--accordion-content-padding-bottom)}.accordion__entry{display:flex;flex-direction:column;gap:var(--accordion-gap-entry)}.accordion__entry-link{color:var(--color-black);text-decoration:underline;text-underline-offset:2px}.accordion__entry-link:hover{opacity:.7}.accordion__tags{display:flex;margin:0;padding:0;list-style:none;flex-wrap:wrap;gap:.5rem}.accordion__tag{font-size:var(--accordion-title-size);letter-spacing:.08em;text-transform:uppercase;color:var(--color-gray-muted)}.accordion__bio{padding-bottom:1rem;color:var(--color-gray-ink)}.accordion__bio p{margin:0;font-size:var(--accordion-entry-title-size);line-height:1.5}.accordion__bio-link{display:inline-block;margin-top:.5rem;border:0;background:transparent;padding:0;font-size:var(--accordion-entry-title-size);font-weight:500;color:var(--color-black);text-decoration:underline;text-underline-offset:2px;cursor:pointer}.accordion__bio-link:hover{opacity:.7}.accordion__bio-link:focus-visible{outline:var(--focus-ring-width) solid var(--color-black);outline-offset:2px}@media(prefers-reduced-motion:no-preference){.accordion__header,.accordion__bio-link{transition:opacity .3s}.accordion__body{transition-property:height,opacity;transition-duration:.5s}}.language-switcher{padding:.1rem .7rem .1rem 0}.language-switcher__list{display:flex;margin:0;padding:0;list-style:none;gap:.5rem;justify-content:end}.language-switcher__link{display:inline-flex;align-items:center;justify-content:center;font-family:var(--font-body);font-size:.6rem;font-weight:300;letter-spacing:.08em;color:var(--color-gray-ink);text-decoration:none}.language-switcher__link:hover{opacity:.75;font-weight:600}.language-switcher__link:focus-visible{outline:var(--focus-ring-width) solid var(--color-black);outline-offset:2px}.language-switcher__link--active{border-color:var(--color-black);color:var(--color-black)}@media(prefers-reduced-motion:no-preference){.language-switcher__link{transition:opacity .25s}}@font-face{font-family:SiteSans;src:url(/fonts/liberation-sans-regular.ttf) format("truetype");font-style:normal;font-weight:400;font-display:swap}@font-face{font-family:SiteSans;src:url(/fonts/liberation-sans-bold.ttf) format("truetype");font-style:normal;font-weight:700;font-display:swap}@font-face{font-family:SiteSans;src:url(/fonts/liberation-sans-italic.ttf) format("truetype");font-style:italic;font-weight:400;font-display:swap}:root{--color-canvas: #f2f2f2;--color-panel: #ffffff;--color-black: #353535;--color-gray-ink: #555555;--color-gray-muted: #999999;--color-line: #d2d2d2;--color-line-dim: #949494;--color-accent: #d20000;--font-site-sans: "SiteSans", "Segoe UI", Arial, sans-serif;--font-display: var(--font-site-sans);--font-body: var(--font-site-sans);--font-size-body: 16px;--letter-spacing-label: .11em;--node-stroke: var(--color-black);--node-stroke-active: var(--color-accent);--node-opacity-dimmed: .34;--line-color: var(--color-line);--line-color-active: var(--color-line-dim);--panel-border: 1px solid rgba(0, 0, 0, .06);--panel-radius: .8rem;--focus-ring-width: 2px;--graph-line-width: .56;--graph-line-dash: 1 .9;--graph-hotspot-label-size: .9rem;--graph-hotspot-sublabel-size: .78rem;--graph-hotspot-index-label-size: 1rem;--graph-hotspot-size-index: 8.2rem;--graph-hotspot-size-experience: 7rem;--graph-hotspot-size-education: 6.3rem;--graph-hotspot-size-projects: 6.6rem;--graph-hotspot-size-skills: 6rem;--graph-icon-size: 2.45rem;--graph-index-icon-size: 2.9rem;--graph-hotspot-text-top: 1.8rem;--graph-hotspot-index-text-top: 2.05rem;--accordion-item-padding-x: 1.25rem;--accordion-header-padding-y: .85rem;--accordion-title-size: 14px;--accordion-body-size: 14px;--accordion-entry-title-size: 13px;--accordion-symbol-size: 13px;--accordion-gap-content: 1rem;--accordion-gap-entry: .25rem;--accordion-content-padding-top: .2rem;--accordion-content-padding-bottom: 1.1rem;--accordion-icon-size: 10px}*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:var(--font-body);font-size:var(--font-size-body);line-height:1.45;background-color:var(--color-canvas);color:var(--color-black);min-height:100vh;overflow:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:geometricPrecision}
