*,*:before,*:after{box-sizing:border-box}:root{--bg: #201f1d;--ivory: #ece7db;--muted: #a49d8f;--faint: #7d766a;--sage: #9db08c;--line: rgba(236, 231, 219, .12);--spider-red: #8f2f26;--intro-w: clamp(180px, 52vw, 224px)}html{background:var(--bg);scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ivory);font-family:Fragment Mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:16px;line-height:1.7;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}::selection{background:var(--sage);color:var(--bg)}:focus-visible{outline:1px solid var(--sage);outline-offset:3px;border-radius:2px}.app-shell{position:relative;min-height:100dvh}.site-nav{position:fixed;top:0;left:0;right:0;z-index:30;display:flex;align-items:center;justify-content:space-between;padding:20px clamp(20px,6vw,72px);pointer-events:none}.site-nav>*{pointer-events:auto}.monogram-btn{background:none;border:0;padding:6px;cursor:pointer;color:var(--ivory);line-height:0;transition:color .2s ease}.monogram-btn:hover{color:var(--sage)}.monogram-svg{display:block;overflow:visible}.nav-web{opacity:0;transition:opacity .3s ease}.nav-web.on{opacity:1}.nav-web.settle{opacity:0;transition:opacity .6s ease}.nav-pendulum{animation:nav-swing .95s cubic-bezier(.35,.6,.35,1) both;transform-origin:0 0}.nav-pendulum.settle{opacity:0;transition:opacity .6s ease}@keyframes nav-swing{0%{transform:rotate(-40deg)}60%{transform:rotate(22deg)}to{transform:rotate(10deg)}}.nav-links{display:flex;gap:clamp(14px,3vw,28px);list-style:none;margin:0;padding:0}.nav-link{color:var(--faint);text-decoration:none;font-size:.8125rem;letter-spacing:.08em;transition:color .2s ease}.nav-link:hover,.nav-link.active{color:var(--ivory)}.ocean-canvas{position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;font-family:Fragment Mono,ui-monospace,monospace}.view{position:relative;z-index:10}.home-view{min-height:100dvh}.home-block{position:relative;z-index:5;max-width:760px;padding:48vh 24px 10vh clamp(24px,9vw,120px)}.home-greeting{color:var(--faint);font-size:.875rem;margin:0 0 20px}.home-heading{font-size:1.5rem;font-weight:400;letter-spacing:.01em;margin:0 0 14px;color:var(--ivory)}.home-intro{color:var(--muted);font-size:1rem;max-width:30rem;margin:0 0 30px}.home-links{list-style:none;display:flex;flex-wrap:wrap;gap:8px 24px;margin:0;padding:0}.quiet-link{color:var(--muted);text-decoration:none;font-size:.875rem;border-bottom:1px solid transparent;transition:color .2s ease,border-color .2s ease}.quiet-link:hover{color:var(--ivory);border-color:var(--sage)}.timeline{position:relative;padding-left:30px;margin-bottom:56px}.timeline-line{position:absolute;left:3px;top:6px;bottom:30px;width:1px;background:var(--line);transform-origin:top}.tl-entry{position:relative;padding-bottom:46px}.tl-marker{position:absolute;left:-30.5px;top:7px;width:7px;height:7px;border:1px solid var(--sage);border-radius:50%;background:var(--bg)}.tl-dates{color:var(--faint);font-size:.75rem;letter-spacing:.06em;margin:0 0 6px}.tl-org{color:var(--sage);font-size:.9375rem;margin:0 0 2px}.tl-role{color:var(--ivory);font-size:.9375rem;margin:0 0 2px}.tl-context{color:var(--faint);font-size:.8125rem;margin:0 0 10px}.tl-contribution{color:var(--muted);font-size:.875rem;margin:0 0 14px;max-width:32rem}.tl-motif{display:block;font-family:Fragment Mono,ui-monospace,monospace}.exp-section h3{font-size:.8125rem;font-weight:400;letter-spacing:.14em;text-transform:uppercase;color:var(--faint);margin:0 0 12px}.milestones{list-style:none;margin:0;padding:0}.milestones li{display:flex;align-items:baseline;gap:18px;padding:13px 0;border-top:1px solid var(--line)}.milestone-result{color:var(--sage);font-size:1rem;min-width:9.5rem}.milestone-event{color:var(--faint);font-size:.8125rem}.page-view{max-width:52rem;margin:0 auto;padding:128px 24px 96px}.page-head h2{font-size:1.25rem;font-weight:400;margin:0 0 6px;color:var(--ivory)}.page-head p{color:var(--faint);font-size:.875rem;margin:0 0 44px}@media(max-width:760px){.home-block{padding:44vh 24px 18vh}.page-view{padding:110px 20px 80px}.milestone-result{min-width:0}}@media(max-width:640px){:root{--intro-w: clamp(150px, 48vw, 190px)}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.intro-overlay,.intro-kn path,.intro-web,.intro-pendulum,.nav-pendulum,.nav-web{animation:none!important;transition:none!important}.intro-kn path{stroke-dashoffset:0}.intro-web,.nav-web{opacity:.6}}.monogram-btn{width:58px;height:52px;padding:0}.web-mark{display:block;width:100%;height:100%;overflow:visible}.mark-strands{pointer-events:none}.intro-overlay{position:fixed;inset:0;z-index:60;background:var(--bg);pointer-events:none;animation:intro-out .3s ease 1.15s forwards}.intro-stage{height:100dvh;display:grid;place-items:center}.intro-mark{width:clamp(190px,27vw,250px);color:var(--ivory)}.intro-kn .mark-letters path{stroke-dasharray:1;stroke-dashoffset:1;animation:mark-draw .44s ease-out forwards}.intro-kn .mark-letters path:nth-child(2){animation-delay:.05s}.intro-kn .mark-letters path:nth-child(3){animation-delay:.1s}.intro-kn .mark-letters path:nth-child(4){animation-delay:.15s}@keyframes intro-out{to{opacity:0}}@keyframes mark-draw{to{stroke-dashoffset:0}}.work-gallery{max-width:960px;padding:112px 32px 52px;margin:0 auto}.gallery-heading{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:29px}.gallery-heading h2{font-size:14px;font-weight:400;margin:0}.gallery-heading>span{font-size:10px;letter-spacing:.12em;color:var(--faint)}.gallery-tabs{display:flex;justify-content:space-between;gap:14px;border-bottom:1px solid var(--line)}.gallery-tab{position:relative;background:none;border:0;padding:0 0 16px;color:var(--faint);font:inherit;font-size:12px;text-align:left;cursor:pointer;transition:color .2s}.gallery-tab:hover,.gallery-tab.active{color:var(--ivory)}.gallery-tab:after{content:"";position:absolute;bottom:-1px;left:0;height:1px;width:0;background:var(--sage);transition:width .3s}.gallery-tab.active:after{width:100%}.project-number{display:block;font-size:9px;color:var(--faint);letter-spacing:.1em;margin-bottom:5px}.gallery-tab.active .project-number{color:var(--sage)}.artwork-stage{position:relative;height:clamp(250px,41vh,410px);margin:8px 0 12px}.ribbon-art{width:100%;height:100%;overflow:visible}.artwork-index{position:absolute;bottom:14px;right:0;color:var(--faint);opacity:.7;font-size:9px;letter-spacing:.12em}.gallery-info{max-width:610px;margin:0 auto;min-height:164px}.project-heading{display:flex;align-items:baseline;gap:20px;justify-content:space-between}.project-heading h3{font-size:18px;font-weight:400;letter-spacing:-.035em;margin:0 0 8px}.project-heading>span{color:var(--faint);font-size:10px;white-space:nowrap}.gallery-summary{color:var(--muted);font-size:13px;line-height:1.85;max-width:540px;margin:0 0 13px}.gallery-tech{color:var(--faint);font-size:10px;line-height:1.9;margin:0 0 14px}.gallery-links{display:flex;gap:22px;flex-wrap:wrap}.gallery-links .quiet-link{font-size:11px;color:var(--sage)}.gallery-links a span{display:inline-block;margin-left:4px;transition:transform .2s}.gallery-links a:hover span{transform:translate(2px,-2px)}@media(max-width:640px){.site-nav{padding:16px 20px}.work-gallery{padding:108px 24px 44px}.gallery-heading{margin-bottom:24px}.gallery-tabs{justify-content:flex-start;flex-wrap:wrap;gap:14px 20px;padding-bottom:9px}.gallery-tab{padding-bottom:9px;font-size:11px}.project-number{display:none}.artwork-stage{height:255px;margin:15px -10px 18px}.artwork-index{right:10px;bottom:0}.project-heading h3{font-size:17px}.gallery-summary{font-size:12px}.gallery-info{min-height:190px}.milestones li{flex-wrap:wrap;gap:2px 14px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:0s!important}.intro-overlay{display:none}}.nav-links{gap:clamp(23px,3.5vw,44px)}.signature-button{width:86px;height:48px;color:var(--ivory)}.signature-svg{display:block;width:100%;height:100%;overflow:visible}.signature-button .signature-svg{transition:transform .45s cubic-bezier(.22,1,.36,1)}.signature-button:hover .signature-svg{transform:rotate(-4deg) translateY(-1px)}.signature-button:hover path,.signature-button:focus-visible path{animation:sign-retrace .65s ease both}@keyframes sign-retrace{0%{stroke-dasharray:1;stroke-dashoffset:1}to{stroke-dasharray:1;stroke-dashoffset:0}}.signature-intro{position:fixed;inset:0;z-index:60;display:grid;place-items:center;pointer-events:none}.signature-backdrop{position:absolute;inset:0;background:var(--bg)}.signature-intro-mark{position:relative;width:clamp(230px,32vw,360px);aspect-ratio:410 / 160;transform-origin:center;color:var(--ivory);will-change:transform}.signature-traced path{stroke-dasharray:1;stroke-dashoffset:1;animation:signature-write .72s cubic-bezier(.35,.1,.4,1) .06s forwards}@keyframes signature-write{to{stroke-dashoffset:0}}.experience-gallery{max-width:960px;margin:0 auto;padding:112px 32px 60px}.career-layout{display:grid;grid-template-columns:36% 1fr;gap:64px;align-items:center;margin:8px 0 36px}.career-art{align-self:stretch;display:grid;place-items:center}.career-field{width:100%;max-height:390px;overflow:visible}.career-contours{transform-origin:160px 210px;animation:contour-breathe 15s ease-in-out infinite alternate}@keyframes contour-breathe{0%{transform:rotate(-5deg) scale(.97)}to{transform:rotate(5deg) scale(1.015)}}.career-focus{transition:transform 1s cubic-bezier(.22,1,.36,1)}.career-focus-1 .career-focus{transform:translateY(142px)}.career-ripple{transform-box:fill-box;transform-origin:center;animation:career-ripple 4s ease-out infinite}@keyframes career-ripple{0%{transform:scale(.55);opacity:.7}to{transform:scale(1.8);opacity:0}}.career-entries{align-self:center}.career-entry{padding:28px 0;border-bottom:1px solid var(--line);outline-offset:8px}.career-entry:first-child{padding-top:14px}.career-entry:last-child{border:0}.career-date{display:flex;align-items:center;gap:12px;font-size:10px;letter-spacing:.02em;color:var(--faint);margin-bottom:12px}.career-index{font-size:9px;margin-right:7px}.career-now{margin-left:auto;color:var(--sage);font-size:9px}.career-now:before{content:"";display:inline-block;width:4px;height:4px;margin-right:6px;background:var(--sage);border-radius:50%;vertical-align:middle}.career-entry h3{font-size:19px;line-height:1.5;font-weight:400;letter-spacing:-.04em;color:var(--muted);margin:0 0 6px;transition:color .3s}.career-entry.current-focus h3{color:var(--ivory)}.career-title{font-size:11px;color:var(--sage);margin:0 0 14px}.career-note{font-size:12px;line-height:1.9;color:var(--muted);max-width:370px;margin:0}.honours{padding-top:22px;border-top:1px solid var(--line)}.honours-label{font-size:10px;color:var(--faint);margin-bottom:25px}.honours ul{list-style:none;display:grid;grid-template-columns:repeat(4,1fr);gap:26px;margin:0;padding:0}.honours li{display:flex;flex-direction:column;gap:9px}.honour-result{font-size:13px;color:var(--sage);white-space:nowrap}.honour-event{font-size:10px;line-height:1.8;color:var(--faint);max-width:150px}@media(max-width:700px){.signature-button{width:68px;height:40px}.nav-links{gap:22px}.nav-link{font-size:11px;letter-spacing:.04em}.experience-gallery{padding:108px 24px 48px}.career-layout{grid-template-columns:1fr;gap:0;margin-bottom:28px}.career-art{height:195px;margin:-10px 0 12px}.career-field{height:240px;width:190px}.career-entry{padding:24px 0}.career-note{max-width:100%}.career-entry h3{font-size:18px}.honours ul{grid-template-columns:repeat(2,1fr);gap:24px 20px}.honour-result{font-size:12px}}@media(prefers-reduced-motion:reduce){.signature-intro{display:none}.signature-traced path,.signature-button path,.career-contours,.career-ripple{animation:none!important;stroke-dashoffset:0}.career-focus{transition:none}}@media(max-width:700px){.career-field{height:190px;max-height:190px;width:165px}.career-art{margin-bottom:18px}}.home-block{max-width:820px;padding-top:clamp(270px,43vh,510px);padding-bottom:9vh}.home-greeting{white-space:pre-line;font-size:13px;line-height:1.9;letter-spacing:.015em;margin-bottom:31px}.home-heading{display:flex;align-items:baseline;flex-wrap:wrap;gap:0 12px;font-size:24px;line-height:1.5;letter-spacing:-.045em;margin-bottom:19px}.home-salutation{font-family:Georgia,Times New Roman,serif;font-style:italic;font-size:32px;font-weight:400;letter-spacing:-.04em;color:#d7dece}.home-intro{max-width:35rem;font-size:14px;line-height:1.95;margin-bottom:28px}.home-intro p{margin:0}.home-company{white-space:nowrap}.product-mention{position:relative;display:inline-block}.bio-product{color:var(--ivory);text-decoration:none;border-bottom:1px solid rgba(236,231,219,.38);padding-bottom:2px;transition:color .2s,border-color .2s}.bio-product:hover,.bio-product:focus-visible{color:var(--sage);border-color:var(--sage)}.product-preview{position:absolute;bottom:calc(100% + 13px);left:-14px;width:245px;padding:14px 16px;background:#2c2b27;border:1px solid rgba(236,231,219,.11);border-radius:6px;display:grid;gap:4px;font-size:11px;line-height:1.7;color:var(--muted);opacity:0;visibility:hidden;transform:translateY(5px);transition:opacity .2s,transform .2s,visibility .2s;pointer-events:none;z-index:35;box-shadow:0 8px 24px #0002}.product-preview strong{color:var(--ivory);font-size:12px;font-weight:400}.product-preview-url{display:flex;justify-content:space-between;padding-top:9px;margin-top:5px;border-top:1px solid var(--line);font-size:9px;color:var(--faint)}.product-mention:hover .product-preview,.product-mention:focus-within .product-preview{opacity:1;visibility:visible;transform:none}@media(max-width:700px){.home-block{padding:40vh 24px 10vh}.home-greeting{font-size:12px;margin-bottom:25px}.home-heading{font-size:21px;gap:0 10px;margin-bottom:18px}.home-salutation{font-size:29px}.home-intro{font-size:13px;line-height:1.95}.home-intro p+p{margin-top:5px}.product-preview{left:-65px;width:235px}}@media(hover:none){.product-preview{display:none}}@media(min-width:900px){.site-nav{padding:22px clamp(22px,6.6vw,79px)}.signature-button{width:95px;height:53px}.nav-links{gap:clamp(25px,3.85vw,48px)}.nav-link{font-size:14.3px}.home-block{max-width:902px;padding-left:clamp(27px,9.9vw,132px);padding-top:min(43vh,calc(100svh - 380px));padding-bottom:8vh}.home-greeting{font-size:14.3px;margin-bottom:34px}.home-heading{font-size:26.4px;gap:0 13px;margin-bottom:21px}.home-salutation{font-size:35.2px}.home-intro{font-size:15.4px;max-width:616px;margin-bottom:31px}.home-links{gap:9px 26px}.home-links .quiet-link{font-size:15.4px}.work-gallery,.experience-gallery{width:100%;max-width:1056px;height:100svh;min-height:0;padding:clamp(88px,12vh,123px) 35px 28px;display:flex;flex-direction:column}.gallery-heading{flex:none;margin-bottom:22px}.gallery-heading h2{font-size:15.4px}.gallery-heading>span{font-size:11px}.gallery-tabs{flex:none}.gallery-tab{font-size:13.2px;padding-bottom:14px}.project-number{font-size:10px}.artwork-stage{flex:1;height:auto;min-height:0;margin:8px 0 12px}.artwork-index{font-size:10px}.gallery-info{flex:none;min-height:0;width:100%;max-width:671px}.project-heading h3{font-size:19.8px}.project-heading>span{font-size:11px}.gallery-summary{font-size:14.3px;max-width:594px;margin-bottom:12px}.gallery-tech{font-size:11px;margin-bottom:12px}.gallery-links .quiet-link{font-size:12.1px}.career-layout{flex:1;min-height:0;gap:70px;margin:4px 0 24px}.career-art{min-height:0}.career-field{height:100%;max-height:390px}.career-entry{padding:20px 0}.career-date{font-size:11px}.career-entry h3{font-size:20.9px}.career-title{font-size:12.1px;margin-bottom:12px}.career-note{font-size:13.2px;max-width:407px;line-height:1.8}.honours{flex:none;padding-top:20px}.honours-label{font-size:11px;margin-bottom:20px}.honour-result{font-size:14.3px}.honour-event{font-size:11px;max-width:165px}}@media(min-width:900px)and (max-height:700px){.work-gallery,.experience-gallery{padding-top:88px;padding-bottom:20px}.gallery-heading{margin-bottom:15px}.gallery-tab{padding-bottom:10px}.gallery-summary{line-height:1.65;margin-bottom:8px}.gallery-tech{margin-bottom:8px}.career-entry{padding:12px 0}.career-date,.career-title{margin-bottom:7px}.career-layout{margin-bottom:15px}.honours-label{margin-bottom:12px}.honours{padding-top:12px}.home-greeting{margin-bottom:25px}.home-intro{margin-bottom:24px}}.quote-cursor{display:inline-block;width:.56em;height:.95em;margin-left:.17em;vertical-align:-.1em;background:var(--sage);opacity:.7;animation:quote-blink 1.2s steps(1,end) infinite}@keyframes quote-blink{0%,49%{opacity:.7}50%,to{opacity:0}}@media(prefers-reduced-motion:reduce){.quote-cursor{animation:none;opacity:.55}}
