:root{color-scheme:light dark;--font-size-base:0.875rem;--font-size-small:0.75rem}@media(prefers-color-scheme:dark){:root{--bg-l:12%;--color-border:hsl(var(--bg-h) var(--bg-s) 26%);--color-selection-bg:hsl(var(--bg-h) var(--bg-s) 30%)}}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important;scroll-behavior:auto !important}}@media(pointer:coarse){.top-nav a,.section-nav a,.path-nav a{min-height:2.75rem;display:inline-flex;align-items:center}}.toc{position:relative}.toc-title{display:flex;align-items:center;gap:var(--spacing-xs)}.toc-title::before{flex-shrink:0}.toc-content ol ol{opacity:.85}.toc-content ol ol ol{opacity:.7}.toc-content a{position:relative}.toc-content a::after{content:'';position:absolute;bottom:-2px;left:0;width:0;height:1px;background:var(--color-text-primary);transition:width .2s ease-in-out}.toc-content a:hover::after{width:100%}.home-prose p{text-align:justify;hyphens:auto}.intro{display:flex;align-items:flex-start;gap:var(--spacing-md);margin:var(--spacing-base)0}.intro-lede{flex:1;min-width:0}.intro-lede p{margin:0}.portrait{flex-shrink:0;width:90px;aspect-ratio:1/1;object-fit:cover;border:none;padding:0;border-radius:0;margin:0}@media(max-width:600px){body{padding:var(--spacing-md);gap:var(--spacing-md)}.home-prose p{text-align:left;hyphens:manual}.intro{gap:var(--spacing-sm)}.portrait{width:clamp(64px,22vw,90px)}}.site-header{display:flex;justify-content:space-between;align-items:baseline;gap:var(--spacing-md);flex-wrap:wrap;padding:var(--spacing-sm)var(--spacing-md);border:1px solid var(--color-border);border-radius:0;background:var(--color-bg-secondary)}.site-header .path-nav{width:auto;min-width:0}.path-nav{overflow:hidden}.path-nav ol{min-width:0}.path-nav li.current{flex-shrink:1;min-width:0}.path-nav li.current a{display:block;max-width:100%;margin-left:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(pointer:coarse){.path-nav li.current a{line-height:2.75rem}}.top-nav{display:flex;align-items:baseline;flex-wrap:wrap;margin-left:auto}.top-nav a,.section-nav a{margin-left:0;border-bottom:none;text-decoration:none;color:var(--color-text-muted)}.top-nav a:hover,.section-nav a:hover{color:var(--color-text-primary)}.top-nav a+a::before,.section-nav a+a::before{content:"·";margin:0 var(--spacing-sm);color:var(--color-text-muted)}.top-nav .nav-page{color:var(--color-text-primary)}.top-nav .nav-page.current{font-weight:700}.section-nav{display:flex;align-items:baseline;flex-wrap:wrap;margin-top:var(--spacing-sm);padding-bottom:var(--spacing-md)}@media(max-width:600px){.site-header{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--spacing-sm)}.site-header .path-nav{padding-block:0}.site-header .path-nav,.top-nav{width:100%}.top-nav{margin-left:0}.top-nav,.section-nav{column-gap:var(--spacing-md)}.top-nav a+a::before,.section-nav a+a::before{content:none}.section-nav{margin-top:var(--spacing-sm);padding-bottom:var(--spacing-sm)}}.site-footer{display:flex;align-items:center;gap:var(--spacing-md)}.footer-mark{width:25%;height:auto;flex-shrink:0;margin:0;padding:0;border:none;border-radius:0}.footer-text p{margin:0}@media(max-width:600px){.site-footer{align-items:flex-start}.footer-mark{width:56px}}.email-x{display:none}.tech{font-size:var(--font-size-small);color:var(--color-text-muted);letter-spacing:.02em;margin-top:var(--spacing-sm)}.project+.project{margin-top:var(--spacing-lg)}.project-summary>:first-child{margin-top:0}.project-summary>:last-child{margin-bottom:0}.project-summary>:last-child{margin-bottom:0}.project-actions{display:flex;flex-wrap:wrap;gap:var(--spacing-sm);margin-top:var(--spacing-sm)}.project-action{margin-left:0;padding:var(--spacing-xs)var(--spacing-sm);border:1px solid var(--color-border);text-decoration:none;color:var(--color-text-primary)}.project-action:hover{border-color:var(--color-text-muted);background:var(--color-bg-secondary)}.knows-maintenance-note{display:flex;align-items:flex-start;gap:var(--spacing-sm);margin:var(--spacing-base)0;padding:var(--spacing-sm)var(--spacing-base);border:1px solid var(--color-border);border-radius:0;background:var(--color-bg-secondary);box-shadow:0 1px 2px 0 var(--color-border);font-style:normal}.knows-maintenance-note p{margin:0}.knows-info-icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 1.15rem;width:1.15rem;height:1.15rem;margin-top:.12rem;border:1px solid var(--color-text-muted);border-radius:50%;color:var(--color-text-muted);font-size:var(--font-size-small);font-weight:700;line-height:1}.knows-controls{display:grid;grid-template-columns:auto minmax(8rem,1fr)auto auto;align-items:center;gap:var(--spacing-sm);margin:var(--spacing-md)0 var(--spacing-sm)}.knows-controls input,.knows-controls button{min-height:2.25rem;border:1px solid var(--color-border);background:var(--color-bg-primary);color:var(--color-text-primary)}.knows-controls input{min-width:0;padding:var(--spacing-xs)var(--spacing-sm)}.knows-controls button{padding:var(--spacing-xs)var(--spacing-sm);cursor:pointer}.knows-controls button:hover{border-color:var(--color-text-muted);background:var(--color-bg-secondary)}.knowledge-graph-shell{margin-bottom:var(--spacing-md)}.knowledge-graph{width:100%;height:clamp(28rem,70svh,42rem);overflow:hidden;border:1px solid var(--color-border);background:var(--color-bg-primary)}.knowledge-graph.is-node-hovered{cursor:pointer}.knowledge-graph-help{margin:var(--spacing-sm)0;color:var(--color-text-muted);font-size:var(--font-size-small)}.knowledge-legend{display:flex;flex-wrap:wrap;gap:var(--spacing-xs)var(--spacing-md);margin:0;list-style:none;font-size:var(--font-size-small)}.knowledge-legend li{display:inline-flex;align-items:center;gap:var(--spacing-xs)}.knowledge-legend-mark{display:inline-block;width:.75rem;height:.75rem;border:1px solid var(--color-text-primary);background:var(--color-bg-secondary)}.knowledge-legend-mark--programming-language{border-radius:.2rem}.knowledge-legend-mark--natural-language{transform:rotate(45deg)scale(.78)}.knowledge-legend-mark--technology{border-radius:50%}.knowledge-legend-mark--tool{clip-path:polygon(25% 7%,75% 7%,100% 50%,75% 93%,25% 93%,0 50%)}.knowledge-index{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--spacing-md);margin-top:var(--spacing-lg)}.knowledge-index-group h2{margin:0 0 var(--spacing-sm);font-size:1rem}.knowledge-index-group ul,.knowledge-related ul{display:flex;flex-wrap:wrap;gap:var(--spacing-xs)var(--spacing-sm);margin:0;list-style:none}.knowledge-index-group a,.knowledge-related a{margin-left:0}.knowledge-details{margin-top:var(--spacing-lg)}.knowledge-detail{scroll-margin-top:var(--spacing-md);padding:var(--spacing-md)0;border-block:1px solid var(--color-border)}.knowledge-detail+.knowledge-detail{border-top:0}.knows-enhanced{display:flex;flex-direction:column}.knows-enhanced .knows-controls{order:1}.knows-enhanced .knowledge-graph-shell{order:2}.knows-enhanced .knows-status{order:3}.knows-enhanced .knowledge-details{order:4;margin-top:0}.knows-enhanced .knowledge-index{order:5}.knows-enhanced .knowledge-detail{display:none}.knows-enhanced .knowledge-detail.is-active{display:block}.knowledge-category,.knowledge-content-type{color:var(--color-text-muted);font-size:var(--font-size-small);letter-spacing:.04em;text-transform:uppercase}.knowledge-detail h2{margin:var(--spacing-xs)0 var(--spacing-sm);margin-left:0}.knowledge-detail h3{margin-bottom:var(--spacing-sm)}.knowledge-related,.knowledge-content{margin-top:var(--spacing-md)}.knowledge-content ul{margin-top:var(--spacing-sm)}@media(min-width:900px){.knows-controls,.knowledge-graph-shell{width:50vw;margin-left:50%;transform:translateX(-50%)}}@media(max-width:600px){.knows-controls{grid-template-columns:minmax(0,1fr)minmax(0,1fr)}.knows-controls label,.knows-controls input{grid-column:1/-1}.knowledge-graph{height:min(65svh,34rem);min-height:24rem}.knowledge-index{grid-template-columns:minmax(0,1fr)}}h1{font-size:1.9rem;line-height:1.15;font-weight:700}h2{font-size:1.35rem;line-height:1.25;font-weight:700;margin-top:var(--spacing-lg);margin-left:.33rem}h3{font-size:1.05rem;line-height:1.3;font-weight:700}h4{font-size:.85rem;line-height:1.3;font-weight:700}