.terminal{--bg: #000000;--ink: #e9e8e4;--muted: #a1a1a1;--accent: #b3d5a7;--line: #292929;--surface: var(--bg);color-scheme:dark;font-size:16px;line-height:1.65}.terminal .site-shell{max-width:860px;padding:0 40px}.terminal .site-header{min-height:88px;border:0;padding:16px 0;position:sticky;top:0;z-index:20;background:var(--bg);--scroll-progress: 0%}.terminal .site-header::after{content:"";position:absolute;right:0;bottom:0;left:0;height:1px;background:linear-gradient(to right, var(--accent) 0 var(--scroll-progress), transparent var(--scroll-progress) 100%)}.terminal .terminal-identity{position:absolute;top:var(--identity-top, 50%);left:var(--identity-left, 0);z-index:1;color:var(--ink);font:400 var(--identity-size, 18px)/1.3 var(--mono);letter-spacing:-0.055em;opacity:var(--identity-opacity, 1);text-decoration:none;white-space:nowrap;transform:translate(var(--identity-translate-x, 0), var(--identity-translate-y, -50%));will-change:top,left,font-size,opacity}.terminal .terminal-identity:not([data-docked]){pointer-events:none}.terminal .terminal-identity:hover{color:var(--accent)}.terminal .site-header nav{width:max-content;gap:28px;flex-wrap:nowrap;transform:translateX(var(--nav-translate-x, 0));will-change:transform}.terminal .site-header[data-static-header] nav{margin-left:auto;transform:none;will-change:auto}.terminal .site-header nav>a{color:var(--muted);font-size:13px;position:relative}.terminal .site-header nav>a::after{content:"";position:absolute;right:0;bottom:5px;left:0;height:1px;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform 160ms ease-out}.terminal .site-header nav>a:hover,.terminal .site-header nav>a[aria-current=location]{color:var(--accent)}.terminal .site-header nav>a:hover::after,.terminal .site-header nav>a:focus-visible::after,.terminal .site-header nav>a[aria-current=location]::after{transform:scaleX(1)}.terminal .terminal-toggle{margin-left:auto;padding:8px 0 8px 12px;font-size:12px;border:0;color:var(--muted)}.terminal .terminal-toggle span{color:var(--accent);font-size:12px;margin-right:7px}.terminal .terminal-toggle:hover{color:var(--accent)}.terminal .mobile-nav-toggle,.terminal .mobile-nav-scrim{display:none}.terminal h1{font:400 clamp(28px, 4vw, 38px)/1.3 var(--mono);letter-spacing:-0.055em}.terminal h2{font-size:15px;font-weight:400;color:var(--muted);margin-bottom:28px}.terminal h3{font-size:22px;font-weight:500;line-height:1.4;letter-spacing:-0.02em}.terminal h4{font-size:16px;line-height:1.5;font-weight:500}.terminal .quiet{color:var(--muted);font-weight:400}.terminal .terminal-intro{padding:40px 0 52px}.terminal .terminal-intro h1{margin-bottom:18px}.terminal .terminal-intro p{max-width:62ch;color:var(--muted);margin-bottom:18px}.terminal .terminal-intro .intro-role{color:var(--ink);line-height:1.7}.terminal .not-found{min-height:calc(100dvh - 88px);display:grid;align-content:center;padding:72px 0}.terminal .not-found-code{color:var(--accent);font:11px/1.6 var(--mono);letter-spacing:.08em}.terminal .not-found h1{max-width:16ch;margin:14px 0 20px}.terminal .not-found>p:not(.not-found-code){max-width:48ch;color:var(--muted)}.terminal .actions{gap:12px 28px;margin-top:20px}.terminal .actions a,.terminal .actions .primary-link{background:rgba(0,0,0,0);color:var(--ink);padding:0;gap:8px;font-size:14px;text-decoration:underline}.terminal .actions a:hover{color:var(--accent)}.terminal .actions a span{color:var(--muted)}.terminal .document-section{border-top:1px solid var(--line);padding-top:28px;margin-bottom:60px;scroll-margin-top:96px;position:relative}.terminal .document-section::before,.terminal .contact::before{content:"";position:absolute;top:-1px;left:0;width:0;height:1px;background:var(--accent);transition:width 220ms ease-out}.terminal .document-section[data-current-section]::before,.terminal .contact[data-current-section]::before{width:44px}.terminal .scroll-emphasis{position:relative}.terminal .terminal-type-label{display:inline-block;position:relative}.terminal .terminal-type-source{display:inline-block;max-width:100%;clip-path:inset(0)}.terminal .scroll-emphasis[data-scroll-emphasis-active] .terminal-type-source{color:var(--accent);animation:terminal-type-reveal var(--terminal-type-duration) steps(var(--terminal-character-count), end) both}.terminal .terminal-block-cursor{display:inline-block;position:absolute;left:0;width:.6em;height:.88em;margin-left:.24em;background:var(--accent);opacity:0;transform:translateY(0.22em);transition:opacity 1ms linear}.terminal .scroll-emphasis[data-scroll-emphasis-active] .terminal-block-cursor{opacity:1;animation:terminal-cursor-follow var(--terminal-type-duration) steps(var(--terminal-character-count), end) both,terminal-cursor-blink 720ms steps(1, end) var(--terminal-type-duration) infinite}.terminal .scroll-media{transform:scale(var(--media-scale, 0.94));transform-origin:center;transition:transform 140ms cubic-bezier(0.2, 0.7, 0.3, 1);will-change:transform}.terminal .work-result{margin:26px 0 34px}.terminal .result-value{display:flex;flex-wrap:wrap;align-items:center;gap:18px;font:32px/1.4 var(--mono);letter-spacing:-0.055em}.terminal .result-value span:nth-child(2){color:var(--muted);font:22px var(--sans)}.terminal .result-value strong{font-weight:400}.terminal .work-result figcaption{color:var(--muted);font-size:13px;margin:6px 0 16px}.terminal .work-result p{margin-bottom:10px}.terminal .work-result .result-note{font-size:12px;color:var(--muted)}.terminal .benchmark-pipeline{--pipeline-config: #8fb7ff;--pipeline-work: #e1bd72;--pipeline-success: var(--accent);margin-top:30px;padding:16px 0 12px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.terminal .benchmark-pipeline-heading{display:flex;align-items:baseline;justify-content:space-between;gap:20px;margin-bottom:12px;color:var(--muted);font:10px/1.4 var(--mono);letter-spacing:.08em;text-transform:uppercase}.terminal .benchmark-pipeline-heading strong{color:var(--ink);font-weight:400}.terminal .benchmark-map{display:block;width:100%;height:auto;overflow:visible}.terminal .benchmark-map-mobile{display:none}.terminal .benchmark-map path,.terminal .benchmark-map rect{vector-effect:non-scaling-stroke}.terminal .pipeline-base path{fill:none;stroke:#3a3a3a;stroke-width:1}.terminal .pipeline-progress path{fill:none;stroke-width:1.5;stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 520ms cubic-bezier(0.2, 0.72, 0.25, 1)}.terminal .pipeline-progress .progress-config{stroke:var(--pipeline-config);transition-duration:680ms}.terminal .pipeline-progress .progress-pod{stroke:var(--pipeline-work)}.terminal .pipeline-progress .progress-pod-1{transition-delay:560ms}.terminal .pipeline-progress .progress-pod-2{transition-delay:680ms}.terminal .pipeline-progress .progress-pod-3{transition-delay:800ms}.terminal .pipeline-progress .progress-pod-4{transition-delay:920ms}.terminal .pipeline-progress .progress-merge{stroke:var(--pipeline-success);transition-duration:720ms;transition-delay:1200ms}.terminal .benchmark-pipeline[data-active] .pipeline-progress path{stroke-dashoffset:0}.terminal .pipeline-stage rect,.terminal .pipeline-pod rect{fill:var(--bg);stroke:#4a4a4a;stroke-width:1;transition:fill 180ms ease-out,stroke 180ms ease-out}.terminal .pipeline-stage text,.terminal .pipeline-pod text{fill:var(--ink);font:500 12px var(--mono)}.terminal .pipeline-stage .stage-detail,.terminal .pipeline-pod .stage-detail{fill:var(--muted);font-size:10px;font-weight:400}.terminal .stage-result text,.terminal .stage-complete text{font-size:11px}.terminal .stage-result .result-status,.terminal .stage-complete .result-status{fill:var(--pipeline-success);font-size:10px;font-weight:400}.terminal .benchmark-pipeline[data-active] .stage-config rect,.terminal .benchmark-pipeline[data-active] .stage-partition rect,.terminal .benchmark-pipeline[data-active] .stage-schedule rect{fill:rgba(143,183,255,.08);stroke:var(--pipeline-config)}.terminal .benchmark-pipeline[data-active] .pipeline-pod rect{fill:rgba(225,189,114,.08);stroke:var(--pipeline-work)}.terminal .benchmark-pipeline[data-active] .stage-result rect,.terminal .benchmark-pipeline[data-active] .stage-complete rect{fill:rgba(179,213,167,.08);stroke:var(--pipeline-success)}.terminal .benchmark-pipeline[data-active] .stage-partition rect{transition-delay:180ms}.terminal .benchmark-pipeline[data-active] .stage-schedule rect{transition-delay:360ms}.terminal .benchmark-pipeline[data-active] .pipeline-pod-1 rect{transition-delay:660ms}.terminal .benchmark-pipeline[data-active] .pipeline-pod-2 rect{transition-delay:780ms}.terminal .benchmark-pipeline[data-active] .pipeline-pod-3 rect{transition-delay:900ms}.terminal .benchmark-pipeline[data-active] .pipeline-pod-4 rect{transition-delay:1020ms}.terminal .benchmark-pipeline[data-active] .stage-result rect,.terminal .benchmark-pipeline[data-active] .stage-complete rect{transition-delay:1380ms}.terminal .work-roles{display:grid;gap:28px}.terminal .entry-heading{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:6px 20px;margin-bottom:10px}.terminal .date{font:11px/1.8 var(--mono);color:var(--muted);margin:0}.terminal .work-roles article>p{color:var(--muted);font-size:15px;margin:0}.terminal .work-project-link{display:inline-flex;padding:8px 0 4px;font-size:13px}.terminal .work-recognition{margin-top:24px;color:var(--muted);font-size:12px}.terminal .selected-project{margin-bottom:44px}.terminal .selected-project+.selected-project{border-top:1px solid var(--line);padding-top:36px}.terminal .project-intro>p{font-size:15px}.terminal .project-intro .project-stack{color:var(--muted);font-size:12px;margin:8px 0 16px}.terminal .project-links{margin:4px 0 18px;gap:6px 24px;font-size:13px}.terminal .project-media figcaption{font-size:12px;padding-top:12px}.terminal .project-intro .project-result{color:var(--accent);font:13px/1.6 var(--mono);margin-bottom:6px}.terminal .project-intro .project-result-context,.terminal .project-evaluation{color:var(--muted);font-size:12px}.terminal .project-evaluation{margin:0 0 16px}.terminal .project-evaluation p{margin:8px 0}.terminal .ascii-gallery{border:1px solid var(--line);padding:18px}.terminal .ascii-controls{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px 24px;margin-bottom:20px}.terminal .ascii-controls fieldset{border:0;padding:0;margin:0;display:flex;gap:4px;min-width:0}.terminal .ascii-controls legend,.terminal .ascii-label{color:var(--muted);font:11px/1.8 var(--mono)}.terminal .ascii-controls legend{margin-bottom:6px}.terminal .ascii-controls label{cursor:pointer;position:relative}.terminal .ascii-controls input{position:absolute;inset:0;z-index:1;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}.terminal .ascii-controls label>span{display:flex;align-items:center;min-height:44px;padding:6px 10px;border:1px solid var(--line);font-size:12px;color:var(--muted)}.terminal .ascii-controls input:checked+span{border-color:var(--accent);color:var(--accent);background:rgba(179,213,167,.08)}.terminal .ascii-controls input:focus-visible+span{outline:2px solid var(--accent);outline-offset:3px}.terminal .ascii-sample{display:none;grid-template-columns:minmax(0, 1fr) minmax(0, 2fr);gap:20px;align-items:center}.terminal .ascii-gallery:has([name=ascii-example][value=butterfly]:checked) [data-ascii-sample=butterfly]{display:grid}.terminal .ascii-gallery:has([name=ascii-example][value=helicopter]:checked) [data-ascii-sample=helicopter]{display:grid}.terminal .ascii-gallery:has([name=ascii-example][value=octopus]:checked) [data-ascii-sample=octopus]{display:grid}.terminal .ascii-label{margin:8px 0}.terminal .ascii-label span{color:var(--ink)}.terminal .ascii-source img{width:100%;height:auto}.terminal .ascii-conversions{min-width:0}.terminal .ascii-conversion{display:none}.terminal .ascii-gallery:has([name=ascii-width][value="32"]:checked) [data-ascii-cols="32"]{display:block}.terminal [data-ascii-cols="32"] pre{font-size:calc((100cqw - 2px)/(32*.61))}.terminal .ascii-gallery:has([name=ascii-width][value="80"]:checked) [data-ascii-cols="80"]{display:block}.terminal [data-ascii-cols="80"] pre{font-size:calc((100cqw - 2px)/(80*.61))}.terminal .ascii-output{container-type:inline-size;width:100%;aspect-ratio:1}.terminal .ascii-output pre{margin:0;font-family:var(--mono);line-height:2ch;letter-spacing:0;white-space:pre;color:var(--accent)}.terminal .ascii-download{display:inline-block;padding:10px 0;font-size:12px}@media(max-width: 600px){.terminal .ascii-gallery{padding:12px}.terminal .ascii-sample{grid-template-columns:minmax(0, 1fr);gap:8px}.terminal .ascii-source{display:grid;grid-template-columns:88px minmax(0, 1fr);gap:0 12px;align-items:center}.terminal .ascii-source img{grid-column:1;grid-row:1/3}.terminal .ascii-source .ascii-label{grid-column:2}}.terminal .piano-art{padding:8px 0;background:var(--bg);position:relative;--waveform-progress: 0%}.terminal .piano-art img{width:100%;height:96px;object-fit:fill;margin:0;filter:grayscale(1)}.terminal .piano-art .waveform-base{opacity:.3}.terminal .piano-art .waveform-played{position:absolute;top:8px;right:0;left:0;margin:0;filter:brightness(1.18) saturate(1.15);clip-path:inset(0 calc(100% - var(--waveform-progress)) 0 0);transition:clip-path 80ms linear;pointer-events:none}.terminal .piano-art::after{content:"";position:absolute;top:8px;bottom:8px;left:var(--waveform-progress);width:1px;background:var(--accent);box-shadow:0 0 8px rgba(179,213,167,.5490196078);opacity:0;transform:translateX(-1px);transition:left 80ms linear,opacity 120ms ease-out;pointer-events:none}.terminal .piano-art[data-progress-visible]::after{opacity:1}.terminal .audio-control{padding:8px 0;flex-direction:row;align-items:center}.terminal .audio-control audio{width:min(300px,100%)}.terminal .media-load{font-size:12px;min-height:44px;padding:8px 14px}.terminal .video-details{border:0}.terminal .video-details summary{color:var(--muted);font-size:12px}.terminal .project-tetris{display:grid;grid-template-columns:1fr 254px;gap:32px}.terminal .tetris-stage{padding:0;min-height:0;background:var(--bg)}.terminal .tetris-player{width:254px;max-width:100%;text-align:center}.terminal .tetris-stage video{width:254px;max-width:100%}.terminal .tetris-player .media-load{margin-top:12px}.terminal .small-project{border-top:1px solid var(--line);padding-top:28px;font-size:14px}.terminal .small-project h3{font-size:18px}.terminal .small-project p{color:var(--muted);margin:12px 0}.terminal .background-entry+.background-entry{margin-top:28px}.terminal .background-entry h3{font-size:16px;letter-spacing:0}.terminal .background-entry>p{font-size:14px;color:var(--muted);margin-top:10px}.terminal .background-entry .background-role{margin:-4px 0 8px;font-size:12px}.terminal .contact{display:block;margin:0;padding:28px 0 32px;scroll-margin-top:96px;position:relative}.terminal .contact h2{font-size:15px;margin:0 0 24px}.terminal .contact p{color:var(--muted);font-size:15px;max-width:64ch}.terminal .footer-note{flex-direction:row;justify-content:space-between;gap:16px;margin-top:52px;font-size:12px}.terminal .terminal-window{--bg: #000000;--muted: #a1a1a1;--line: #393939}@keyframes terminal-cursor-blink{0%,49%{opacity:1}50%,99%{opacity:0}100%{opacity:1}}@keyframes terminal-cursor-follow{from{left:0}to{left:100%}}@keyframes terminal-type-reveal{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}@media(prefers-reduced-motion: reduce){.terminal .scroll-media{transform:none}}@media(max-width: 600px){.terminal .site-shell{padding:0 24px}.terminal .site-header{min-height:64px;padding:10px 0}.terminal .site-header:not([data-mobile-navigation]){min-height:96px}.terminal .site-header:not([data-mobile-navigation]) .terminal-identity{top:var(--identity-top, 20px)}.terminal .terminal-identity{top:var(--identity-top, 50%);left:var(--identity-left, 0);font-size:var(--identity-size, 16px);transform:translate(var(--identity-translate-x, 0), var(--identity-translate-y, -50%))}.terminal .site-header nav{width:100%;justify-content:flex-start;gap:24px;padding-top:0;transform:none;will-change:auto}.terminal .site-header:not([data-mobile-navigation]) nav{justify-content:center;gap:16px;padding-top:28px}.terminal .site-header[data-mobile-navigation] nav{position:fixed;top:0;right:0;bottom:0;z-index:2;width:min(78vw,280px);padding:80px 28px 32px;border-left:1px solid var(--line);background:var(--bg);flex-direction:column;align-items:stretch;justify-content:flex-start;gap:0;visibility:hidden;transform:translateX(100%)}.terminal .site-header[data-mobile-navigation][data-mobile-nav-ready] nav{transition:transform 260ms cubic-bezier(0.2, 0.72, 0.25, 1),visibility 0s linear 260ms}.terminal .site-header[data-mobile-navigation][data-mobile-nav-open] nav{visibility:visible;transform:translateX(0);transition-delay:0s}.terminal .site-header[data-mobile-navigation] nav>a{width:100%;min-height:54px;border-bottom:1px solid var(--line);font-size:16px}.terminal .site-header[data-mobile-navigation] nav>a::after{bottom:0}.terminal .mobile-nav-toggle{display:block;z-index:3;min-width:52px;min-height:44px;margin-left:auto;padding:8px 0 8px 12px;border:0;color:var(--muted);font:12px/1 var(--mono);text-align:right}.terminal .mobile-nav-toggle:hover,.terminal .mobile-nav-toggle[aria-expanded=true]{color:var(--accent)}.terminal .mobile-nav-scrim:not([hidden]){display:block;position:fixed;inset:0;z-index:1;width:100%;height:100%;padding:0;border:0;background:rgba(0,0,0,.68)}.terminal .terminal-toggle{display:none}.terminal .terminal-toggle span{margin-right:3px}.terminal .terminal-intro{padding:28px 0 36px}.terminal .terminal-intro p{font-size:15px}.terminal .document-section{padding-top:24px;margin-bottom:44px;scroll-margin-top:72px}.terminal .result-value{font-size:28px;gap:14px}.terminal .work-result p{font-size:15px}.terminal .work-result .result-note{font-size:12px}.terminal .benchmark-pipeline{margin-top:24px;padding-bottom:12px}.terminal .benchmark-pipeline-heading{align-items:flex-start;flex-direction:column;gap:4px;margin-bottom:14px}.terminal .benchmark-pipeline-heading span{letter-spacing:0;text-transform:none}.terminal .benchmark-map-desktop{display:none}.terminal .benchmark-map-mobile{display:block}.terminal .benchmark-map-mobile .pipeline-pod text{font-size:8px}.terminal .benchmark-map-mobile .pipeline-pod .stage-detail{font-size:8px}.terminal .entry-heading{display:block}.terminal .entry-heading .date{margin-top:4px}.terminal .audio-control{flex-direction:column;align-items:flex-start;gap:8px}.terminal .project-tetris{grid-template-columns:1fr;gap:4px}.terminal .tetris-stage{justify-content:flex-start}.terminal .background-entry .background-role{margin-top:0}.terminal .contact{scroll-margin-top:72px}}body.mobile-nav-open{overflow:hidden}@media(max-width: 600px)and (prefers-reduced-motion: reduce){.terminal .site-header[data-mobile-navigation][data-mobile-nav-ready] nav{transition:none}}