@import"https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Manrope:wght@400;500;600;700;800&display=swap";:root{color-scheme:dark;--bg:#081018;--surface:#0d1923;--surface-2:#112330;--text:#e9f3f5;--muted:#98aeb7;--faint:#607984;--line:#203743;--accent:#57d8f0;--accent-2:#a0f0fc;--max:1240px;--serif:Georgia,"Times New Roman",serif}:root[data-theme=light]{color-scheme:light;--bg:#f3f1eb;--surface:#ebe8df;--surface-2:#fffdf8;--text:#14242a;--muted:#5c6c70;--faint:#899596;--line:#d1d7d2;--accent:#0b8da5;--accent-2:#06687a}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font-family:Manrope,sans-serif;line-height:1.6}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit}.skip-link{position:absolute;left:-999px}.skip-link:focus{left:1rem;top:1rem;background:var(--accent);color:#041015;padding:.7rem 1rem;z-index:9}.section-wrap{width:min(var(--max),calc(100% - 7rem));margin-inline:auto}.site-header{height:88px;width:min(var(--max),calc(100% - 7rem));margin:auto;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:2rem}.brand{display:flex;align-items:center;gap:.7rem}.brand span{display:grid;place-items:center;width:38px;height:38px;border:1px solid var(--accent);border-radius:11px;font:500 .75rem DM Mono;color:var(--accent)}.brand strong{font-size:.83rem;letter-spacing:-.02em}nav{display:flex;gap:2rem;font-size:.75rem;color:var(--muted)}nav a:hover,.text-link:hover,.back-link:hover,.contact-email:hover{color:var(--accent)}.header-actions{display:flex;align-items:center;gap:1.3rem}.availability,.eyebrow{font:500 .66rem DM Mono,monospace;letter-spacing:.13em;text-transform:uppercase;color:var(--muted)}.availability i{display:inline-block;width:7px;height:7px;background:#5de29a;border-radius:50%;margin-right:.45rem;box-shadow:0 0 0 4px #5de29a1a}.theme-toggle{border:1px solid var(--line);background:transparent;border-radius:99px;padding:.45rem .7rem;display:flex;gap:.45rem;align-items:center;cursor:pointer;font-size:.7rem}.theme-toggle span{color:var(--accent);font-size:1rem}.hero{min-height:650px;display:grid;grid-template-columns:1.05fr .95fr;gap:5rem;align-items:center;padding-block:5rem 5.5rem}.hero h1,.detail-hero h1{font-size:clamp(3rem,6.4vw,6.5rem);line-height:.99;letter-spacing:-.075em;margin:1.2rem 0 1.8rem;max-width:780px}.hero h1 em,.section-heading h2 em,.contact h2 em{font-family:var(--serif);font-weight:400;color:var(--accent)}.lede{font-size:1.04rem;line-height:1.75;color:var(--muted);max-width:590px}.hero-actions{display:flex;align-items:center;gap:1.25rem;margin-top:2.3rem}.button{padding:.9rem 1.15rem;border-radius:3px;font-size:.8rem;font-weight:700}.button-primary{background:var(--accent);color:#061119}.button-primary:hover{background:var(--accent-2)}.button-quiet{border-bottom:1px solid var(--line)}.button-quiet:hover{border-color:var(--accent);color:var(--accent)}.constellation-wrap{height:470px;position:relative;border:1px solid var(--line);background:radial-gradient(circle at 55% 45%,rgba(25,74,91,.22),transparent 55%),var(--surface);overflow:hidden}.constellation-wrap:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:52px 52px;opacity:.18}.constellation-wrap canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.constellation-label,.constellation-foot{position:absolute;left:1.2rem;right:1.2rem;font:500 .62rem DM Mono;letter-spacing:.1em;color:var(--faint)}.constellation-label{top:1rem;display:flex;justify-content:space-between}.constellation-label span{color:var(--accent)}.constellation-foot{bottom:1rem;display:flex;justify-content:space-between}.canvas-fallback{padding:2rem;color:var(--accent)}.credibility{border-top:1px solid var(--line);border-bottom:1px solid var(--line);display:grid;grid-template-columns:repeat(4,1fr);padding-block:1.5rem;gap:1rem}.credibility div{display:flex;flex-direction:column;gap:.15rem}.credibility strong{font-size:1.1rem;letter-spacing:-.04em}.credibility span{font:500 .62rem DM Mono;color:var(--muted);text-transform:uppercase}.section{padding-block:8rem}.section-heading{margin-bottom:3.3rem}.section-heading h2,.contact h2{font-size:clamp(2rem,4vw,4.1rem);line-height:1.06;letter-spacing:-.07em;margin:.85rem 0 0;max-width:690px}.split{display:flex;align-items:end;justify-content:space-between}.text-link{font-size:.75rem;border-bottom:1px solid var(--line);padding-bottom:.25rem}.service-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem}.service-grid>div,.toolkit-grid>div{border-top:1px solid var(--line);padding-top:1.1rem}.service-grid span{font:500 .7rem DM Mono;color:var(--accent)}.service-grid h3{font-size:1.1rem;margin:2.5rem 0 .7rem;letter-spacing:-.04em}.service-grid p,.timeline p,.contact>p{font-size:.86rem;color:var(--muted);line-height:1.75;margin:0}.projects-grid{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:1rem}.project-card{min-height:420px;background:var(--surface);border:1px solid var(--line);padding:1.5rem;display:flex;flex-direction:column;transition:transform .25s,border-color .25s,background .25s;cursor:pointer}.project-card:first-child{background:linear-gradient(145deg,var(--surface-2),var(--surface))}.project-card:hover,.project-card:focus-visible{transform:translateY(-7px);border-color:var(--accent);background:var(--surface-2)}.project-card:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.project-top{display:flex;justify-content:space-between}.arrow{font-size:1.2rem;color:var(--accent)}.project-card h3{font-size:clamp(1.5rem,2.4vw,2.3rem);line-height:1.05;letter-spacing:-.06em;max-width:300px;margin:3.4rem 0 1rem}.project-card p{font-size:.86rem;color:var(--muted);max-width:340px}.tags{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:auto;padding-top:2rem}.tags span{border:1px solid var(--line);border-radius:99px;padding:.3rem .55rem;font:500 .61rem DM Mono;color:var(--muted)}.timeline{border-top:1px solid var(--line)}.timeline article{display:grid;grid-template-columns:1fr 2fr;gap:2rem;padding:1.4rem 0;border-bottom:1px solid var(--line)}.timeline-meta{display:flex;flex-direction:column;gap:.25rem}.timeline-meta span{font:500 .66rem DM Mono;color:var(--accent)}.timeline-meta b{font-size:.78rem;color:var(--muted);font-weight:500}.timeline h3{margin:0 0 .45rem;font-size:1.25rem;letter-spacing:-.04em}.toolkit{padding-top:2rem}.toolkit-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem}.toolkit-grid p{font-size:.85rem;color:var(--muted);line-height:1.8}.contact{width:min(var(--max),calc(100% - 7rem));margin:3rem auto 6rem;border-top:1px solid var(--line);padding-top:4rem}.contact h2{max-width:800px}.contact>p{margin:1.4rem 0 2.1rem}.contact-email{font-size:clamp(1.2rem,3vw,2.5rem);letter-spacing:-.06em;border-bottom:1px solid var(--accent);padding-bottom:.25rem}.contact-email span{font-size:.7em;color:var(--accent)}.contact-links{display:flex;gap:1.4rem;margin-top:2.2rem}.site-footer{border-top:1px solid var(--line);padding-block:1.3rem 2.5rem;display:flex;justify-content:space-between;font:500 .62rem DM Mono;color:var(--muted)}.detail-hero{padding:6rem 0 5rem;border-bottom:1px solid var(--line)}.detail-hero h1{font-size:clamp(3rem,7vw,6.8rem);max-width:900px}.back-link{font:500 .7rem DM Mono;color:var(--muted);display:block;margin-bottom:5rem}.detail-body{padding-block:5rem 9rem}.detail-intro{display:grid;grid-template-columns:1fr 2fr;gap:2rem;margin-bottom:5rem}.detail-intro p{font-size:1.4rem;letter-spacing:-.04em;line-height:1.3;margin:0;max-width:700px}.case-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2rem;border-top:1px solid var(--line)}.case-grid>div{border-top:2px solid var(--accent);padding-top:1.1rem;margin-top:-1px}.case-grid h2{font-size:1.2rem;line-height:1.35;letter-spacing:-.04em;font-weight:500}.large{margin-top:4rem}.reveal{animation:rise .7s both}.delay-1{animation-delay:.1s}.delay-2{animation-delay:.2s}.delay-3{animation-delay:.3s}@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}:focus-visible{outline:2px solid var(--accent);outline-offset:4px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}@media(max-width:1024px){.section-wrap,.site-header,.contact{width:min(var(--max),calc(100% - 3rem))}.hero{gap:2rem}.hero h1{font-size:clamp(3rem,7vw,5rem)}.service-grid,.toolkit-grid{grid-template-columns:repeat(2,1fr);row-gap:3rem}.projects-grid{grid-template-columns:1fr 1fr}.project-card:first-child{grid-column:span 2}.constellation-wrap{height:400px}}@media(max-width:768px){.directional-dock{display:none}.experience-story{grid-template-columns:1fr;gap:2rem}.experience-highlights{grid-template-columns:1fr;gap:1rem}.experience-highlights ul{grid-template-columns:1fr}.site-header{height:auto;min-height:76px;flex-wrap:wrap;padding-block:1rem}.site-header nav{order:3;width:100%;justify-content:space-between;gap:.5rem}.availability{display:none}.hero{display:flex;flex-direction:column;align-items:stretch;padding-block:4rem 3rem}.hero h1{font-size:clamp(3.1rem,14vw,5rem)}.constellation-wrap{height:330px;margin-top:1rem}.credibility{grid-template-columns:1fr 1fr;row-gap:1.3rem}.section{padding-block:5rem}.split{display:block}.split .text-link{display:inline-block;margin-top:1.3rem}.projects-grid{grid-template-columns:1fr}.project-card:first-child{grid-column:auto}.project-card{min-height:350px}.timeline article,.detail-intro{grid-template-columns:1fr;gap:.75rem}.case-grid{grid-template-columns:1fr;gap:2rem}.detail-hero{padding-top:4rem}.back-link{margin-bottom:3rem}.detail-body{padding-bottom:5rem}}.experience-story{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(260px,.8fr);gap:3rem 5rem;border-top:1px solid var(--line);padding-top:1.5rem}.experience-summary{max-width:900px;margin:0;color:var(--muted);font-size:clamp(1.1rem,2vw,1.55rem);line-height:1.65;letter-spacing:-.02em}.experience-summary:first-letter{color:var(--accent)}.experience-companies{display:grid;gap:.6rem;align-content:start}.experience-companies span{display:flex;align-items:center;gap:.8rem;border-bottom:1px solid var(--line);padding:.7rem 0;font-size:.8rem}.experience-companies b{font:500 .62rem DM Mono;color:var(--accent)}.experience-highlights{grid-column:1 / -1;border-top:1px solid var(--line);padding-top:1.2rem;display:grid;grid-template-columns:180px 1fr;gap:2rem}.experience-highlights ul{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(2,1fr);gap:.7rem 2rem}.experience-highlights li{color:var(--muted);font-size:.82rem}.experience-highlights li:before{content:"•";color:var(--accent);margin-right:.5rem}.directional-dock{position:fixed;right:2rem;bottom:2rem;width:174px;height:166px;z-index:8;opacity:0;pointer-events:none;transform:translateY(18px) scale(.94);transition:opacity .3s,transform .3s}.directional-dock.is-visible{opacity:1;pointer-events:auto;transform:none}.dock-button{position:absolute;display:grid;place-items:center;width:66px;height:52px;border:1px solid var(--line);border-radius:17px 17px 12px 12px;background:color-mix(in srgb,var(--surface) 92%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 10px 30px #0000002e,inset 0 1px #ffffff0a;color:var(--muted);transition:color .2s,border-color .2s,background .2s,transform .2s}.dock-button span{position:absolute;font:500 .58rem DM Mono;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;opacity:0;transition:opacity .2s}.dock-button b{font-size:.65rem;font-weight:500}.dock-button:hover,.dock-button:focus-visible{border-color:var(--accent);color:var(--accent);background:var(--surface-2);transform:scale(1.06)}.dock-up{left:50%;top:0;transform:translate(-50%)}.dock-up:hover,.dock-up:focus-visible{transform:translate(-50%) scale(1.06)}.dock-up span{bottom:calc(100% + .5rem);left:50%;transform:translate(-50%)}.dock-left{left:0;top:50%;transform:translateY(-50%)}.dock-left:hover,.dock-left:focus-visible{transform:translateY(-50%) scale(1.06)}.dock-left span{right:calc(100% + .5rem);top:50%;transform:translateY(-50%)}.dock-right{right:0;top:50%;transform:translateY(-50%)}.dock-right:hover,.dock-right:focus-visible{transform:translateY(-50%) scale(1.06)}.dock-right span{left:calc(100% + .5rem);top:50%;transform:translateY(-50%)}.dock-down{left:50%;bottom:0;transform:translate(-50%)}.dock-down:hover,.dock-down:focus-visible{transform:translate(-50%) scale(1.06)}.dock-down span{top:calc(100% + .5rem);left:50%;transform:translate(-50%)}@media(max-width:390px){.section-wrap,.site-header,.contact{width:calc(100% - 2rem)}.brand strong{font-size:.75rem}.hero h1{font-size:3rem}.hero-actions{align-items:stretch;flex-direction:column}.button{text-align:center}.service-grid,.toolkit-grid{grid-template-columns:1fr}.contact-links{flex-wrap:wrap}.site-footer{font-size:.55rem}}.directional-dock{right:4.5rem;bottom:2rem;width:184px;height:184px;border-radius:50%;background:var(--dock-bg,#dfe1e2);box-shadow:0 12px 34px #00000038;overflow:visible}.dock-button{width:64px;height:64px;border:0;border-radius:0;background:var(--dock-key,#505052);box-shadow:none;clip-path:none;filter:none;isolation:auto;color:transparent}.dock-button:before,.dock-button:after{display:none}.dock-button b{opacity:0;color:transparent}.dock-button:hover,.dock-button:focus-visible{background:var(--dock-key,#505052);border:0;filter:none;transform:scale(1.04)}.dock-up{left:50%;top:23px;transform:translate(-50%);clip-path:polygon(24% 0,76% 0,100% 22%,100% 58%,50% 100%,0 58%,0 22%);border-radius:14px 14px 0 0}.dock-up:hover,.dock-up:focus-visible{transform:translate(-50%) scale(1.04)}.dock-left{left:23px;top:50%;transform:translateY(-50%);clip-path:polygon(0 24%,58% 24%,100% 50%,58% 76%,0 76%);border-radius:14px 0 0 14px}.dock-left:hover,.dock-left:focus-visible{transform:translateY(-50%) scale(1.04)}.dock-right{right:23px;top:50%;transform:translateY(-50%);clip-path:polygon(42% 24%,100% 24%,100% 76%,42% 76%,0 50%);border-radius:0 14px 14px 0}.dock-right:hover,.dock-right:focus-visible{transform:translateY(-50%) scale(1.04)}.dock-down{left:50%;bottom:23px;transform:translate(-50%);clip-path:polygon(50% 0,100% 42%,100% 78%,76% 100%,24% 100%,0 78%,0 42%);border-radius:0 0 14px 14px}.dock-down:hover,.dock-down:focus-visible{transform:translate(-50%) scale(1.04)}.dock-button span{opacity:0;pointer-events:none;color:var(--text);background:var(--surface-2);border:1px solid var(--line);border-radius:999px;padding:.35rem .55rem;box-shadow:0 8px 18px #0003;transform:none!important;z-index:4}.dock-button:hover span,.dock-button:focus-visible span{opacity:1}.dock-up span{bottom:calc(100% + .55rem);left:50%;transform:translate(-50%)!important}.dock-left span{right:calc(100% + .55rem);top:50%;transform:translateY(-50%)!important}.dock-right span{left:calc(100% + .55rem);top:50%;transform:translateY(-50%)!important}.dock-down span{top:calc(100% + .55rem);left:50%;transform:translate(-50%)!important}@media(max-width:768px){.directional-dock{display:none}}.brand img{width:38px;height:38px;display:block;color:var(--accent);filter:brightness(0) saturate(100%) invert(78%) sepia(45%) saturate(482%) hue-rotate(146deg) brightness(97%)}:root[data-theme=light] .brand img{filter:brightness(0) saturate(100%) invert(24%) sepia(23%) saturate(1227%) hue-rotate(151deg) brightness(78%) contrast(96%)}.directional-dock{right:8rem;bottom:4.5rem;width:145px;height:145px;background:none!important;border-radius:0;box-shadow:none!important;overflow:visible}.directional-dock:after{display:none!important}.dock-art{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;overflow:visible;pointer-events:auto}.dock-art path{fill:none;stroke:#3c4257;stroke-width:2;stroke-linejoin:round;stroke-linecap:round;transition:fill .15s ease,stroke .15s ease}.dock-hit{position:absolute;width:70px;height:70px;background:transparent!important;border:0;z-index:9}.dock-hit span{opacity:0;pointer-events:none;position:absolute;color:var(--text);background:var(--surface-2);border:1px solid var(--line);border-radius:999px;padding:.35rem .6rem;box-shadow:0 8px 18px #0003;font:500 .58rem DM Mono;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;transition:opacity .2s}.dock-hit:hover span,.dock-hit:focus-visible span{opacity:1}.directional-dock:has(.dock-hit-up:hover) .dock-art path:nth-child(1),.directional-dock:has(.dock-hit-up:focus-visible) .dock-art path:nth-child(1),.directional-dock:has(.dock-hit-left:hover) .dock-art path:nth-child(2),.directional-dock:has(.dock-hit-left:focus-visible) .dock-art path:nth-child(2),.directional-dock:has(.dock-hit-right:hover) .dock-art path:nth-child(3),.directional-dock:has(.dock-hit-right:focus-visible) .dock-art path:nth-child(3),.directional-dock:has(.dock-hit-down:hover) .dock-art path:nth-child(4),.directional-dock:has(.dock-hit-down:focus-visible) .dock-art path:nth-child(4){stroke:var(--accent);fill:#0b8da514}.dock-hit-up{left:50px;top:0}.dock-hit-left{left:0;top:50px}.dock-hit-right{right:0;top:50px}.dock-hit-down{left:50px;bottom:0}.dock-hit-up span{left:50%;bottom:calc(100% + .5rem);transform:translate(-50%)}.dock-hit-left span{right:calc(100% + .5rem);top:50%;transform:translateY(-50%)}.dock-hit-right span{left:calc(100% + .5rem);top:50%;transform:translateY(-50%)}.dock-hit-down span{left:50%;top:calc(100% + .5rem);transform:translate(-50%)}.dock-svg-hit{cursor:pointer}.dock-svg-hit .dpad-btn{fill:transparent;pointer-events:all;stroke:var(--dock-stroke,#3c4257);stroke-width:2;stroke-linejoin:round;stroke-linecap:round;transition:fill .15s ease,stroke .15s ease}.dock-svg-hit:hover .dpad-btn,.dock-svg-hit:focus-visible .dpad-btn{fill:#3c425714;stroke:var(--accent)}:root:not([data-theme=light]){--dock-stroke:#8a96aa}.dock-label{opacity:0;pointer-events:none;position:absolute;color:var(--text);background:var(--surface-2);border:1px solid var(--line);border-radius:999px;padding:.35rem .6rem;box-shadow:0 8px 18px #0003;font:500 .58rem DM Mono;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;transition:opacity .15s ease;z-index:10}.directional-dock:has(.dock-svg-hit-up:hover) .dock-label-up,.directional-dock:has(.dock-svg-hit-up:focus-visible) .dock-label-up,.directional-dock:has(.dock-svg-hit-left:hover) .dock-label-left,.directional-dock:has(.dock-svg-hit-left:focus-visible) .dock-label-left,.directional-dock:has(.dock-svg-hit-right:hover) .dock-label-right,.directional-dock:has(.dock-svg-hit-right:focus-visible) .dock-label-right,.directional-dock:has(.dock-svg-hit-down:hover) .dock-label-down,.directional-dock:has(.dock-svg-hit-down:focus-visible) .dock-label-down{opacity:1}.dock-label-up{left:50%;top:calc(16% - 1.6rem);transform:translate(-50%)}.dock-label-left{right:calc(84% + .45rem);top:50%;transform:translateY(-50%)}.dock-label-right{left:calc(84% + .45rem);top:50%;transform:translateY(-50%)}.dock-label-down{left:50%;bottom:calc(16% - 1.6rem);transform:translate(-50%)}.directional-dock{display:none!important}html,body,#app{width:100%;max-width:100%;overflow-x:hidden}img,svg,canvas{max-width:100%}.inline-arrow{display:inline-block;width:1em;height:1em;vertical-align:-.14em;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:0 0 auto}.arrow .inline-arrow{width:1.1rem;height:1.1rem;color:var(--accent)}.button,.text-link,.contact-email{display:inline-flex;align-items:center;gap:.45rem}.experience-summary,.experience-companies,.experience-highlights,.experience-highlights ul,.experience-companies span{min-width:0}.experience-summary,.experience-companies span,.experience-highlights li{overflow-wrap:anywhere}@media(max-width:768px){.section-wrap,.site-header,.contact{width:calc(100% - 2rem);max-width:calc(100% - 2rem)}.timeline-section{overflow:clip}.timeline-section .section-heading{margin-bottom:2.4rem}.timeline-section .section-heading h2{max-width:100%;font-size:clamp(2.2rem,11vw,3.5rem);line-height:1.02}.experience-story{display:grid;grid-template-columns:minmax(0,1fr);gap:1.75rem;width:100%}.experience-summary{font-size:1.12rem;line-height:1.55}.experience-highlights{display:grid;grid-template-columns:minmax(0,1fr);gap:1rem;width:100%}.experience-highlights ul{grid-template-columns:minmax(0,1fr);gap:.7rem}.experience-companies span{font-size:.76rem}}
