:root{--chrome-h:clamp(72px, 10vmin, 108px);--chrome-w:clamp(72px, 10vmin, 108px);--rule:#e6e4df;--rule-strong:#c9c7c1;--slide-px:clamp(28px, 5vmin, 72px);--slide-py:clamp(28px, 4.5vmin, 64px);--font-sans:"Inter Tight", "Helvetica Neue", Helvetica, Arial, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--ink:#111;--ink-2:#4a4a47;--muted:#9a9892;--bg:#fff;--blue:#0c1a33;--blue-soft:#6b7a99;--theme-navy:0;--chrome-bg:#fff;--chrome-ink:#111;--chrome-ink-2:#4a4a47;--chrome-muted:#9a9892;--chrome-rule:#e6e4df;--ease:cubic-bezier(.65, 0, .35, 1);--xfade:.16s}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}html{scroll-behavior:smooth}body{font-family:var(--font-sans);background:var(--bg);color:var(--ink);letter-spacing:-.005em;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;transition:background-color var(--xfade) var(--ease), color var(--xfade) var(--ease);font-size:15px;font-weight:400;line-height:1.55}::selection{background:var(--blue);color:#fff}::selection{background:var(--blue);color:#fff}body[data-active="1"] ::selection,body[data-active="2"] ::selection{color:var(--blue);background:#fff}body[data-active="1"] ::-moz-selection{color:var(--blue);background:#fff}body[data-active="2"] ::-moz-selection{color:var(--blue);background:#fff}.theme-veil{opacity:0;z-index:0;pointer-events:none;will-change:opacity;background:#0c1a33;position:fixed;inset:0}a{color:inherit;text-decoration:none}.mono{font-family:var(--font-mono);letter-spacing:.04em;font-size:11px}.upcase{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:10.5px}.site-header{background:0 0}.site-mark--bottom{color:var(--neutral-ink,#1a1a1a);background:0 0}.site-sidebar{top:var(--chrome-h);width:var(--chrome-w);border-right:1px solid var(--rule-strong);z-index:20;color:var(--chrome-ink);transition:background-color var(--xfade) var(--ease), color var(--xfade) var(--ease);background:0 0;grid-template-rows:auto 1fr auto;place-items:center;padding:28px 0;display:grid;position:fixed;bottom:0;left:0}.site-sidebar .slide-dots{flex-direction:column;align-items:center;gap:14px;display:flex}.site-sidebar .slide-dots .ix{font-family:var(--font-mono);letter-spacing:.08em;color:var(--chrome-muted);transition:color var(--xfade) var(--ease);font-size:10px}.site-sidebar .slide-dots .pad{margin-top:4px}.site-sidebar .slide-dots .rail{background:var(--chrome-rule);cursor:pointer;width:5px;height:clamp(64px,9vmin,100px);transition:background-color var(--xfade) var(--ease);border-radius:999px;position:relative;overflow:hidden}.site-sidebar .slide-dots .rail .fill{background:var(--chrome-ink);height:0;transition:height .45s var(--ease), background-color var(--xfade) var(--ease);border-radius:999px;position:absolute;top:0;left:0;right:0}.site-sidebar .v-label{writing-mode:vertical-rl;font-family:var(--font-mono);letter-spacing:.26em;text-transform:uppercase;color:var(--chrome-ink);white-space:nowrap;transition:color var(--xfade) var(--ease);font-size:11px;font-weight:500;transform:rotate(180deg)}.site-sidebar .v-label b{color:var(--chrome-ink);transition:color var(--xfade) var(--ease);font-weight:500}.site-sidebar{padding-bottom:calc(var(--chrome-h) + 8px)}.slides{top:var(--chrome-h);left:var(--chrome-w);z-index:1;scroll-snap-type:y mandatory;position:absolute;bottom:0;right:0;overflow-y:scroll}.slides::-webkit-scrollbar{width:0}.slides{scrollbar-width:none}section.slide{scroll-snap-align:start;scroll-snap-stop:always;width:100%;height:100%;padding:var(--slide-py) var(--slide-px);flex-direction:column;justify-content:space-between;gap:clamp(16px,3vmin,32px);display:flex;position:relative}.hero-top{grid-template-columns:1fr auto;align-items:start;gap:24px;display:grid}.hero-top .crumb{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);gap:18px;font-size:11px;display:inline-flex}.hero-top .crumb span:first-child{color:var(--ink)}.hero-top .ix{font-family:var(--font-mono);letter-spacing:.06em;color:var(--muted);font-size:11px}.hero-center{flex-direction:column;gap:clamp(16px,2.8vmin,28px);margin:auto 0;display:flex}.hero-eyebrow{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);align-items:center;gap:10px;font-size:clamp(10px,1.1vmin,11.5px);display:inline-flex}.hero-eyebrow:before{content:"";background:var(--ink);width:clamp(20px,2.6vmin,32px);height:1px;display:inline-block}.sec-tag{width:fit-content;font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2);border:1px solid color-mix(in srgb, currentColor 38%, transparent);border-radius:999px;align-self:flex-start;align-items:center;padding:clamp(5px,.85vmin,8px) clamp(11px,1.5vmin,16px);font-size:clamp(10px,1.1vmin,11.5px);line-height:1;display:inline-flex}.hero-title{color:var(--blue);letter-spacing:-.04em;text-wrap:balance;max-width:14ch;font-size:clamp(44px,9.2vmin,120px);font-weight:500;line-height:.95}.hero-title em{color:var(--blue-soft);font-style:normal;font-weight:500}.hero-sub{grid-template-columns:minmax(0,56ch);align-items:end;gap:64px;display:grid}.hero-sub p{color:var(--ink-2);text-wrap:pretty;max-width:48ch;font-size:clamp(15px,1.85vmin,19px);line-height:1.5}.hero-sub p b{color:var(--ink);font-weight:500}section.slide.slide-hero[data-bg="0"]{--ink:color-mix(in srgb, #0c1a33, #fff calc(var(--theme-navy,0) * 100%));--ink-2:color-mix(in srgb, #3f4d68, #fff calc(var(--theme-navy,0) * 100%));--muted:color-mix(in srgb, #8790a6, #fff calc(var(--theme-navy,0) * 100%))}section.slide.slide-hero .hero-title{color:var(--ink)}section.slide.slide-skills[data-bg="1"],section.slide.slide-tools[data-bg="2"],section.slide.slide-cv[data-bg="0"],section.slide.slide-projects[data-bg="0"],section.slide.slide-pgrid[data-bg="1"]{--ink:color-mix(in srgb, #0c1a33, #e7ebf3 calc(var(--theme-navy,0) * 100%));--ink-2:color-mix(in srgb, #3f4d68, #b3bccc calc(var(--theme-navy,0) * 100%));--muted:color-mix(in srgb, #8790a6, #6d7891 calc(var(--theme-navy,0) * 100%))}section.slide.slide-skills .skills-head h2,section.slide.slide-tools .tools-intro h2,section.slide.slide-cv .cv-head h2,section.slide.slide-projects .projects-head h2,section.slide.slide-pgrid .projects-head h2{color:var(--ink)}.hero-sub .cta-stack{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;flex-direction:column;align-items:flex-end;gap:8px;font-size:11px;display:flex}.hero-sub .cta-stack a{border:1px solid var(--ink);transition:background .2s var(--ease), color .2s var(--ease);align-items:center;gap:10px;padding:12px 14px;display:inline-flex}.hero-sub .cta-stack a:hover{background:var(--ink);color:var(--bg)}.hero-sub .cta-stack a .arr{display:inline-block;transform:translateY(-1px)}.hero-ctas{height:var(--chrome-h);background:rgba(255, 255, 255, max(0, .2 - .5 * var(--theme-navy,0)));border-top:1px solid var(--rule-strong);border-bottom:1px solid var(--rule-strong);grid-template-columns:repeat(4,1fr);display:grid;position:absolute;bottom:0;left:0;right:0}@media (width>=821px){.hero-ctas{transition:border-bottom-color var(--xfade) var(--ease);border-bottom-color:#0000}body[data-scrolled] .hero-ctas{border-bottom-color:var(--rule-strong)}}.hero-ctas a{color:color-mix(in srgb, #0c1a33, #e7ebf3 calc(var(--theme-navy,0) * 100%));transition:background-color .2s var(--ease);background:0 0;justify-content:space-between;align-items:center;gap:16px;padding:0 clamp(18px,2.6vmin,32px);text-decoration:none;display:flex;position:relative;overflow:hidden}.hero-ctas a+a{border-left:1px solid color-mix(in srgb, #e6e4df, #1f2c47 calc(var(--theme-navy,0) * 100%))}.hero-ctas .label{letter-spacing:-.01em;font-size:clamp(15px,1.9vmin,20px);font-weight:500}.hero-ctas .arr{width:clamp(22px,2.8vmin,32px);height:clamp(22px,2.8vmin,32px);color:inherit;transition:transform .25s var(--ease);flex:none;display:block}.hero-ctas .arr svg{width:100%;height:100%;display:block}.hero-ctas a:hover{background:var(--blue);color:#fff}.hero-ctas a:hover .arr{color:#fff;transform:translate(4px,4px)}.slide-hero{padding-bottom:calc(var(--chrome-h) + clamp(16px, 2.4vmin, 28px));justify-content:center}.hero-waves{z-index:0;pointer-events:none;-webkit-mask-composite:source-in;width:clamp(380px,58%,980px);height:100%;position:absolute;top:0;right:0;mask-image:linear-gradient(90deg,#0000 0,#000 46% 100%),linear-gradient(#0000 0,#000 14% 86%,#0000 100%);mask-composite:intersect}.slide-hero .hero-center,.slide-hero .scroll-hint{z-index:1;position:relative}.slide-hero .hero-ctas{z-index:1}.scroll-hint{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);align-items:center;gap:12px;font-size:10.5px;display:inline-flex;position:absolute;bottom:56px;right:64px}.scroll-hint .line{background:currentColor;width:56px;height:1px;position:relative;overflow:hidden}.scroll-hint .line:after{content:"";background:var(--ink);animation:hintLine 2.4s var(--ease) infinite;position:absolute;inset:0;transform:translate(-100%)}@keyframes hintLine{0%{transform:translate(-100%)}50%{transform:translate(0%)}to{transform:translate(100%)}}section.slide.slide-skills{flex-direction:column;justify-content:center;gap:clamp(20px,3.2vmin,40px);display:flex}section.slide.slide-skills>*{min-width:0}.skills-head{grid-template-columns:1fr 1fr;grid-template-areas:".tag""ttl copy";align-items:start;gap:clamp(10px,1.5vmin,16px) clamp(32px,4.5vmin,64px);padding-bottom:clamp(14px,1.8vmin,22px);display:grid}.skills-head h2{letter-spacing:-.03em;color:var(--ink);text-wrap:balance;max-width:16ch;font-size:clamp(28px,5.2vmin,64px);font-weight:500;line-height:1}.skills-head h2 em{color:var(--muted);font-style:normal;font-weight:500}.skills-head .lead{flex-direction:column;gap:clamp(8px,1.2vmin,14px);display:flex}.skills-head .lead p{color:var(--ink-2);text-wrap:pretty;max-width:44ch;font-size:clamp(14px,1.65vmin,17px);line-height:1.5}.skills-head h2,.cv-head h2,.projects-head h2,.contact-head h2{padding-bottom:clamp(16px,2.2vmin,28px)}.skills-head .lead,.cv-head .lead,.projects-head .lead,.contact-head .lead{align-items:flex-start}.skills-head .lead p,.cv-head .lead p,.projects-head .lead p,.contact-head .lead p{border-bottom:1px solid var(--rule);padding-bottom:clamp(16px,2.2vmin,28px)}.skills-text{column-count:2;color:var(--ink-2);text-wrap:pretty;column-gap:clamp(32px,4.5vmin,64px);max-width:100%;font-size:clamp(14px,1.7vmin,17px);line-height:1.55}.skills-text p{break-inside:avoid}.skills-text p+p{margin-top:.9em}.skills-text b{color:var(--ink);font-weight:500}.skills-cubes{grid-template-columns:repeat(6,minmax(0,1fr));gap:clamp(10px,1.6vmin,20px);display:grid}.skills-cubes>*{min-width:0}.cube{aspect-ratio:1;width:100%;color:var(--ink-2);border:1px solid var(--rule);place-items:center;display:grid;position:relative}.cube.is-empty{border-style:dashed}.cube.is-empty .ph{color:var(--muted)}.cube.is-empty .mark{opacity:.5}.cube .ix{font-family:var(--font-mono);letter-spacing:.06em;color:var(--muted);font-size:clamp(10px,1.1vmin,12px);position:absolute;top:clamp(10px,1.4vmin,16px);left:clamp(10px,1.4vmin,16px)}.cube .ph{font-family:var(--font-sans);letter-spacing:-.01em;text-transform:none;color:var(--ink);text-align:center;text-wrap:balance;max-width:100%;padding:0 clamp(10px,1.6vmin,18px);font-size:clamp(15px,1.95vmin,23px);font-weight:500;line-height:1.2}.cube .mark{width:clamp(12px,1.4vmin,16px);height:clamp(12px,1.4vmin,16px);color:var(--muted);position:absolute;bottom:clamp(10px,1.4vmin,16px);right:clamp(10px,1.4vmin,16px)}.cube .mark svg{width:100%;height:100%;display:block}section.slide.slide-cv{flex-direction:column;justify-content:center;gap:clamp(20px,3.2vmin,40px);display:flex}section.slide.slide-cv>*{min-width:0}.cv-head{grid-template-columns:1fr 1fr;grid-template-areas:".tag""ttl copy";align-items:start;gap:clamp(10px,1.5vmin,16px) clamp(32px,4.5vmin,64px);padding-bottom:clamp(14px,1.8vmin,22px);display:grid}.cv-head h2{letter-spacing:-.03em;color:var(--ink);text-wrap:balance;max-width:16ch;font-size:clamp(28px,5.2vmin,64px);font-weight:500;line-height:1}.cv-head h2 em{color:var(--muted);font-style:normal;font-weight:500}.cv-head .lead{flex-direction:column;gap:clamp(8px,1.2vmin,14px);display:flex}.cv-head .lead p{color:var(--ink-2);text-wrap:pretty;max-width:44ch;font-size:clamp(14px,1.65vmin,17px);line-height:1.5}.cv-list{border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}.cv-row{grid-template-columns:1fr 1fr;align-items:start;gap:clamp(32px,4.5vmin,64px);padding:clamp(16px,2.2vmin,26px) 0;display:grid}.cv-left{grid-template-columns:clamp(82px,9.5vmin,120px) minmax(0,1fr);align-items:start;gap:clamp(20px,3vmin,40px);display:grid}.cv-row+.cv-row{border-top:1px solid var(--rule)}.cv-row .logo{border:1px solid var(--rule);width:clamp(44px,5.5vmin,62px);min-width:0;max-width:none;height:clamp(44px,5.5vmin,62px);font-family:var(--font-mono);letter-spacing:.06em;color:var(--ink-2);text-transform:uppercase;justify-content:center;align-items:center;font-size:clamp(12px,1.4vmin,15px);display:flex;overflow:hidden}.cv-row .logo img{object-fit:contain;width:clamp(42px,5.5vmin,60px);height:clamp(42px,5.5vmin,60px);padding:clamp(7.6px,.99vmin,10.8px);display:block}.cv-row .who{align-items:center;gap:clamp(14px,1.8vmin,22px);min-width:0;display:flex}.cv-row .yr{font-family:var(--font-mono);letter-spacing:.06em;color:var(--muted);text-transform:uppercase;white-space:nowrap;padding-top:clamp(8px,1.1vmin,14px);font-size:clamp(11px,1.2vmin,13px)}.cv-row .role{letter-spacing:-.015em;color:var(--ink);font-size:clamp(16px,2vmin,22px);font-weight:500;line-height:1.2}.cv-row .role .at{color:var(--muted);letter-spacing:0;margin-top:.2em;font-size:.82em;font-weight:400;display:block}.cv-row .blurb{color:var(--ink-2);text-wrap:pretty;max-width:44ch;font-size:clamp(13px,1.55vmin,16px);line-height:1.45}.cv-foot{justify-content:flex-end;display:flex}.cv-cta{isolation:isolate;border:1px solid var(--ink-2);color:var(--ink-2);letter-spacing:-.005em;transition:color .35s var(--ease), border-color .35s var(--ease);background:0 0;border-radius:999px;align-items:center;padding:clamp(9px,1.2vmin,14px) clamp(28px,3.4vmin,46px);font-size:clamp(15px,1.8vmin,19px);font-weight:500;text-decoration:none;display:inline-flex;position:relative;overflow:hidden}.cv-cta:before{content:"";background:var(--ink-2);transform-origin:0;transition:transform .45s var(--ease);z-index:-1;position:absolute;inset:0;transform:scaleX(0)}.cv-cta:hover{color:var(--bg);border-color:var(--ink-2)}.cv-cta:hover:before{transform:scaleX(1)}section.slide.slide-contact{padding-bottom:calc(var(--chrome-h) + clamp(16px, 2.4vmin, 28px));flex-direction:column;justify-content:center;gap:clamp(20px,3.4vmin,44px);display:flex}section.slide.slide-contact>*{min-width:0}.contact-waves{z-index:0;pointer-events:none;-webkit-mask-composite:source-in;width:100%;height:100%;position:absolute;inset:0;mask-image:radial-gradient(106% 64% at 50% 70%,#000 0 22%,#0000 58%),linear-gradient(0deg,#0000 0,#000 26%);mask-composite:intersect}.slide-contact .contact-head,.slide-contact .contact-mail,.slide-contact .contact-socials{z-index:1;position:relative}.slide-contact .contact-footer{z-index:1}.contact-head{grid-template-columns:1fr 1fr;grid-template-areas:".tag""ttl copy";align-items:start;gap:clamp(10px,1.5vmin,16px) clamp(32px,4.5vmin,64px);padding-bottom:clamp(14px,1.8vmin,22px);display:grid}.contact-head h2{letter-spacing:-.03em;color:var(--ink);text-wrap:balance;grid-area:ttl;max-width:16ch;font-size:clamp(28px,5.2vmin,64px);font-weight:500;line-height:1}.contact-head h2 em{color:var(--muted);font-style:normal;font-weight:500}.contact-head .lead{display:contents}.contact-head .lead .sec-tag{grid-area:tag;place-self:start}.contact-head .lead p{color:var(--ink-2);text-wrap:pretty;grid-area:copy;max-width:44ch;font-size:clamp(14px,1.65vmin,17px);line-height:1.5}.contact-mail{color:var(--ink);letter-spacing:-.035em;align-self:flex-start;align-items:center;gap:clamp(14px,2vmin,24px);padding-bottom:clamp(8px,1.2vmin,16px);font-size:clamp(34px,7vmin,96px);font-weight:500;line-height:1;text-decoration:none;display:inline-flex;position:relative}.contact-mail:after{content:"";opacity:.35;height:1px;transition:opacity .2s var(--ease), height .2s var(--ease);background:currentColor;position:absolute;bottom:0;left:0;right:0}.contact-mail:hover:after{opacity:1;height:2px}.contact-mail .arr{width:clamp(26px,3.4vmin,44px);height:clamp(26px,3.4vmin,44px);color:var(--ink-2);transition:transform .25s var(--ease), color .2s var(--ease);flex:none;transform:translateY(.1em)}.contact-mail .arr svg{width:100%;height:100%;display:block}.contact-mail:hover .arr{color:var(--ink);transform:translate(6px,.1em)}.contact-socials{flex-wrap:wrap;align-self:flex-start;gap:clamp(8px,1.2vmin,14px);margin-bottom:clamp(96px,23vmin,260px);display:flex}.contact-socials a{border:1px solid var(--rule);width:clamp(56px,8vmin,88px);height:clamp(56px,8vmin,88px);color:var(--ink);transition:background-color .2s var(--ease), color .2s var(--ease);place-items:center;display:grid}.contact-socials a:hover{background:var(--ink);color:var(--neutral-bg)}.contact-socials a svg{width:44%;height:44%;display:block}@media (width>=821px){.contact-waves{mask-image:radial-gradient(102% 84% at 50% 84%,#000 0 24%,#0000 68%),linear-gradient(0deg,#0000 0,#000 20%)}.contact-socials{margin-bottom:0}}.contact-footer{height:var(--chrome-h);border-top:1px solid var(--rule-strong);border-bottom:1px solid var(--rule-strong);font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2);background:#0c1a3333;grid-template-columns:1fr auto auto;align-items:center;gap:clamp(16px,2.6vmin,32px);padding:0 clamp(18px,2.6vmin,32px);font-size:clamp(10.5px,1.15vmin,12.5px);display:grid;position:absolute;bottom:0;left:0;right:0}.contact-footer .name{color:var(--ink);align-items:baseline;gap:10px;font-weight:500;display:inline-flex}.contact-footer .name span{color:var(--muted);font-weight:400}.contact-footer a{color:var(--ink-2);transition:color .2s var(--ease);padding:4px 0;text-decoration:none}.contact-footer a:hover{color:var(--ink)}section.slide.slide-projects{flex-direction:column;justify-content:center;gap:clamp(20px,3.2vmin,40px);display:flex}section.slide.slide-projects>*{min-width:0}.projects-head{grid-template-columns:1fr 1fr;grid-template-areas:".tag""ttl copy";align-items:start;gap:clamp(10px,1.5vmin,16px) clamp(32px,4.5vmin,64px);padding-bottom:clamp(14px,1.8vmin,22px);display:grid}.projects-head h2{letter-spacing:-.03em;color:var(--ink);text-wrap:balance;max-width:16ch;font-size:clamp(28px,5.2vmin,64px);font-weight:500;line-height:1}.projects-head h2 em{color:var(--muted);font-style:normal;font-weight:500}.projects-head .lead{flex-direction:column;gap:clamp(8px,1.2vmin,14px);display:flex}.projects-head .lead p{color:var(--ink-2);text-wrap:pretty;max-width:44ch;font-size:clamp(14px,1.65vmin,17px);line-height:1.5}.skills-head h2,.cv-head h2,.projects-head h2{grid-area:ttl}.skills-head .lead,.cv-head .lead,.projects-head .lead{display:contents}.skills-head .sec-tag,.cv-head .sec-tag,.projects-head .sec-tag{grid-area:tag;place-self:start}.skills-head .lead p,.cv-head .lead p,.projects-head .lead p{grid-area:copy}.projects-stack{flex-direction:column;display:flex}.carousel.carousel--logos{padding:calc(clamp(12px,1.8vmin,22px)/2) 0;border-top:0!important}.carousel.carousel--logos .track{gap:clamp(12px,1.8vmin,22px)}.carousel--logos .viewport{position:relative;overflow:hidden;mask-image:linear-gradient(90deg,#0000 0,#000 6% 94%,#0000 100%)}.carousel--logos .track{width:max-content;animation:marquee var(--mq-dur,50s) linear infinite;align-items:center;display:flex}.carousel--logos .track.track--reverse{animation-direction:reverse}.projects-stack .carousel--logos:first-child .logo,.projects-stack .carousel--logos:nth-child(3) .logo{width:clamp(200px,22vmin,280px);min-width:0}.logo{min-width:clamp(170px,20vmin,250px);height:clamp(110px,14.5vmin,168px);color:var(--ink);font-family:var(--font-sans);letter-spacing:-.005em;white-space:nowrap;border:1px solid var(--rule);flex:none;justify-content:center;align-items:center;gap:clamp(10px,1.2vmin,14px);padding:0 clamp(20px,2.4vmin,32px);font-size:clamp(18px,2.3vmin,26px);font-weight:500;display:flex}.logo .mk{color:currentColor;flex:none;width:clamp(20px,2.8vmin,30px);height:clamp(20px,2.8vmin,30px)}.logo .mk svg{width:100%;height:100%;display:block}.logo .tx{line-height:1}.logo.serif{letter-spacing:-.01em;font-family:Georgia,Times New Roman,serif;font-style:italic;font-weight:500}.logo.mono{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;font-size:clamp(13px,1.6vmin,17px);font-weight:500}.logo.bold{letter-spacing:-.02em;font-weight:700}.logo.thin{letter-spacing:.02em;font-weight:300}.logo.caps{text-transform:uppercase;letter-spacing:.06em;font-size:clamp(14px,1.8vmin,19px)}section.slide.slide-pgrid{flex-direction:column;justify-content:center;gap:clamp(20px,3.2vmin,40px);display:flex}section.slide.slide-pgrid>*{min-width:0}.pgrid{grid-template-columns:repeat(6,1fr);gap:clamp(10px,1.6vmin,20px);display:grid}.pgrid-cell{isolation:isolate;border:1px solid var(--rule-strong);aspect-ratio:1;color:var(--ink-2);transition:color .35s var(--ease);place-items:center;padding:clamp(10px,1.6vmin,20px);display:grid;position:relative;overflow:hidden}.pgrid-cell:before{content:"";background:var(--ink);transform-origin:0;transition:transform .45s var(--ease);z-index:-1;position:absolute;inset:0;transform:scaleX(0)}.pgrid-cell:hover{color:#0c1a33}.pgrid-cell:hover:before{transform:scaleX(1)}.pgrid .cell-arr{width:clamp(20px,2.4vmin,28px);height:clamp(20px,2.4vmin,28px);color:inherit;opacity:.32;transition:opacity .2s var(--ease), transform .25s var(--ease);pointer-events:none;position:absolute;bottom:clamp(7px,1vmin,12px);right:clamp(7px,1vmin,12px);transform:translate(-3px)}.pgrid .cell-arr svg{width:100%;height:100%;display:block}.pgrid-cell:hover .cell-arr{opacity:1;transform:translate(0)}.pgrid .logo{width:auto;min-width:0;height:auto;color:inherit;text-align:center;white-space:normal;border:0;flex-direction:column;gap:clamp(7px,1vmin,12px);padding:0;font-size:clamp(13px,1.5vmin,19px)}section.slide.slide-tools{grid-template-columns:1fr 1fr;align-items:center;gap:clamp(32px,6vmin,88px);display:grid}section.slide.slide-tools>*,.carousel,.carousel .viewport{min-width:0}.tools-intro{flex-direction:column;gap:clamp(16px,2.4vmin,28px);display:flex}.tools-intro h2{letter-spacing:-.03em;color:var(--ink);text-wrap:balance;max-width:16ch;font-size:clamp(28px,5.2vmin,64px);font-weight:500;line-height:1}.tools-intro h2 em{color:var(--muted);font-style:normal;font-weight:500}.tools-intro p{color:var(--ink-2);text-wrap:pretty;max-width:44ch;font-size:clamp(15px,1.85vmin,19px);line-height:1.55}.tools-stack{border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);flex-direction:column;display:flex}.carousel{flex-direction:column;gap:clamp(10px,1.4vmin,16px);padding:clamp(14px,2vmin,22px) 0;display:flex;position:relative}.carousel+.carousel{border-top:1px solid var(--rule)}.carousel .lbl{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2);align-items:baseline;gap:10px;font-size:clamp(10px,1.1vmin,12px);display:inline-flex}.carousel .lbl .ix{color:var(--muted);font-size:clamp(9.5px,1vmin,11px)}.carousel .lbl .nm{color:var(--ink);letter-spacing:.04em;font-size:clamp(11px,1.2vmin,13px);font-weight:500}.carousel .viewport{position:relative;overflow:hidden;mask-image:linear-gradient(90deg,#0000 0,#000 6% 94%,#0000 100%)}.carousel .track{width:max-content;animation:marquee var(--mq-dur,40s) linear infinite;gap:clamp(12px,1.8vmin,22px);display:flex}.carousel:not(.carousel--logos):hover .track{animation-play-state:paused}@keyframes marquee{0%{transform:translate(0,0)}to{transform:translate(-50%)}}.tile{aspect-ratio:1;border:1px solid var(--rule);width:clamp(64px,9vmin,108px);color:var(--ink);background:0 0;flex:none;place-items:center;display:grid;position:relative}.tile svg{width:52%;height:52%;display:block}.tile .name{font-family:var(--font-mono);letter-spacing:.04em;color:var(--muted);text-align:center;text-transform:uppercase;pointer-events:none;font-size:clamp(8px,.95vmin,10px);display:none;position:absolute;bottom:4px;left:4px;right:4px}.slide-tools .carousel .track{width:max-content;animation:none!important}.slide-tools .carousel:hover .track{animation:none!important}.slide-tools .carousel .viewport{cursor:grab;scrollbar-width:none;touch-action:pan-y;overflow:auto hidden;mask-image:linear-gradient(90deg,#000 0 90%,#0000 100%)}.slide-tools .carousel .viewport::-webkit-scrollbar{width:0;height:0}.slide-tools .carousel .viewport.dragging{cursor:grabbing}.slide-tools .carousel .viewport.dragging .track{pointer-events:none}body.tools-dragging,body.tools-dragging *{user-select:none!important}.tools-tip{z-index:60;pointer-events:none;background:var(--ink);color:var(--bg);font-family:var(--font-mono);letter-spacing:.05em;text-transform:uppercase;white-space:nowrap;opacity:0;transition:opacity .14s var(--ease);padding:6px 10px;font-size:12px;position:fixed;transform:translate(-50%,-100%)}.tools-tip:after{content:"";background:var(--ink);width:7px;height:7px;position:absolute;top:100%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.tools-tip.show{opacity:1}body[data-active="0"]{color:#111;--ink:#111;--ink-2:#4a4a47;--muted:#9a9892;--chrome-bg:#fff;--chrome-ink:#111;--chrome-ink-2:#4a4a47;--chrome-muted:#9a9892;--mark-bg:#0c1a33;--mark-ink:#fff;background-color:#fff}body[data-active="1"],body[data-active="2"]{color:#e7ebf3;--ink:#e7ebf3;--ink-2:#b3bccc;--muted:#6d7891;--bg:#0c1a33;--chrome-bg:#0c1a33;--chrome-ink:#e7ebf3;--chrome-ink-2:#b3bccc;--chrome-muted:#6d7891;--mark-bg:#0c1a33;--mark-ink:#e7ebf3}body{--rule-strong:color-mix(in srgb, #c9c7c1, #2f3e5e calc(var(--theme-navy,0) * 100%));--chrome-rule:color-mix(in srgb, #e6e4df, #1f2c47 calc(var(--theme-navy,0) * 100%));--rule:color-mix(in srgb, #e6e4df, #1f2c47 calc(var(--theme-navy,0) * 100%));--neutral-bg:color-mix(in srgb, #fff, #0c1a33 calc(var(--theme-navy,0) * 100%));--neutral-ink:color-mix(in srgb, #111, #e7ebf3 calc(var(--theme-navy,0) * 100%))}section.slide[data-bg="0"]{--ink:#0c1a33;--ink-2:#3f4d68;--muted:#8790a6}@media (width<=820px){:root{--chrome-h:60px;--chrome-w:60px}.site-sidebar,.theme-veil{display:none}section.slide[data-bg="0"]{--theme-navy:0;background:#fff}section.slide[data-bg="1"],section.slide[data-bg="2"]{--theme-navy:1;background:#0c1a33}section.slide{--rule:color-mix(in srgb, #e6e4df, #1f2c47 calc(var(--theme-navy,0) * 100%));--rule-strong:color-mix(in srgb, #c9c7c1, #2f3e5e calc(var(--theme-navy,0) * 100%));--chrome-rule:color-mix(in srgb, #e6e4df, #1f2c47 calc(var(--theme-navy,0) * 100%));--neutral-bg:color-mix(in srgb, #fff, #0c1a33 calc(var(--theme-navy,0) * 100%));--neutral-ink:color-mix(in srgb, #111, #e7ebf3 calc(var(--theme-navy,0) * 100%));color:var(--ink)}.contact-head{grid-template-columns:1fr;grid-template-areas:"tag""ttl""copy";gap:clamp(12px,3vw,20px)}.contact-head h2{max-width:none}section.slide.slide-contact{--ink:#e7ebf3;--ink-2:#b3bccc;--muted:#6d7891}.slide-contact .contact-footer{text-align:center;flex-wrap:wrap;justify-content:center;align-items:center;gap:clamp(6px,2vw,12px) clamp(16px,5vw,28px);height:auto;margin-top:clamp(180px,48vw,340px);padding:clamp(16px,5vw,24px) clamp(20px,5.5vw,32px);display:flex;position:static}.slide-contact .contact-footer .name{flex-basis:100%;justify-content:center}.slide-contact .contact-waves{height:clamp(420px,70dvh,660px);top:clamp(120px,32vw,220px);bottom:auto}.site-mark .mark-svg{width:30px}.site-header{color:#111;--chrome-ink:#111;--chrome-ink-2:#4a4a47;--chrome-muted:#9a9892;--chrome-rule:#e6e4df;background:#fff;border-bottom-color:#c9c7c1}.slides{scroll-snap-type:none;-webkit-overflow-scrolling:touch;left:0;overflow-x:hidden}section.slide{height:auto;min-height:calc(100dvh - var(--chrome-h));scroll-snap-align:none;scroll-snap-stop:normal;justify-content:flex-start;gap:clamp(22px,6vw,36px);padding:clamp(28px,7vw,44px) clamp(20px,5.5vw,32px)}section.slide:not(.slide-hero){min-height:0;padding-top:clamp(44px,12vw,76px);padding-bottom:clamp(44px,12vw,76px)}section.slide[data-bg="0"]+section.slide[data-bg="0"],section.slide[data-bg="1"]+section.slide[data-bg="1"],section.slide[data-bg="1"]+section.slide[data-bg="2"],section.slide[data-bg="2"]+section.slide[data-bg="1"],section.slide[data-bg="2"]+section.slide[data-bg="2"]{border-top:1px solid color-mix(in srgb, #c9c7c1, #2f3e5e calc(var(--theme-navy,0) * 100%))}.scroll-hint{display:none}section.slide.slide-hero{padding:clamp(28px,7vw,44px) 0 0}.slide-hero .hero-center{z-index:1;order:0;margin:0;padding:0 clamp(20px,5.5vw,32px);position:relative}.hero-sub{grid-template-columns:1fr;gap:20px}.hero-sub .cta-stack{align-items:flex-start}.slide-hero .hero-waves{z-index:0;-webkit-mask-composite:source-in;flex:auto;order:1;width:100%;height:auto;min-height:clamp(150px,26vh,290px);position:relative;inset:auto;mask-image:linear-gradient(90deg,#0000 0,#000 13% 87%,#0000 100%),linear-gradient(#0000 0,#000 14% 64%,#0000 100%);mask-composite:intersect}.hero-ctas{z-index:1;background:rgba(255, 255, 255, max(0, .4 - .5 * var(--theme-navy,0)));border-top:1px solid color-mix(in srgb, #e6e4df, #1f2c47 calc(var(--theme-navy,0) * 100%));border-bottom:1px solid color-mix(in srgb, #e6e4df, #1f2c47 calc(var(--theme-navy,0) * 100%));order:2;grid-template-columns:1fr 1fr;height:auto;margin-top:calc(-1*clamp(64px,17vw,104px));position:relative;bottom:auto;left:auto;right:auto}.hero-ctas a{min-height:60px;padding:clamp(15px,4.4vw,22px) clamp(20px,5.5vw,32px)}.hero-ctas a+a{border-left:0}.hero-ctas a:nth-child(odd){border-right:1px solid color-mix(in srgb, #e6e4df, #1f2c47 calc(var(--theme-navy,0) * 100%))}.hero-ctas a:first-child,.hero-ctas a:nth-child(2){border-bottom:1px solid color-mix(in srgb, #e6e4df, #1f2c47 calc(var(--theme-navy,0) * 100%))}section.slide.slide-skills{justify-content:flex-start}.skills-head{grid-template-columns:1fr;grid-template-areas:"tag""ttl""copy";align-items:start;gap:clamp(12px,3.5vw,20px)}.skills-text{column-count:1}.skills-cubes{grid-template-columns:repeat(2,1fr)}.skills-head h2,.tools-intro h2,.cv-head h2,.projects-head h2,.pgrid .projects-head h2,.contact-head h2{font-size:clamp(34px,9.4vw,42px);line-height:1.04}section.slide.slide-tools{flex-direction:column;align-items:stretch;display:flex}.cv-head{grid-template-columns:1fr;grid-template-areas:"tag""ttl""copy";align-items:start;gap:clamp(12px,3.5vw,20px)}.cv-row{grid-template-columns:1fr;gap:clamp(12px,3.4vw,18px)}.cv-left{flex-direction:column;gap:clamp(12px,3vw,16px);display:flex}.cv-row .yr{padding-top:0}.cv-row .blurb{max-width:none}.projects-head{grid-template-columns:1fr;grid-template-areas:"tag""ttl""copy";align-items:start;gap:clamp(12px,3.5vw,20px)}section.slide.slide-pgrid{justify-content:flex-start}.pgrid{grid-template-columns:repeat(2,1fr)}body.menu-open .slides{overflow:hidden}}
