html{scrollbar-gutter:stable}.app-shell>.shell-main,.app-shell>.site-footer{translate:0 var(--scroll-pull,0px);transition:translate .42s cubic-bezier(.16,1,.3,1),opacity .28s}.app-shell[data-scroll-phase=pull]>:is(.shell-main,.site-footer){transition:translate .14s cubic-bezier(.22,.61,.36,1)}.app-shell[data-scroll-phase=leave]>:is(.shell-main,.site-footer){opacity:0;transition:translate .28s cubic-bezier(.4,0,.6,1),opacity .28s}.app-shell[data-scroll-phase=enter]>:is(.shell-main,.site-footer){animation:.6s cubic-bezier(.16,1,.3,1) both scroll-page-arrival}@keyframes scroll-page-arrival{0%{opacity:0;translate:0 var(--scroll-arrival)}to{opacity:1;translate:0}}@media (prefers-reduced-motion:reduce){.app-shell>.shell-main,.app-shell>.site-footer{transition:none!important;animation:none!important;translate:none!important}}@media print{.app-shell>.shell-main,.app-shell>.site-footer{opacity:1!important;animation:none!important;translate:none!important}}.shell-main>.portfolio-view{background:0 0;width:100%;padding:0}.portfolio-view h2,.portfolio-view h3{letter-spacing:-.025em;margin:0;font-weight:560}.portfolio-view h2{font-size:clamp(1.5rem,3vw,2rem)}.portfolio-view h3{font-size:1.1rem}.portfolio-view .eyebrow,.index-number,.record-period,.credential-note{font-family:var(--font-technical);font-size:.75rem;line-height:1.65}.portfolio-view .eyebrow{color:var(--color-text-muted);margin:0 0 24px}.view-heading{margin-bottom:32px}.shell-main .view-heading h1{overflow-wrap:anywhere;max-width:100%;font-size:clamp(2.5rem,7vw,5rem)}.home-view{text-align:left;flex-direction:column;align-items:stretch;display:flex}.shell-main .home-view h1{max-width:100%;font-size:clamp(2.4rem,5.5vw,4.75rem);line-height:1.08}.home-view .home-positioning{max-width:44ch;margin-block:24px 0;font-size:clamp(1rem,1.5vw,1.15rem)}.home-links{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 40px;width:100%;display:grid}.home-links a{border-bottom:1px solid color-mix(in srgb, var(--color-border) 55%, transparent);align-items:flex-start;gap:16px;padding:20px 0}.home-link-copy{flex-direction:column;gap:4px;min-width:0;display:flex}.home-link-description{color:var(--color-text-muted);font-size:.875rem;line-height:1.45}.home-links a>:last-child{margin-left:auto}.index-number{color:var(--color-text-muted)}.engineering-layout{grid-template-columns:minmax(220px,1fr) minmax(0,2fr);align-items:start;gap:72px;display:grid;position:relative}.area-selector{gap:4px;display:grid}.area-selector button{color:var(--color-text);text-align:left;cursor:pointer;transition:color var(--motion-state) var(--ease-out), background-color var(--motion-state) var(--ease-out), border-color var(--motion-state) var(--ease-out), font-weight var(--motion-state) var(--ease-out);background:0 0;border:1px solid #0000;border-radius:3px;align-items:center;gap:16px;padding:20px 16px;display:flex}.area-selector button>:last-child{margin-left:auto}.area-selector button:hover{border-color:color-mix(in srgb, var(--area-accent) 22%, transparent);color:var(--color-text)}.area-selector button[aria-pressed=true]{border-color:color-mix(in srgb, var(--area-accent) 35%, transparent);background-color:color-mix(in srgb, var(--area-accent) 7%, transparent);font-weight:650}.area-selector button[aria-pressed=true] .index-number{color:inherit}.engineering-detail{animation:engineering-detail-enter var(--motion-state) var(--ease-out) both;background:0 0;padding:16px 0 32px}.engineering-detail h2{position:relative}.engineering-detail>p{border-bottom:1px solid var(--color-border);padding-bottom:24px}.area-node,.detail-node{border:1px solid var(--area-accent);background:var(--color-page);width:7px;height:7px;transition:background-color var(--motion-state) var(--ease-out), transform var(--motion-state) var(--ease-out);border-radius:50%;flex-shrink:0;display:inline-block}.area-selector button[aria-pressed=true] .area-node,.detail-node{background:var(--area-accent)}.area-selector button[aria-pressed=true] .area-node{transform:scale(1.15)}.detail-node{position:absolute;top:.6em;left:-20px}.area-connection{pointer-events:none;fill:none;width:100%;height:100%;stroke:var(--area-accent);stroke-width:1px;opacity:.35;transition:opacity .18s;position:absolute;inset:0}.engineering-layout:has(.area-selector button[aria-pressed=true]:is(:hover,:focus-visible)) .area-connection{opacity:.8}.engineering-detail .technology-list li{border-color:#0000;border-bottom-color:var(--color-border)}.engineering-detail .evidence-groups{border-top-color:color-mix(in srgb, var(--area-accent) 35%, transparent)}@media (width<=760px){.area-connection{display:none}.area-selector button .area-node{display:inline-block}.engineering-detail{border-top:1px solid var(--color-border);padding-left:20px}}@media (prefers-reduced-motion:reduce){.area-connection,.area-selector button,.area-node,.detail-node{transition:none}.engineering-detail{animation:none}}.connection-sequence{color:var(--area-accent);stroke:currentColor;opacity:1;transition:opacity .18s}.connection-sequence.is-leaving{opacity:0}.connection-line{stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1px}.connection-start,.connection-end{fill:currentColor;stroke:none;opacity:0;transform-box:fill-box;transform-origin:50%;transform:scale(0)}.area-connection[data-visible=true] .connection-line{animation:connection-draw var(--motion-line) var(--ease-connection) var(--motion-point) both}.area-connection[data-visible=true] .connection-start{animation:connection-point-in var(--motion-point) var(--ease-connection) both}.area-connection[data-visible=true] .connection-end{animation:connection-point-in var(--motion-point) var(--ease-connection) var(--motion-arrival) both}@keyframes connection-draw{0%{stroke-dashoffset:1px}to{stroke-dashoffset:0}}@keyframes connection-point-in{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes engineering-detail-enter{0%{opacity:0;transform:translateY(8px)}}@media (width>=761px){.engineering-layout:has(.connection-sequence) .area-selector button[aria-pressed=true] .area-node{opacity:0}.engineering-layout:has(.connection-sequence) .detail-node{opacity:0}}@media (prefers-reduced-motion:reduce){.connection-sequence{transition:none}.area-connection[data-visible] .connection-line{stroke-dashoffset:0;animation:none}.area-connection[data-visible] .connection-start,.area-connection[data-visible] .connection-end{opacity:1;animation:none;transform:none}}.topic-list{margin-block:24px 32px;padding-left:20px;line-height:1.7}.technology-list{flex-wrap:wrap;gap:8px;margin:16px 0 0;padding:0;list-style:none;display:flex}.technology-list li{border:0;border-bottom:1px solid var(--color-border);font-family:var(--font-technical);padding:4px 8px 4px 0;font-size:.8125rem;line-height:1.5}.evidence-groups{border-top:1px solid var(--color-border);grid-template-columns:1.5fr 1fr;gap:24px;margin-top:32px;padding-top:24px;display:grid}.evidence-groups a{gap:8px;font-size:.875rem}.evidence-groups ul{color:var(--color-text-muted);padding-left:16px;font-size:.8rem;line-height:1.7}.evidence-groups section:last-child a{display:flex}.evidence-groups section:only-child{grid-column:1/-1}.experience-record{padding-bottom:16px;position:relative}.experience-record+.experience-record{border-top:1px solid var(--color-border)}.experience-record summary{cursor:pointer;grid-template-columns:180px 1fr 24px;align-items:start;gap:72px;padding:32px 0;list-style:none;display:grid;position:relative}.experience-record summary::-webkit-details-marker{display:none}.record-title{font-size:1.5rem;font-weight:560;display:block}.record-subtitle{color:var(--color-text-muted);margin-top:8px;display:block}.disclosure-icon{font-size:1.5rem}.experience-record[open] .disclosure-icon{transform:rotate(45deg)}.experience-body{margin-left:252px;padding-bottom:40px}.experience-body>p:first-child{margin-top:0}.workstreams{margin-top:32px}.workstreams article{border-left:1px solid var(--color-border);grid-template-columns:24px 1fr;gap:16px;padding:12px 0 32px 20px;display:grid;position:relative}.projects-view{--project-active:#b27658}.project-record{--project-accent:#71848b;grid-template-columns:180px minmax(0,1fr);gap:72px;padding-block:24px;scroll-margin-top:24px;display:grid;position:relative}.project-record[data-region=moss]{--project-accent:#76806b}.project-record+.project-record{border-top:1px solid var(--color-border)}.project-meta{flex-direction:column;align-items:flex-start;gap:16px;display:flex}.project-record>.connection-mark{color:var(--project-accent);stroke:currentColor}.project-record>.connection-mark circle{fill:currentColor}.project-record .index-number,.project-record .technology-list li,.project-record h2{transition:color .8s var(--ease-out), border-color .8s var(--ease-out)}.project-record:is(:hover,:focus-within) .index-number{color:var(--project-accent)}.project-record:is(:hover,:focus-within) .technology-list li{border-bottom-color:color-mix(in srgb, var(--project-accent) 55%, transparent)}.project-record:is(:hover,:focus-within) h2{color:color-mix(in srgb, var(--project-accent) 72%, var(--color-text))}.engineering-references{color:var(--color-text-muted);flex-wrap:wrap;gap:8px 16px;font-size:.8rem;display:flex}.external-link{border-bottom:1px solid var(--color-border);gap:16px;margin-top:16px}.project-actions{flex-wrap:wrap;gap:16px 28px;margin-top:16px;display:flex}.project-actions .external-link,.project-detail-link{border-bottom:1px solid var(--color-border);gap:12px;margin-top:0}.education-group{grid-template-columns:180px minmax(0,1fr);gap:72px;padding-block:40px;display:grid;position:relative}.education-group+.education-group{border-top:1px solid var(--color-border)}.education-record{border-left:1px solid var(--color-border);padding-left:24px;position:relative}.education-record:before{content:"";background:var(--page-accent);border-radius:50%;width:5px;height:5px;position:absolute;top:8px;left:-3px}.education-group>h2{font-size:1.1rem;line-height:1.5}.education-record+.education-record{margin-top:0;padding-top:32px}.education-record+.education-record:before{top:40px}.education-record p{margin-block:8px}.education-record .provider{color:var(--color-text)}.education-record .credential-note{margin-top:16px}.connection-mark{fill:none;width:72px;height:32px;stroke:var(--page-accent);stroke-width:1px;opacity:.55;flex-shrink:0;overflow:visible}.connection-mark circle{fill:var(--page-accent);stroke:none;transform-box:fill-box;transform-origin:50%}.connection-mark path{stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:0}.project-record>.connection-mark,.education-group>.connection-mark,.experience-record summary>.connection-mark{position:absolute;top:36px;left:172px}.project-record>.connection-mark,.education-group>.connection-mark{top:44px}.view-heading .eyebrow:before{content:"";background:var(--page-accent);border-radius:50%;width:5px;height:5px;margin:0 10px 2px 0;display:inline-block}@media (prefers-reduced-motion:reduce){.portfolio-view .connection-mark path,.portfolio-view .connection-mark circle{animation:none!important}.project-record .index-number,.project-record .technology-list li,.project-record h2{transition:none}}@media (width<=760px){.engineering-layout{grid-template-columns:1fr;gap:24px}.home-links{grid-template-columns:1fr;gap:0}.area-selector{grid-template-columns:repeat(2,minmax(0,1fr))}.area-selector button{gap:8px;padding:12px;font-size:.875rem}.experience-record summary{grid-template-columns:1fr 24px;gap:12px}.experience-record summary .record-period{grid-column:1/-1}.experience-body{margin-left:0}.project-record,.education-group{grid-template-columns:1fr}.project-meta{flex-direction:row;align-items:center}.project-record,.education-group{gap:24px}.project-record>.connection-mark,.education-group>.connection-mark,.experience-record summary>.connection-mark{display:none}.home-links .connection-mark{width:48px}}@media (width<=420px){.home-links{grid-template-columns:1fr}.engineering-detail{padding:20px}.evidence-groups{grid-template-columns:1fr}}.workstreams article{border-left:0}.stream-connection{width:8px;height:44px;fill:var(--page-accent);stroke:var(--page-accent);stroke-width:1px;position:absolute;top:-24px;left:-4px;overflow:visible}.stream-connection path{fill:none;stroke-dasharray:1}.stream-connection circle{transform-box:fill-box;transform-origin:50%}:is(.connection-mark,.stream-connection)[data-motion=waiting]{opacity:0}:is(.connection-mark,.stream-connection)[data-motion=ready] .mark-start{animation:connection-point-in var(--motion-point) var(--ease-connection) both}:is(.connection-mark,.stream-connection)[data-motion=ready] path{animation:connection-draw var(--motion-line) var(--ease-connection) var(--motion-point) both}:is(.connection-mark,.stream-connection)[data-motion=ready] .mark-end{animation:connection-point-in var(--motion-point) var(--ease-connection) var(--motion-arrival) both}@media (prefers-reduced-motion:reduce){.portfolio-view [data-motion]{opacity:1}.stream-connection path,.stream-connection circle{animation:none!important}}body,html{transition:background-color .65s}:is(body:has(.app-shell[data-arcade=on]),html:has(.app-shell[data-arcade=on])){background-color:#20231f}.app-shell>.shell-main,.app-shell>footer,.arcade-entry{transition:opacity .35s,filter .65s}.app-shell[data-arcade=on]>.shell-main,.app-shell[data-arcade=on]>footer,.app-shell[data-arcade=on]>.arcade-entry{opacity:0;filter:blur(5px);pointer-events:none}.app-shell:before,.app-shell:after{transition:opacity .65s, background-color var(--motion-ambient) var(--ease-out)}.app-shell[data-arcade=on]:before,.app-shell[data-arcade=on]:after{opacity:0}.interactive-grid,.organic-contours,.organic-landscape{transition:stroke .65s,opacity .65s,transform .65s cubic-bezier(.22,.61,.36,1)}.app-shell[data-arcade=on]>.interactive-grid{opacity:0;transform:scale(1.05)}.app-shell[data-arcade=on]>.organic-contours{stroke:#858c80;opacity:.35;transform:translate(55vw,22vh)rotate(30deg)scale(.8)}.app-shell[data-arcade=on]>.organic-landscape{stroke:#65705e;opacity:.4;transform:translate(-5vw,-4vh)rotate(-12deg)}.arcade-entry{color:var(--color-text-muted);justify-content:space-between;align-items:center;gap:16px;padding:12px 0 20px;font-size:.8125rem;display:flex}.arcade-entry-actions{align-items:center;gap:16px;display:flex}.arcade-entry .contact-links--icons{flex-direction:row;gap:4px}.arcade-entry .contact-links--icons a{width:36px;min-height:36px;color:var(--color-text-muted);justify-content:center}.arcade-entry .contact-links--icons a:hover{color:var(--color-text)}.contact-links--icons svg{width:17px;height:17px}.arcade-entry button{width:44px;min-height:44px;color:var(--color-text-muted);font:.75rem var(--font-technical);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;padding:8px;transition:color .18s;display:inline-flex}.arcade-entry button:hover{color:var(--color-text)}.arcade-entry button svg{width:17px;height:17px}.app-shell[data-arcade]:not([data-arcade=off])>.shell-header{z-index:52;width:min(calc(100% - 2 * var(--shell-gutter)), var(--shell-max));border-color:#65705e55;height:89px;padding:0;display:flex;position:fixed;top:0;left:50%;transform:translate(-50%)}.app-shell[data-arcade]:not([data-arcade=off])>.shell-header>:not(.arcade-hud){display:none}.arcade-hud{color:#eee9de;width:100%;font:.75rem var(--font-technical);align-items:center;gap:32px;animation:.65s both arcade-arrive;display:flex}.arcade-brand{white-space:nowrap;align-items:center;gap:10px;margin-right:auto;display:flex}.arcade-brand>span:first-child{color:#858c80}.arcade-brand>i{background:#c6815e;width:5px;height:5px;margin-left:8px}.arcade-score,.arcade-services{align-items:center;gap:14px;display:flex}.arcade-score>span,.arcade-services>span{color:#a3aa9d;text-transform:uppercase;letter-spacing:.08em;font-size:.625rem}.arcade-score strong{font-variant-numeric:tabular-nums;font-size:.9375rem;font-weight:400}.arcade-services b{gap:7px;display:flex}.arcade-services i{border:1px solid #858c80;border-radius:50%;width:7px;height:7px}.arcade-services i[data-alive=true]{background:#eee9de;border-color:#eee9de}.arcade-hud-actions{gap:8px;display:flex}.arcade-hud button{color:#eee9de;min-width:44px;min-height:44px;font:inherit;cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;gap:12px;padding:8px;display:inline-flex}.arcade-hud button>span:last-child{font-size:1.4rem}.arcade-esc{color:#a3aa9d;font-size:.625rem}.arcade-hud button:hover,.arcade-text-button:hover{color:#c6815e}.arcade-mode{--arcade-ivory:#eee9de;--arcade-muted:#a3aa9d;z-index:40;color:var(--arcade-ivory);flex-direction:column;transition:opacity .6s;animation:.65s both arcade-arrive;display:flex;position:fixed;inset:89px 0 0}.arcade-mode[data-leaving=true],.app-shell[data-arcade=leaving] .arcade-hud{opacity:0;pointer-events:none;animation:none}.arcade-field{flex:1;min-height:0;position:relative}.arcade-field>canvas{touch-action:none;cursor:crosshair;outline:none;width:100%;height:100%;transition:opacity .45s;display:block;position:absolute;inset:0}.arcade-field>canvas:focus-visible{outline-offset:-2px;outline:1px solid #c6815e55}.arcade-mode[data-phase=paused] canvas,.arcade-mode[data-phase=postmortem] canvas{opacity:.22}.arcade-readout{top:25px;left:max(var(--shell-gutter), calc((100vw - var(--shell-max)) / 2));right:max(var(--shell-gutter), calc((100vw - var(--shell-max)) / 2));pointer-events:none;color:#a3aa9d;font:.625rem var(--font-technical);letter-spacing:.06em;text-transform:uppercase;justify-content:space-between;display:flex;position:absolute}.arcade-readout i{color:#65705e;margin-inline:12px;font-style:normal}.arcade-chain{color:#c6815e}.arcade-chain strong{margin-left:12px;font-size:1rem;font-weight:400}.arcade-panel{z-index:2;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#65705e transparent;max-height:calc(100% - 70px);position:absolute;top:50%;overflow-y:auto;transform:translateY(-50%)}.arcade-intro{left:max(var(--shell-gutter), calc((100vw - var(--shell-max)) / 2));background:radial-gradient(at 25%,#20231f 35%,#20231fce 60%,#20231f00 75%);width:min(530px,48vw);padding:16px 28px 16px 0}.arcade-eyebrow{font:.625rem var(--font-technical);letter-spacing:.14em;color:var(--arcade-muted);align-items:center;gap:10px;margin:0 0 26px;display:flex}.arcade-eyebrow>span{background:#c6815e;width:5px;height:5px;display:inline-block}.arcade-intro h1{letter-spacing:-.055em;margin:0;font-size:clamp(4rem,7.7vw,6.75rem);font-weight:450;line-height:.92}.arcade-intro h1 em{color:#c6815e;font-style:normal}.arcade-tagline{margin:28px 0 8px;font-size:1.125rem}.arcade-intro-note{color:var(--arcade-muted);margin:0;font-size:.875rem}.arcade-controls{color:var(--arcade-muted);margin:28px 0}.arcade-keyboard{flex-wrap:wrap;gap:12px 24px;font-size:.75rem;display:flex}.arcade-keyboard>div{flex-direction:column;gap:10px;display:flex}.arcade-keyboard kbd{color:#eee9de;font:.6875rem var(--font-technical)}.arcade-mouse,.arcade-touch{max-width:46ch;margin-top:18px;font-size:.6875rem;line-height:1.8}.arcade-touch,.arcade-touch-hint{display:none}.arcade-primary{color:#20231f;min-height:48px;font:.75rem var(--font-technical);cursor:pointer;background:#eee9de;border:1px solid #eee9de;justify-content:space-between;align-items:center;gap:40px;padding:12px 22px;transition:background-color .18s,border-color .18s;display:inline-flex}.arcade-primary:hover{background:#c6815e;border-color:#c6815e}.arcade-primary>span{font-size:1.2rem}.arcade-text-button{min-height:44px;color:var(--arcade-muted);cursor:pointer;background:0 0;border:0;margin-top:12px;padding:8px 0;font-size:.75rem;display:block}.arcade-mode button:focus-visible,.arcade-hud button:focus-visible{outline-offset:4px;outline:2px solid #c6815e}.arcade-footer{width:min(calc(100% - 2 * var(--shell-gutter)), var(--shell-max));min-height:58px;padding:16px 0 max(16px, env(safe-area-inset-bottom));color:#a3aa9d;font:.5625rem var(--font-technical);letter-spacing:.04em;border-top:1px solid #65705e55;justify-content:space-between;align-items:center;gap:20px;margin:0 auto;display:flex}.arcade-footer>span:first-child{align-items:center;gap:10px;display:flex}.arcade-footer i{background:#858c80;width:4px;height:4px}.arcade-centered{background:#20231fed;width:min(440px,100% - 48px);padding:24px;left:50%;transform:translate(-50%,-50%)}.arcade-centered h2{font:400 clamp(1.4rem, 4vw, 2.2rem) var(--font-technical);letter-spacing:-.04em;margin:0 0 12px}.arcade-centered>p:not(.arcade-eyebrow){color:var(--arcade-muted);font-size:.8125rem;line-height:1.6}.arcade-centered .arcade-primary{width:100%;margin-top:20px}.arcade-centered .arcade-text-button{margin-inline:auto}.arcade-final-score{font:2.5rem var(--font-technical);color:#c6815e;margin:26px 0 20px}.arcade-final-score>span{text-transform:uppercase;color:var(--arcade-muted);margin-top:6px;font-size:.625rem;display:block}.arcade-postmortem dl{margin:0;font-size:.8125rem}.arcade-postmortem dl>div{border-bottom:1px solid #65705e44;justify-content:space-between;gap:16px;padding:10px 0;display:flex}.arcade-postmortem dt{color:var(--arcade-muted)}.arcade-postmortem dd{font-family:var(--font-technical);margin:0}.arcade-best{justify-content:space-between;gap:16px;display:flex}.arcade-best span{font-family:var(--font-technical)}.arcade-postmortem-actions{justify-content:space-between;align-items:center;gap:20px;margin-top:20px;display:flex}.arcade-postmortem-actions .arcade-primary{gap:24px;width:auto;margin:0}.arcade-postmortem-actions .arcade-text-button{margin:0}.arcade-notice,.arcade-down{text-align:center;pointer-events:none;color:#c6815e;font:.75rem var(--font-technical);letter-spacing:.13em;width:90%;position:absolute;top:16%;left:50%;transform:translate(-50%)}.arcade-down{font-size:clamp(1.5rem,5vw,3rem);top:45%}.arcade-down span{color:#a3aa9d;margin-top:20px;font-size:.625rem;display:block}.arcade-resolution{bottom:28px;left:max(var(--shell-gutter), calc((100vw - var(--shell-max)) / 2));pointer-events:none;color:#a3aa9d;text-transform:uppercase;font:.625rem var(--font-technical);position:absolute}.arcade-resolution span{color:#c6815e;margin-left:14px}.arcade-loading{z-index:55;color:#eee9de;text-align:center;font:.875rem var(--font-technical);position:fixed;inset:40% 24px auto}.arcade-loading button{cursor:pointer;min-height:44px;margin:20px auto;padding:12px;display:block}.arcade-sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@keyframes arcade-arrive{0%{opacity:0}to{opacity:1}}@media (width<=760px){.arcade-entry{align-items:flex-start}.arcade-entry-actions{gap:8px}.arcade-hud{flex-wrap:wrap;gap:14px}.arcade-brand{gap:6px;font-size:.625rem}.arcade-brand>i,.arcade-services>span,.arcade-esc{display:none}.arcade-score{gap:8px}.arcade-score strong{font-size:.75rem}.arcade-score>span{font-size:.5rem}.arcade-hud-actions{gap:0}.arcade-hud button{padding:4px}.arcade-intro{width:min(470px,100% - 48px);padding:16px 0}.arcade-mode[data-phase=ready] canvas{opacity:.3}.arcade-intro h1{font-size:clamp(3.8rem,15vw,5rem)}.arcade-footer{gap:12px;font-size:.5rem}.arcade-desktop-hint{text-align:right;max-width:55%;line-height:1.7}}@media (width<=480px){.arcade-hud{grid-template-columns:minmax(0,1fr) auto;gap:12px;display:grid}.arcade-brand{grid-area:1/1}.arcade-hud-actions{grid-area:1/2/3}.arcade-score{grid-area:2/1;justify-self:start}.arcade-services{grid-area:2/1;justify-self:end;margin-right:0}.arcade-panel{max-height:calc(100% - 48px)}.arcade-readout{font-size:.5rem;top:16px}.arcade-tagline{font-size:1rem}.arcade-centered{padding:20px 8px}}@media (pointer:coarse){.arcade-keyboard,.arcade-mouse,.arcade-desktop-hint{display:none}.arcade-touch{font-size:.75rem;display:block}.arcade-touch-hint{justify-content:space-between;gap:18px;width:100%;line-height:1.6;display:flex}.arcade-footer>span:first-child{display:none}}@media (height<=700px){.arcade-intro h1{font-size:clamp(3rem,9vh,5rem)}.arcade-eyebrow{margin-bottom:16px}.arcade-tagline{margin-top:20px}.arcade-controls{margin-block:20px}.arcade-final-score{margin-block:16px;font-size:2rem}.arcade-postmortem dl>div{padding-block:7px}}@media (height<=800px){.arcade-postmortem{max-height:calc(100% - 48px);padding:16px}.arcade-postmortem .arcade-eyebrow{margin-bottom:14px}.arcade-postmortem .arcade-final-score{margin-block:16px;font-size:2rem}.arcade-postmortem dl>div{padding-block:7px}.arcade-postmortem-actions{margin-top:14px}}@media (height<=620px) and (width>=761px){.arcade-intro{width:min(590px,53vw);padding-block:4px}.arcade-intro h1{font-size:3.4rem}.arcade-intro h1 br{display:none}.arcade-intro h1 em:before{content:" "}.arcade-intro .arcade-eyebrow{margin-bottom:18px}.arcade-controls{margin-block:18px}.arcade-mouse{margin-block:12px 0}.arcade-intro .arcade-text-button{margin:0 0 0 24px;display:inline-block}}@media (height<=620px) and (width<=760px){.arcade-intro{padding-block:8px}.arcade-intro h1{font-size:clamp(2rem,9vw,3.4rem)}.arcade-intro h1 br,.arcade-intro-note,.arcade-intro .arcade-text-button{display:none}.arcade-intro h1 em:before{content:" "}.arcade-intro .arcade-eyebrow{margin-bottom:16px}.arcade-controls{margin-block:16px}}@media (prefers-reduced-motion:reduce){html,body,.app-shell>.shell-main,.app-shell>footer,.arcade-entry,.app-shell:before,.app-shell:after,.interactive-grid,.organic-contours,.organic-landscape,.arcade-mode,.arcade-field>canvas{transition:none}.arcade-hud,.arcade-mode{animation:none}.app-shell[data-arcade=on]>.shell-main,.app-shell[data-arcade=on]>footer,.app-shell[data-arcade=on]>.arcade-entry{filter:none}}@media print{.arcade-entry,.arcade-mode,.arcade-hud{display:none}}.app-shell[data-route=about]{--page-accent:#78816c;--ambient-primary:#e1e5d8;--ambient-secondary:#e3e9ec}.about-view .view-heading{margin-bottom:48px}.about-story{isolation:isolate;min-height:260px;padding:12px 0 48px;position:relative}.about-story-copy{z-index:1;width:57%;position:relative}.about-story h2{max-width:27ch;font-size:clamp(1.4rem,2.4vw,1.85rem);line-height:1.35}.about-story-copy>p{max-width:49ch;margin:24px 0 0}.about-illustration{pointer-events:none;color:#8a9c80}.illustration-fill{fill:#dfe6d7;fill-opacity:.3}.about-story>.about-illustration{opacity:.45;width:47%;height:330px;position:absolute;top:-65px;right:-1%;transform:rotate(8deg);-webkit-mask-image:radial-gradient(at 55%,#000 20%,#0000 72%);mask-image:radial-gradient(at 55%,#000 20%,#0000 72%)}.about-hobbies{padding-top:12px;position:relative}.about-hobbies-heading{align-items:center;gap:20px;display:flex}.about-hobbies-heading:before{content:"";background:var(--page-accent);border-radius:50%;width:6px;height:6px}.about-hobbies-heading:after{content:"";background:linear-gradient(90deg, var(--color-border), transparent);width:80px;height:1px}.about-hobbies-heading h2{font-family:var(--font-technical);letter-spacing:0;color:var(--color-text-muted);font-size:.8rem;font-weight:400}.about-interests{margin-top:10px;position:relative}.about-thread{fill:none;stroke:#899582;stroke-width:.8px;opacity:.2;pointer-events:none;width:100%;height:100%;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#0000,#000 15% 85%,#0000);mask-image:linear-gradient(#0000,#000 15% 85%,#0000)}.about-hobby{isolation:isolate;align-items:center;min-height:220px;display:flex;position:relative}.about-hobby-copy{z-index:1;width:36%;margin-left:8%;padding-block:28px;position:relative}.about-hobby-copy h3{font-size:1.3rem;position:relative}.about-hobby-copy h3:before{content:"";border:1px solid var(--page-accent);background:var(--color-page);border-radius:50%;width:5px;height:5px;position:absolute;top:.65em;left:-22px}.about-hobby-copy p{margin:16px 0 0;font-size:.9375rem;line-height:1.75}.about-hobby-art{z-index:-1;pointer-events:none;width:49%;height:290px;position:absolute;top:-35px;right:3%}.about-hobby-art:before{content:"";background:radial-gradient(ellipse, var(--hobby-wash,#e0e6da), transparent 67%);opacity:.38;position:absolute;inset:5%}.about-hobby-art>svg{opacity:.4;filter:blur(.3px);width:100%;height:100%;position:relative;-webkit-mask-image:radial-gradient(#000 18%,#0000 73%);mask-image:radial-gradient(#000 18%,#0000 73%)}.hobby-camera .about-hobby-art{right:9%;transform:rotate(-7deg)}.hobby-arts{--hobby-wash:#e9ddd6}.hobby-arts .about-hobby-copy{width:37%;margin-left:55%}.hobby-arts .about-hobby-art{top:-25px;left:0;right:auto;transform:rotate(7deg)}.hobby-travel{--hobby-wash:#dce6eb}.hobby-travel .about-hobby-copy{margin-left:13%}.hobby-travel .about-hobby-art{width:56%;height:330px;top:-55px;right:-2%}.illustration-camera{color:#829b91}.illustration-arts{color:#ad938b}.illustration-arts .illustration-fill{fill:#e9dcd6}.hobby-arts .about-hobby-art{z-index:1}.hobby-arts .about-hobby-art>svg{opacity:1;filter:none;-webkit-mask-image:none;mask-image:none}.illustration-arts>g:not(.guitar){opacity:.4}.guitar{opacity:.65;transition:stroke .25s}.guitar:hover{stroke:#94776b}.guitar-detail{stroke-width:.7px;opacity:.65}.guitar-nut{fill:#f3eee4;stroke-width:.7px}.guitar-tuner{stroke-width:.8px}.guitar-string-lead{stroke:#76594e;stroke-width:.55px}.guitar-soundhole{fill:#ad938b;fill-opacity:.09}.guitar-string{stroke:#76594e;opacity:1}.guitar-strum-area,.guitar>.illustration-fill{pointer-events:all}.illustration-travel{color:#869eaf}.illustration-travel .illustration-fill{fill:#d9e5eb}.hobby-camera .about-hobby-art{z-index:2;transform:none}.photo-camera{width:100%;height:100%;position:relative}.camera-trigger{width:100%;height:100%;color:inherit;cursor:pointer;pointer-events:auto;-webkit-tap-highlight-color:transparent;background:0 0;border:0;padding:0;position:absolute;inset:0}.camera-trigger>svg{opacity:.4;width:100%;height:100%;transition:opacity .45s,transform .45s;transform:rotate(-7deg);-webkit-mask-image:radial-gradient(#000 28%,#0000 78%);mask-image:radial-gradient(#000 28%,#0000 78%)}.camera-trigger:hover>svg,.camera-trigger:focus-visible>svg{opacity:.6;transform:rotate(-5deg)translateY(-2px)}.has-photos .camera-trigger>svg{opacity:.68}.camera-body{transform-origin:97px 100px}.camera-strap{opacity:.45;stroke-width:1px}.camera-aperture{opacity:.25;transform-origin:97px 89px;transition:opacity .35s}.camera-trigger:hover .camera-aperture,.camera-trigger:focus-visible .camera-aperture{opacity:.6}.camera-print-slot{opacity:.7;stroke-width:2.5px}.camera-outlet-edge{opacity:.4;stroke-width:.7px}.camera-shutter{transition:transform .2s}.camera-trigger:active .camera-shutter{transform:translateY(3px)}.has-photos .camera-body{animation:.62s ease-out both camera-recoil}.has-photos .camera-aperture{animation:.62s ease-in-out camera-exposure}.has-photos .camera-shutter{animation:.62s ease-out camera-release}.has-photos .camera-photo-hint{opacity:0}.is-collecting .camera-body{animation:.45s ease-in-out camera-gather}.camera-trigger:focus-visible{outline:1px dashed var(--page-accent);outline-offset:-28px;border-radius:35%}.camera-lens{transform-origin:97px 89px;transition:transform .4s}.camera-photo-hint{transition:transform .3s,opacity .3s}.camera-trigger:hover .camera-lens,.camera-trigger:focus-visible .camera-lens{transform:rotate(12deg)scale(1.035)}.camera-trigger:hover .camera-photo-hint,.camera-trigger:focus-visible .camera-photo-hint{transform:translate(5px,-3px)}.polaroid-stack{pointer-events:none;width:clamp(145px,12vw,190px);position:absolute;top:12%;right:calc(3% - 16px)}.polaroid-position{transition:transform .45s;position:absolute;inset:0 0 auto;transform:rotate(3deg)}.polaroid-position[data-depth="1"]{transform:translate(-13px,-5px)rotate(-5deg)}.polaroid-position[data-depth="2"]{transform:translate(-24px,-9px)rotate(-11deg)}.polaroid{transform-origin:0 0;background:#f3f2eb;border:1px solid #78816c29;margin:0;padding:9px 9px 0;box-shadow:0 9px 22px #2d37370f,0 2px 5px #2d37370a}.polaroid-window{aspect-ratio:1;background:#f7f6f1;overflow:hidden}.polaroid img{object-fit:cover;opacity:0;width:100%;height:100%;display:block}.polaroid img.is-ready{animation:1.8s ease-out both photo-develop}.polaroid figcaption{font:.55rem var(--font-technical);color:#7b8177;letter-spacing:.08em;justify-content:flex-end;gap:5px;padding:10px 2px 12px;display:flex}.polaroid figcaption span{opacity:.45}.is-collecting .polaroid{animation:.45s ease-in both photo-collect}.camera-status{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@keyframes camera-recoil{0%,to{transform:none}18%{transform:translate(-2px,2px)rotate(-2deg)}52%{transform:translate(1px)rotate(.6deg)}}@keyframes camera-exposure{0%,to{transform:none}20%{opacity:.8;transform:rotate(28deg)scale(.45)}65%{transform:rotate(8deg)}}@keyframes camera-release{20%{transform:translateY(3px)}}@keyframes camera-gather{50%{transform:translate(2px,-1px)rotate(1.5deg)}}@keyframes photo-develop{0%,17%{opacity:0;filter:saturate(0)contrast(.3)brightness(1.6)}40%{opacity:.3;filter:saturate(.15)contrast(.55)brightness(1.3)}to{opacity:1;filter:saturate()contrast()brightness()}}@keyframes photo-collect{to{opacity:0;clip-path:inset(0 100% 0 0);transform:translate(-42%,24%)scale(.8)rotate(-12deg)}}@media (width<=760px){.about-view .view-heading{margin-bottom:36px}.about-story-copy{width:66%}.about-story>.about-illustration{width:43%;top:-35px;right:-3%}.about-hobby-copy{width:43%;margin-left:4%}.hobby-arts .about-hobby-copy{width:44%;margin-left:54%}.hobby-travel .about-hobby-copy{margin-left:4%}}@media (width<=560px){.about-story{padding-bottom:105px}.about-story-copy{width:100%}.about-story>.about-illustration{opacity:.38;width:210px;height:160px;top:auto;bottom:-18px;right:-8px}.about-hobbies{padding-top:20px}.about-thread{display:none}.about-hobby{align-items:flex-start;min-height:230px}.about-hobby-copy,.hobby-arts .about-hobby-copy,.hobby-travel .about-hobby-copy{width:85%;margin-left:6%;padding-block:36px 60px}.hobby-arts .about-hobby-copy{margin-left:14%}.about-hobby-copy h3{font-size:1.2rem}.about-hobby-copy p{margin-top:12px}.about-hobby-art,.hobby-camera .about-hobby-art,.hobby-arts .about-hobby-art,.hobby-travel .about-hobby-art{opacity:.58;width:220px;height:160px;inset:auto -10px -22px auto}.hobby-arts .about-hobby-art{left:-20px;right:auto}.hobby-travel .about-hobby-art{width:255px}.hobby-camera{flex-direction:column}.hobby-camera .about-hobby-copy{order:-1;padding-bottom:0}.hobby-camera .about-hobby-art{opacity:1;width:100%;height:auto;min-height:160px;position:relative;bottom:auto;right:auto}.photo-camera{height:160px;transition:height .48s}.photo-camera.has-photos{height:330px}.camera-trigger{width:240px;height:170px;left:calc(50% - 120px)}.polaroid-stack{width:160px;top:125px;right:calc(50% - 117px)}@keyframes photo-collect{to{opacity:0;transform:translateY(-65%)scale(.35)}}}@media (prefers-reduced-motion:reduce){.guitar,.photo-camera,.camera-trigger>svg,.camera-lens,.camera-photo-hint,.camera-aperture,.camera-shutter,.polaroid-position{transition:none}.has-photos .camera-body,.has-photos .camera-aperture,.has-photos .camera-shutter{animation:none}.camera-trigger:hover>svg,.camera-trigger:focus-visible>svg{transform:rotate(-7deg)}.camera-trigger:hover .camera-lens,.camera-trigger:focus-visible .camera-lens,.camera-trigger:hover .camera-photo-hint,.camera-trigger:focus-visible .camera-photo-hint{transform:none}.polaroid,.polaroid img.is-ready{animation:.15s ease-out both photo-fade}.is-collecting .polaroid{animation:.15s ease-out reverse both photo-fade}}@keyframes photo-fade{0%{opacity:0}to{opacity:1}}.shell-main>.not-found{align-items:center;width:100%;min-height:clamp(480px,66svh,760px);padding:8px 0 100px;transition:opacity .2s,transform .2s;display:grid;position:relative}.not-found[data-leaving=true]{opacity:0;transform:translateY(-5px)}.worldline{text-align:left}.worldline-label,.worldline-status,.upa-tooltip,.upa-clink{font-family:var(--font-technical);letter-spacing:.12em;font-size:9px}.worldline-label{color:var(--color-text-muted)}.shell-main .worldline-digits{width:min(100%,570px);max-width:none;color:var(--color-text);align-items:center;gap:clamp(3px,.8vw,9px);margin-block:22px 16px;display:flex}.worldline-digit,.worldline-dot{fill:none;stroke:currentColor;stroke-width:1.25px;stroke-linecap:round;stroke-linejoin:round;min-width:0;height:auto;display:block}.worldline-digit{flex:1;width:32px}.worldline-dot{width:10px;color:var(--color-text-muted);flex:.3125}.worldline-status{min-height:14px;color:var(--color-text-muted);font-size:8px;display:block}.not-found-copy{grid-column:1/-1;align-self:center;margin-block:38px 32px}.shell-main .not-found-copy p{text-wrap:pretty;max-width:31ch;margin-block:28px 24px;font-size:clamp(18px,2vw,22px);line-height:1.5}.shell-main .worldline-return{border-bottom:1px solid var(--color-border);gap:24px;padding-block:8px;font-size:14px}.worldline-return>span{transition:transform .18s}.worldline-return:hover>span{transform:translate(2px,-2px)}.metal-upa{cursor:pointer;background:0 0;border:0;place-items:center;width:64px;height:72px;padding:0;display:grid;position:absolute;bottom:10px;right:16px}.metal-upa>svg{overflow:visible;transform:rotate(9deg)}.upa-tooltip{background:var(--color-page);border:1px solid var(--color-border);width:max-content;color:var(--color-text);opacity:0;pointer-events:none;padding:9px 12px;position:absolute;bottom:calc(100% + 8px);right:0}.upa-tooltip>span{color:var(--color-text-muted);margin-top:5px;font-size:8px;display:block}.metal-upa:is(:hover,:focus-visible) .upa-tooltip{opacity:1}.upa-clink{opacity:0;letter-spacing:0;color:var(--color-text-muted);position:absolute;top:25px;right:60px}.metal-upa[data-nudged=true] .upa-body{transform-origin:48px 80px;animation:.65s both upa-nudge}.metal-upa[data-nudged=true] .upa-clink{animation:.65s both upa-clink}@keyframes upa-nudge{25%{transform:translateY(-9px)rotate(-16deg)}55%{transform:translateY(0)rotate(9deg)}78%{transform:rotate(-4deg)}}@keyframes upa-clink{20%,65%{opacity:1}}@media (width<=560px){.shell-main>.not-found{min-height:65svh;padding-top:0}.not-found-copy{margin-top:44px}.shell-main .worldline-return{gap:16px;font-size:13px}.metal-upa{bottom:0;right:0}}@media (prefers-reduced-motion:reduce){.not-found,.worldline-return>span{transition:none}.metal-upa[data-nudged=true] .upa-body,.metal-upa[data-nudged=true] .upa-clink{animation:none}.metal-upa[data-nudged=true] .upa-clink{opacity:1}}@font-face{font-family:Instrument Sans;src:url(/assets/InstrumentSans-tWV223Ma.woff2)format("woff2-variations");font-style:normal;font-weight:400 700;font-stretch:75% 100%;font-display:swap}@font-face{font-family:Commit Mono;src:url(/assets/CommitMono-DY7mx3wY.woff2)format("woff2");font-style:normal;font-weight:400;font-display:swap}:root{color:#26343a;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;--color-page:#fafaf7;--color-surface:#fcfdfd;--color-surface-secondary:#f4f6f7;--color-text:#26343a;--color-text-muted:#65767d;--color-muted:#859198;--color-nav-text:#26343a;--color-nav-active-text:#fcfdfd;--color-nav-active-bg:#26343a;--color-focus:#176b83;--color-border:#cbd5d9;--color-grid:#4e49400a;--color-grid-major:#4e49400e;--area-accent:#68745a;--page-accent:#68745a;--font-interface:"Instrument Sans", system-ui, sans-serif;--font-technical:"Commit Mono", ui-monospace, monospace;--space-1:8px;--space-2:16px;--space-3:24px;--space-4:32px;--space-6:48px;--space-8:64px;--pixel-1:1px;--pixel-2:2px;--pixel-3:3px;--grid-spacing:48px;--shell-max:1120px;--shell-gutter:clamp(16px, 4vw, 32px);--motion-point:.22s;--motion-line:.75s;--motion-content:.35s;--motion-arrival:calc(var(--motion-point) + var(--motion-line));--motion-reveal:calc(var(--motion-arrival) + var(--motion-point));--ease-connection:cubic-bezier(.22,.61,.36,1);--motion-state:.18s;--motion-ambient:.6s;--ease-out:cubic-bezier(.16, 1, .3, 1);background:#fafaf7;font-family:Instrument Sans,system-ui,sans-serif}*{box-sizing:border-box}html{background:var(--color-page)}body{background-color:var(--color-page);min-height:100vh;margin:0;overflow-y:auto}.interactive-grid{z-index:-1;pointer-events:none;fill:none;width:100%;height:100%;stroke:var(--color-grid);stroke-width:.8px;position:fixed;inset:0;-webkit-mask-image:radial-gradient(calc(min(650px,65vw)/2.08333) calc(min(650px,65vw)/2.63158) at calc(-140px + min(650px,65vw)/2) calc(-70px + min(650px,65vw)/2.5),#0000 12%,#0003 42%,#000 100%),radial-gradient(calc(min(75vw,1000px)/1.66667) calc(min(75vw,1000px)/2) at calc(100% + 100px - min(75vw,1000px)/2.5) calc(100% + 110px - min(75vw,1000px)/2.77778),#0000 22%,#0000002e 48%,#000 100%);mask-image:radial-gradient(calc(min(650px,65vw)/2.08333) calc(min(650px,65vw)/2.63158) at calc(-140px + min(650px,65vw)/2) calc(-70px + min(650px,65vw)/2.5),#0000 12%,#0003 42%,#000 100%),radial-gradient(calc(min(75vw,1000px)/1.66667) calc(min(75vw,1000px)/2) at calc(100% + 100px - min(75vw,1000px)/2.5) calc(100% + 110px - min(75vw,1000px)/2.77778),#0000 22%,#0000002e 48%,#000 100%);-webkit-mask-composite:source-in;mask-composite:intersect}.interactive-grid .grid-major{stroke:var(--color-grid-major)}.organic-landscape{z-index:-1;pointer-events:none;fill:none;stroke:#4e49400d;stroke-width:.85px;stroke-linecap:round;stroke-linejoin:round;width:min(75vw,1000px);height:auto;position:fixed;bottom:-110px;right:-100px;-webkit-mask-image:radial-gradient(at 65% 65%,#000 15%,#000000a6 50%,#0000 75%);mask-image:radial-gradient(at 65% 65%,#000 15%,#000000a6 50%,#0000 75%)}.organic-landscape .organic-branches{stroke:#576f6514}@media (width<=560px){.organic-landscape{width:110vw;bottom:-40px;right:-25vw}}button,a{font:inherit}a{color:var(--color-nav-text)}:focus-visible{outline:var(--pixel-2) solid var(--color-focus);outline-offset:var(--pixel-3)}.app-shell{--ambient-primary:#bdd9f1;--ambient-secondary:#e4eff8;isolation:isolate;width:min(calc(100% - (2 * var(--shell-gutter))), var(--shell-max));flex-direction:column;min-height:100svh;margin-inline:auto;display:flex;position:relative}.app-shell:before,.app-shell:after{z-index:-2;content:"";pointer-events:none;filter:blur(64px);opacity:.3;width:min(72vw,880px);height:min(54vw,620px);transition:background-color var(--motion-ambient) var(--ease-out);position:fixed}.app-shell:before{background-color:var(--ambient-primary);border-radius:43% 57% 68% 32%/52% 42% 58% 48%;top:-22%;left:-16%}.app-shell:after{background-color:var(--ambient-secondary);border-radius:61% 39% 35% 65%/44% 62% 38% 56%;bottom:-28%;right:-22%}.app-shell[data-route=projects]:before,.app-shell[data-route=projects]:after{transition:opacity .8s var(--ease-out), background-color .8s var(--ease-out)}.app-shell[data-route=projects]:before{background-color:var(--project-region-water);filter:blur(18px);opacity:.13;border-radius:44% 56% 69% 31%/53% 41% 59% 47%;width:min(76vw,620px);height:min(64vw,520px);top:-130px;left:-190px;transform:rotate(-12deg)scaleX(1.2)}.app-shell[data-route=projects]:after{background-color:var(--project-region-moss);filter:blur(28px);opacity:.12;width:min(78vw,760px);height:min(62vw,580px);bottom:-150px;right:-220px;transform:rotate(9deg)scaleX(1.12)}.app-shell[data-route=projects]:has(.project-record[data-region=water]:is(:hover,:focus-within)):before{opacity:.18}.app-shell[data-route=projects]:has(.project-record[data-region=moss]:is(:hover,:focus-within)):after{opacity:.18}.app-shell[data-route=projects]:has(.project-record[data-region=water]:is(:hover,:focus-within)):after{opacity:.07}.app-shell[data-route=projects]:has(.project-record[data-region=moss]:is(:hover,:focus-within)):before{opacity:.07}.app-shell[data-route=engineering]{--ambient-primary:#bdd8c7;--ambient-secondary:#d8e7ec}.app-shell:has([data-area=backend-systems]){--area-accent:#68745a}.app-shell:has([data-area=data-persistence]){--area-accent:#667b83}.app-shell:has([data-area=integration-messaging]){--area-accent:#b47755}.app-shell:has([data-area=platform-production]){--area-accent:#557064}.app-shell:has([data-area=developer-tooling]){--area-accent:#786c82}.app-shell[data-route=engineering]:before,.app-shell[data-route=engineering]:after{background-color:var(--area-accent);opacity:.08}body:after{content:"";pointer-events:none;z-index:30;opacity:.018;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath d='M0 0h160v160H0z' filter='url(%23noise)' opacity='.65'/%3E%3C/svg%3E");position:fixed;inset:0}.organic-contours{z-index:-1;fill:none;stroke:#4e49400f;stroke-width:.8px;pointer-events:none;width:min(650px,65vw);position:fixed;top:-70px;left:-140px;-webkit-mask-image:radial-gradient(#000 15%,#0000 70%);mask-image:radial-gradient(#000 15%,#0000 70%)}.app-shell[data-route=projects]{--page-accent:#667b83;--ambient-primary:#c7d2ed;--ambient-secondary:#e3e9ec;--project-region-water:#71848b;--project-region-moss:#76806b}.app-shell[data-route=projects] .organic-contours{stroke:#5e768017}.app-shell[data-route=projects] .organic-landscape{stroke:#62745b1a}.app-shell[data-route=projects] .organic-landscape .organic-branches{stroke:#62745b1f}.app-shell[data-route=projects-detail]{--page-accent:#667b83;--ambient-primary:#b9cbe2;--ambient-secondary:#e3e9ec}.app-shell[data-route=experience]{--page-accent:#b47755;--ambient-primary:#e8dbc2;--ambient-secondary:#f3eee6}.app-shell[data-route=education]{--page-accent:#557064;--ambient-primary:#cbdeda;--ambient-secondary:#e3ece9}.app-shell[data-route=not-found]{--page-accent:#786c82;--ambient-primary:#d8dce8;--ambient-secondary:#e5ddd6}.shell-header{justify-content:space-between;align-items:center;gap:var(--space-2) var(--space-4);padding-block:var(--space-3);border-bottom:var(--pixel-1) solid var(--color-border);flex-wrap:wrap;display:flex}.shell-brand,.shell-nav-link,.shell-main a{outline:var(--pixel-2) solid transparent;outline-offset:0;min-height:40px;transition:color var(--motion-state) var(--ease-out), background-color var(--motion-state) var(--ease-out), outline-color var(--motion-state) var(--ease-out), outline-offset var(--motion-state) var(--ease-out);align-items:center;text-decoration:none;display:inline-flex}.shell-brand:focus-visible,.shell-nav-link:focus-visible,.shell-main a:focus-visible{outline-color:var(--color-focus);outline-offset:var(--pixel-3)}.shell-brand{letter-spacing:-.02em;font-weight:650}.shell-nav{gap:var(--space-1);flex-wrap:wrap;display:flex;position:relative;overflow:visible}.shell-nav:after{width:var(--nav-indicator-width,0px);height:var(--pixel-1);background:var(--page-accent);content:"";opacity:0;pointer-events:none;transform:translate3d(var(--nav-indicator-x,0px), var(--nav-indicator-y,0px), 0);transition:transform .26s var(--ease-out), width .26s var(--ease-out), opacity var(--motion-state) var(--ease-out);position:absolute;top:0;left:0}.shell-nav[data-indicator=ready]:after{opacity:1}.locale-switcher{font-family:var(--font-technical);font-size:.75rem;display:flex;position:relative}.locale-switcher-trigger{min-height:40px;color:var(--color-nav-text);font:inherit;cursor:pointer;transition:color var(--motion-state) var(--ease-out), background-color var(--motion-state) var(--ease-out), border-color var(--motion-state) var(--ease-out);background:0 0;border:1px solid #0000;align-items:center;gap:8px;padding:0 8px;display:inline-flex}.locale-switcher-trigger:hover,.locale-switcher-trigger[aria-expanded=true]{background:var(--color-surface)}.locale-switcher-chevron{width:6px;height:6px;transition:transform var(--motion-state) var(--ease-out);border-block-end:1px solid;border-inline-end:1px solid;transform:rotate(45deg)translate(-1px,-1px)}.locale-switcher-trigger[aria-expanded=true] .locale-switcher-chevron{transform:rotate(225deg)translate(-1px,-1px)}.locale-menu{z-index:2;border:1px solid var(--color-border);background:var(--color-surface);gap:2px;min-width:64px;padding:4px;display:grid;position:absolute;top:calc(100% + 4px);right:0}.locale-menu a{min-height:36px;color:var(--color-nav-text);align-items:center;padding:8px;text-decoration:none;display:flex}.locale-menu a:hover,.locale-menu a[aria-current=page]{background:var(--color-surface-secondary)}.shell-nav-link{color:var(--color-nav-text);font-family:var(--font-technical);padding-inline:10px;font-size:.8125rem;line-height:1}.shell-nav-link:hover{background:var(--color-surface)}.shell-nav-link[aria-current=page]{color:var(--color-text);background:0 0}.shell-main{min-height:55svh;padding-block:clamp(32px,5vw,64px) 48px}.site-footer{margin-top:auto}.shell-main h1{max-width:12ch;color:var(--color-text);letter-spacing:-.04em;text-wrap:balance;margin:0;font-size:clamp(3rem,10vw,6rem);font-weight:560;line-height:.94}.shell-main p{max-width:70ch;color:var(--color-text-muted);line-height:1.6}.shell-main a:hover{color:var(--color-focus)}.shell-main>section{width:fit-content;max-width:100%;padding:var(--space-4) 0;background:0 0}svg[data-sharp],canvas[data-sharp]{image-rendering:pixelated;shape-rendering:crispedges}@media (width<=560px){.shell-header{align-items:flex-start}.shell-nav{width:100%}.shell-nav-link{padding-inline:var(--space-1)}}@media (prefers-reduced-motion:reduce){.app-shell:before,.app-shell:after,.shell-brand,.shell-nav:after,.shell-nav-link,.shell-main a{transition:none}}@media (width<=560px){.interactive-grid{-webkit-mask-image:radial-gradient(40vw 32vw at calc(32.5vw - 140px) calc(26vw - 70px),#0000 12%,#000 100%),radial-gradient(66vw 55vw at 81vw calc(100% + 40px - 39.6vw),#0000 22%,#0000002e 48%,#000 100%);mask-image:radial-gradient(40vw 32vw at calc(32.5vw - 140px) calc(26vw - 70px),#0000 12%,#000 100%),radial-gradient(66vw 55vw at 81vw calc(100% + 40px - 39.6vw),#0000 22%,#0000002e 48%,#000 100%)}}.portfolio-view,.home-intro,.home-link-copy{min-width:0}.portfolio-view p,.portfolio-view dd{overflow-wrap:anywhere}.shell-main .primary-action,.primary-action{border:1px solid var(--color-text);background:var(--color-text);min-height:44px;color:var(--color-page);font:inherit;cursor:pointer;border-radius:3px;justify-content:center;align-items:center;gap:16px;padding:10px 20px;text-decoration:none;display:inline-flex}.shell-main .primary-action:hover,.primary-action:hover{background:var(--color-focus);border-color:var(--color-focus);color:var(--color-page)}.text-action{border-bottom:1px solid var(--color-border);align-items:center;gap:8px;min-height:44px;text-decoration:none;display:inline-flex}.hero-actions,.resume-actions{flex-wrap:wrap;align-items:center;gap:12px 32px;margin-top:32px;display:flex}.scroll-next-action{min-height:44px;color:var(--color-text-muted);border-bottom:1px solid var(--color-border);align-items:center;gap:8px;text-decoration:none;display:inline-flex}.scroll-next-action:hover{color:var(--color-text);border-bottom-color:var(--color-text)}.app-shell[data-route=home]{flex-direction:column;display:flex}.app-shell[data-route=home] .shell-main{flex:1;align-items:center;min-height:0;padding-block:64px;display:flex}.home-intro{max-width:760px}.case-facts{border-left:2px solid var(--color-border);background:#fafaf7a6;gap:16px;margin:20px 0;padding:16px 20px;display:grid}.case-facts dt,.profile-facts dt{margin-bottom:6px;font-size:.875rem;font-weight:600}.case-facts dd,.profile-facts dd{color:var(--color-text-muted);margin:0;font-size:.9375rem;line-height:1.6}.experience-context{margin-bottom:24px}.experience-context p{margin-block:8px;font-size:.875rem}.record-summary p:first-child{margin-top:0}.workstreams article{scroll-margin-top:24px}.workstreams p{font-size:1rem}.projects-in-progress{border-top:1px solid var(--color-border);margin-top:24px;padding-top:32px}.projects-in-progress>div{grid-template-columns:repeat(2,minmax(0,1fr));gap:32px;display:grid}.projects-in-progress h2{font-size:1.4rem}.projects-in-progress article{padding:16px 0;scroll-margin-top:24px}.projects-in-progress p{font-size:.9375rem}.education-compact{padding-block:28px}.education-compact>div{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;display:grid}.education-compact .education-record{padding:0 0 0 16px}.education-compact .education-record:before{top:8px}.education-compact .education-record h3{font-size:1rem}.education-compact .education-record p{font-size:.875rem}.education-compact .technology-list,.education-compact .credential-note{margin-top:8px}.contact-links{flex-wrap:wrap;align-items:center;gap:12px 28px;line-height:1.6;display:flex}.contact-links a{text-underline-offset:5px;overflow-wrap:anywhere;align-items:center;min-height:44px;display:inline-flex}.contact-links span{color:var(--color-text-muted);overflow-wrap:anywhere}.profile-facts{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin:24px 0;display:grid}.menu-toggle{display:none}.project-page .back-projects{margin-bottom:28px}.project-page .project-lead{max-width:65ch;font-size:1.15rem}.project-overview{grid-template-columns:1fr 1fr;margin-block:28px}.project-demonstration h2,.project-diagram h2{margin-bottom:20px;font-size:1.3rem}.project-demonstration img{border:1px solid var(--color-border);width:100%;height:auto;display:block}.media-placeholder{text-align:center;border:1px dashed var(--color-border);background:#fafaf7a6;place-content:center;min-height:200px;padding:32px;display:grid}.media-placeholder>span{color:var(--color-text-muted);font-size:2rem}.media-placeholder p{max-width:52ch}.project-diagram{margin-block:32px}.project-map{grid-template-columns:repeat(3,minmax(0,1fr));gap:32px;padding:0;list-style:none;display:grid}.project-map li{border:1px solid var(--color-border);flex-direction:column;gap:12px;padding:16px;line-height:1.5;display:flex;position:relative}.map-arrow{color:var(--color-text-muted);position:absolute;top:40%;right:-25px}.project-section{border-top:1px solid var(--color-border);grid-template-columns:minmax(140px,1fr) minmax(0,3fr);gap:40px;padding-block:28px;display:grid}.project-section h2{font-size:1.15rem;line-height:1.5}.project-section p:first-child{margin-top:0}.project-section p:last-child{margin-bottom:0}.project-end-actions{flex-wrap:wrap;justify-content:space-between;gap:20px;margin-top:24px;display:flex}.resume-view{max-width:900px;margin-inline:auto}.resume-actions{margin:0 0 32px}.resume-view .view-heading h1{font-size:clamp(2rem,5vw,3.5rem);line-height:1.1}.resume-section{border-top:1px solid var(--color-border);padding-block:24px}.resume-section h2{font-size:1.5rem}.resume-record{margin-top:24px}.shell-main .resume-record>a{overflow-wrap:anywhere;max-width:100%;line-height:1.6;display:block}.resume-record ul{padding-left:20px;line-height:1.6}.resume-record li+li{margin-top:12px}.resume-record li p{margin-block:4px}.resume-education{margin-top:20px}.resume-education p{margin-block:6px}@media (width<=1000px){.shell-header{gap:12px 16px}.shell-nav{gap:0}.shell-nav-link{padding-inline:7px}}@media (width<=760px){.shell-header{grid-template-columns:1fr auto auto;align-items:center;padding-block:16px;display:grid}.shell-brand{grid-column:1}.locale-switcher{grid-area:1/2}.locale-switcher a{align-items:center;min-height:44px;padding-inline:4px;display:inline-flex}.menu-toggle{border:1px solid var(--color-border);min-width:60px;min-height:44px;color:var(--color-text);font:inherit;cursor:pointer;background:0 0;border-radius:3px;grid-area:1/3;padding:0 10px;font-size:.875rem;display:block}.menu-toggle>span{font-size:1.4rem}.shell-nav{grid-column:1/-1;width:100%;display:none}.shell-nav[data-open=true]{grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 12px;display:grid}.shell-nav-link{min-height:44px;padding:10px 8px}.shell-main .home-view h1{letter-spacing:-.04em;overflow-wrap:normal;max-width:100%;font-size:clamp(2.15rem,8vw,3.5rem)}.app-shell[data-route=home] .shell-main{padding-block:48px}.profile-facts{grid-template-columns:1fr;gap:16px}.education-compact>div,.projects-in-progress>div{grid-template-columns:1fr;gap:20px}.project-overview{grid-template-columns:1fr}.project-section{grid-template-columns:1fr;gap:16px}.project-map{grid-template-columns:1fr;gap:24px}.project-map li{flex-direction:row}.map-arrow{top:auto;bottom:-25px;right:50%;transform:rotate(90deg)}.area-selector button{min-width:0}.area-selector button>span:nth-child(2){overflow-wrap:anywhere}.case-facts{padding:12px}.workstreams article{gap:8px;padding-left:8px}.contact-links{flex-direction:column;align-items:flex-start;gap:8px}}@media print{@page{size:A4;margin:15mm}:root,body{color:#222;background:#fff}body:after,.app-shell:before,.app-shell:after,.interactive-grid,.organic-landscape,.organic-contours,.shell-header,.site-footer,.resume-actions{display:none!important}.app-shell{width:100%;min-height:0;margin:0}.shell-main{min-height:0;padding:0}.resume-view{max-width:none;font-size:10pt}.resume-view .view-heading{margin-bottom:16px}.resume-view .view-heading h1{font-size:26pt}.resume-view p,.resume-view dd{color:#333}.resume-view .profile-facts{grid-template-columns:1fr 1fr}.resume-view .contact-links{flex-direction:row;gap:8px 16px;font-size:9pt}.resume-view .contact-links a{min-height:0}.resume-section{padding-block:16px}.resume-section h2{font-size:16pt}.resume-view h2,.resume-view h3{break-after:avoid}.resume-view li,.resume-education{break-inside:avoid}.resume-view a{color:#222;text-decoration:none}}
