:root{--paper: #fbf6ee;--paper-2: #fffdfa;--ink: #16141c;--ink-2: #4e4a5c;--ink-3: #8b8697;--line: #e7ded0;--mint: #8ce8c9;--sky: #9ec9ff;--lilac: #c9b6ff;--peach: #ffb49b;--butter: #ffd971;--rose: #ffaed3;--display: "Bricolage Grotesque", "Segoe UI", sans-serif;--serif: "Instrument Serif", Georgia, serif;--body: "Work Sans", system-ui, sans-serif;--mono: "Space Mono", ui-monospace, Consolas, monospace;--wrap: 1120px;--r: 20px;--ease: cubic-bezier(.22, 1, .36, 1)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--body);font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}h1,h2,h3{font-family:var(--display);font-weight:800;letter-spacing:-.035em;line-height:1.02;margin:0}p{margin:0}ul{list-style:none;margin:0;padding:0}a{color:inherit;text-decoration:none}::selection{background:var(--lilac);color:var(--ink)}:focus-visible{outline:2.5px solid var(--ink);outline-offset:3px;border-radius:6px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.wrap{max-width:var(--wrap);margin:0 auto;padding:110px 26px;position:relative}section[id]{scroll-margin-top:92px}.grain{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9998;pointer-events:none;opacity:.055;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)'/%3E%3C/svg%3E")}.progress{position:fixed;top:0;left:0;right:0;height:3px;z-index:9999;background:linear-gradient(90deg,var(--lilac),var(--sky),var(--mint),var(--butter));transform:scaleX(0);transform-origin:0 50%}.cursor{position:fixed;top:0;left:0;z-index:9997;pointer-events:none;width:34px;height:34px;border-radius:50%;border:1.5px solid var(--ink);opacity:0;transition:width .28s var(--ease),height .28s var(--ease),background .28s var(--ease),opacity .3s}.cursor.is-on{opacity:.55}.cursor.is-hot{width:58px;height:58px;background:var(--lilac);opacity:.4}.reveal{opacity:0;transform:translateY(26px);transition:opacity .75s var(--ease) var(--d, 0ms),transform .75s var(--ease) var(--d, 0ms)}.reveal.is-in{opacity:1;transform:none}.words{display:inline}.word{display:inline-block;overflow:hidden;vertical-align:bottom;padding-right:.22em}.word-in{display:inline-block;transform:translateY(105%);animation:rise .95s var(--ease) forwards}@keyframes rise{to{transform:translateY(0)}}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}.word-in{animation:none;transform:none}.reveal,.reveal-tilt{opacity:1;transform:none;transition:none}.blob,.ping,.doodle,.cue-line{animation:none!important}.blob,.doodle{translate:none!important}.project-sticky{position:static}}.nav{position:sticky;top:0;z-index:900;display:flex;align-items:center;justify-content:space-between;gap:18px;max-width:var(--wrap);margin:0 auto;padding:18px 26px;background:color-mix(in srgb,var(--paper) 82%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.brand{font-family:var(--display);font-weight:800;font-size:1.35rem;letter-spacing:-.05em}.brand-dot{color:var(--peach)}.nav-pills{display:flex;gap:4px;padding:5px;border:1.5px solid var(--line);border-radius:999px;background:var(--paper-2)}.nav-pills a{font-family:var(--mono);font-size:.72rem;text-transform:uppercase;letter-spacing:.09em;padding:7px 15px;border-radius:999px;color:var(--ink-3);transition:color .25s,background .35s var(--ease)}.nav-pills a:hover{color:var(--ink)}.nav-pills a.is-active{background:var(--ink);color:var(--paper)}.btn{display:inline-flex;align-items:center;gap:9px;font-family:var(--mono);font-size:.82rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;padding:15px 28px;border-radius:999px;border:1.5px solid var(--ink);cursor:pointer;background:none;color:var(--ink)}.btn-dark{background:var(--ink);color:var(--paper)}.btn-dark:hover{background:var(--lilac);color:var(--ink)}.btn-line:hover{background:var(--butter)}.btn-sm{padding:10px 20px;font-size:.72rem}.magnetic{transition:transform .35s var(--ease),background .3s,color .3s;will-change:transform}.hero{position:relative;max-width:var(--wrap);margin:0 auto;padding:70px 26px 90px;overflow:hidden}.blob{position:absolute;border-radius:50%;filter:blur(70px);opacity:.5;pointer-events:none;z-index:-1}.blob-1{width:420px;height:420px;background:var(--lilac);top:-110px;right:-60px;animation:drift 17s ease-in-out infinite;translate:0 calc(var(--sy, 0) * .28px)}.blob-2{width:340px;height:340px;background:var(--mint);top:190px;left:-130px;animation:drift 21s ease-in-out infinite reverse;translate:0 calc(var(--sy, 0) * .16px)}.blob-3{width:300px;height:300px;background:var(--peach);bottom:-110px;right:24%;animation:drift 25s ease-in-out infinite;translate:0 calc(var(--sy, 0) * -.12px)}@keyframes drift{0%,to{transform:translate(0) scale(1)}33%{transform:translate(38px,-32px) scale(1.12)}66%{transform:translate(-30px,26px) scale(.92)}}.status-pill{display:inline-flex;align-items:center;gap:10px;font-family:var(--mono);font-size:.74rem;text-transform:uppercase;letter-spacing:.12em;padding:8px 17px;border:1.5px solid var(--ink);border-radius:999px;background:var(--paper-2);margin-bottom:30px}.ping{width:8px;height:8px;border-radius:50%;background:#16a34a;animation:ping 1.7s ease-in-out infinite}@keyframes ping{0%,to{box-shadow:0 0 #16a34a8c}70%{box-shadow:0 0 0 9px #16a34a00}}.display{font-size:clamp(3.4rem,13vw,9.5rem);letter-spacing:-.055em}.swipe{position:relative;display:inline-block;z-index:0}.swipe:before{content:"";position:absolute;left:-.06em;right:-.06em;top:.16em;bottom:.12em;background:var(--butter);border-radius:.14em;z-index:-1;transform:scaleX(0);transform-origin:left center;animation:swipe .85s .95s var(--ease) forwards}@keyframes swipe{to{transform:scaleX(1)}}.hero-foot{display:grid;grid-template-columns:1fr 1fr;gap:26px 50px;align-items:end;margin-top:46px;padding-top:30px;border-top:1.5px solid var(--line)}.hero-role{font-family:var(--serif);font-style:italic;font-size:clamp(1.5rem,3.2vw,2.3rem);line-height:1.15}.hero-tag{color:var(--ink-2);max-width:44ch}.hero-cta{grid-column:1 / -1;display:flex;gap:14px;flex-wrap:wrap}.band{border-block:1.5px solid var(--ink);background:var(--mint);padding:20px 0;overflow:hidden}.band-alt{background:var(--lilac);margin-top:40px}.marquee{display:flex;overflow:hidden}.marquee-track{display:flex;flex-shrink:0;gap:0;will-change:transform}.marquee-item{display:inline-flex;align-items:center;gap:30px;padding-right:30px;font-family:var(--display);font-weight:800;font-size:1.5rem;letter-spacing:-.03em;white-space:nowrap}.marquee-star{font-style:normal;font-size:.75rem;color:var(--ink-2)}@keyframes spin{to{transform:rotate(360deg)}}.doodle{position:absolute;width:38px;height:38px;fill:currentColor;stroke:currentColor;pointer-events:none;z-index:1}.d-hero-1{color:var(--peach);top:232px;right:168px;width:30px;height:30px;animation:spin 9s linear infinite;translate:0 calc(var(--sy, 0) * .22px)}.d-hero-2{color:var(--sky);top:60px;left:60%;width:26px;height:26px;animation:bob 6s ease-in-out infinite;translate:0 calc(var(--sy, 0) * -.16px)}.d-hero-3{color:var(--lilac);bottom:118px;left:8px;width:48px;height:48px;animation:bob 7.5s ease-in-out infinite .6s;translate:0 calc(var(--sy, 0) * .1px)}.d-awards-1{color:var(--butter);top:74px;right:26px;width:44px;height:44px;animation:spin 12s linear infinite}.d-awards-2{color:var(--rose);bottom:60px;left:10px;width:26px;height:26px;animation:bob 5.5s ease-in-out infinite}.d-contact-1{color:var(--mint);top:80px;right:40px;width:52px;height:52px;animation:bob 8s ease-in-out infinite}.d-contact-2{color:var(--peach);bottom:90px;right:16%;width:30px;height:30px;animation:spin 14s linear infinite reverse}@keyframes bob{0%,to{transform:translateY(0) rotate(-6deg)}50%{transform:translateY(-16px) rotate(8deg)}}.cue{display:flex;align-items:center;gap:12px;margin-top:54px;font-family:var(--mono);font-size:.7rem;text-transform:uppercase;letter-spacing:.18em;color:var(--ink-3)}.cue-line{width:52px;height:1.5px;background:var(--ink-3);transform-origin:left;animation:stretch 1.9s ease-in-out infinite}@keyframes stretch{0%,to{transform:scaleX(.35)}50%{transform:scaleX(1)}}.sec-title{display:flex;align-items:baseline;gap:18px;margin-bottom:54px}.sec-n{font-family:var(--mono);font-size:.78rem;font-weight:700;padding:5px 12px;border-radius:999px;background:var(--ink);color:var(--paper)}.sec-title h2{font-size:clamp(2.1rem,5.5vw,3.4rem)}.about{display:grid;grid-template-columns:1.35fr 1fr;gap:60px;align-items:start}.big{font-size:clamp(1.2rem,2.1vw,1.5rem);line-height:1.45;letter-spacing:-.015em}.dim{color:var(--ink-2);margin-top:20px!important}.about-stats{display:grid;grid-template-columns:1fr 1fr;gap:14px}.stat{padding:24px 20px;border:1.5px solid var(--ink);border-radius:var(--r);background:var(--paper-2);transition:transform .3s var(--ease),background .3s}.stat:nth-child(1):hover{background:var(--mint)}.stat:nth-child(2):hover{background:var(--butter)}.stat:nth-child(3):hover{background:var(--sky)}.stat:nth-child(4):hover{background:var(--rose)}.stat:hover{transform:translateY(-5px)}.counter{font-family:var(--display);font-weight:800;font-size:2.6rem;letter-spacing:-.05em;line-height:1}.counter-suffix{font-size:.6em}.stat-label{display:block;margin-top:8px;font-family:var(--mono);font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-3)}.stack{margin-top:70px;display:grid;gap:0;border-top:1.5px solid var(--line)}.stack-row{display:grid;grid-template-columns:210px 1fr;gap:22px;padding:20px 0;border-bottom:1.5px solid var(--line);align-items:baseline}.stack-row h3{font-size:1.05rem}.chips{display:flex;flex-wrap:wrap;gap:8px}.chips li{font-family:var(--mono);font-size:.76rem;padding:5px 13px;border:1.5px solid var(--line);border-radius:999px;background:var(--paper-2);transition:transform .25s var(--ease),background .25s,border-color .25s}.chips li:hover{transform:translateY(-3px) rotate(-2deg);background:var(--sky);border-color:var(--ink)}.chips.tiny li{font-size:.68rem;padding:4px 10px}.jobs{display:grid;gap:18px}.job{position:relative;overflow:hidden;border:1.5px solid var(--ink);border-radius:var(--r);background:var(--paper-2);padding:34px;transition:opacity .75s var(--ease) var(--d),transform .75s var(--ease) var(--d)}.job-bar{position:absolute;inset:0 auto 0 0;width:100%;background:var(--tint);transform:scaleX(0);transform-origin:left;transition:transform .55s var(--ease);z-index:0}.job:hover .job-bar{transform:scaleX(1)}.job>*:not(.job-bar){position:relative;z-index:1}.job-head{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;align-items:baseline}.job-head h3{font-size:clamp(1.25rem,2.4vw,1.75rem)}.job-co{font-family:var(--mono);font-size:.78rem;color:var(--ink-2);margin-top:8px!important}.dot{color:var(--ink-3)}.period{font-family:var(--mono);font-size:.74rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-2);white-space:nowrap}.bullets{display:grid;gap:11px;margin-top:22px!important}.bullets li{position:relative;padding-left:26px;color:var(--ink-2);font-size:.95rem}.bullets li:before{content:"";position:absolute;left:0;top:.62em;width:13px;height:1.5px;background:var(--ink)}.projects{display:grid;gap:24px}@media (min-height: 720px){.project-sticky{position:sticky;top:calc(100px + var(--i) * 18px)}}.reveal-tilt{transform:translateY(42px) rotate(-1.4deg) scale(.96)}.reveal-tilt.is-in{transform:none}.swipe-hint{display:none}.tilt{perspective:1100px}.tilt-inner{position:relative;overflow:hidden;height:100%;display:flex;flex-direction:column;border:1.5px solid var(--ink);border-radius:var(--r);background:var(--paper-2);padding:30px;transform:rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg));transition:transform .35s var(--ease),box-shadow .35s var(--ease);transform-style:preserve-3d}.tilt:hover .tilt-inner{box-shadow:10px 12px 0 var(--tint, var(--lilac))}.tilt-inner:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:0;background:radial-gradient(340px circle at var(--mx, 50%) var(--my, 50%),color-mix(in srgb,var(--tint, var(--lilac)) 55%,transparent),transparent 62%);transition:opacity .35s}.tilt:hover .tilt-inner:before{opacity:1}.tilt-inner>*{position:relative;z-index:1}.project-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.project-n{font-family:var(--display);font-weight:800;font-size:2.4rem;letter-spacing:-.06em;line-height:1;-webkit-text-stroke:1.5px var(--ink);color:transparent}.project h3{font-size:1.5rem}.blurb{color:var(--ink-2);font-size:.95rem;margin-top:8px!important}.project .chips{margin-top:auto;padding-top:22px}.project-links{display:flex;gap:18px;margin-top:auto;padding-top:22px;font-family:var(--mono);font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em}.project-links a{border-bottom:1.5px solid var(--ink);padding-bottom:2px}.project-links a:hover{color:var(--ink-2)}.awards-intro{font-family:var(--serif);font-style:italic;font-size:clamp(1.25rem,2.6vw,1.7rem);line-height:1.3;color:var(--ink-2);max-width:30ch;margin-bottom:40px}.awards{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:16px}.award{display:flex;gap:18px;align-items:flex-start;border:1.5px solid var(--ink);border-radius:var(--r);background:var(--paper-2);padding:24px;transition:opacity .7s var(--ease) var(--d),transform .45s var(--ease),background .35s}.award:hover{transform:translateY(-6px) rotate(-1.4deg);background:var(--tint)}.award-place{flex-shrink:0;font-family:var(--display);font-weight:800;font-size:1.1rem;padding:7px 14px;border-radius:999px;background:var(--tint);border:1.5px solid var(--ink);transition:background .35s}.award:hover .award-place{background:var(--paper-2)}.award p{font-size:.95rem;line-height:1.45}.contact-sec{padding-bottom:70px}.contact{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:start}.shout{font-family:var(--display);font-weight:800;font-size:clamp(2.2rem,5.2vw,3.6rem);letter-spacing:-.045em;line-height:1.02}.q{color:var(--peach)}.links{margin-top:30px;display:flex;flex-wrap:wrap;gap:8px}.links li{font-family:var(--mono);font-size:.86rem;border:1.5px solid var(--ink);border-radius:999px;background:var(--paper-2);transition:background .25s var(--ease),transform .25s var(--ease)}.links li a{display:block;padding:9px 16px}.links li:hover{background:var(--butter);transform:translateY(-3px)}.links .wide:hover{background:var(--mint)}.form{display:grid;gap:16px}.hp{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden}.field{display:grid;gap:7px}.field span{font-family:var(--mono);font-size:.7rem;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-3)}input,textarea{width:100%;font-family:var(--body);font-size:1rem;color:var(--ink);background:var(--paper-2);border:1.5px solid var(--ink);border-radius:14px;padding:14px 16px;resize:vertical;transition:box-shadow .25s var(--ease),background .25s}input:focus,textarea:focus{outline:none;background:#fff;box-shadow:5px 5px 0 var(--sky)}.form .btn{justify-self:start}.status{font-family:var(--mono);font-size:.8rem;color:var(--ink-2)}footer{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;max-width:var(--wrap);margin:0 auto;padding:30px 26px 44px;border-top:1.5px solid var(--line);font-family:var(--mono);font-size:.74rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-3)}@media (hover: none){.job.is-near .job-bar{transform:scaleX(1)}.tilt-inner.is-near{box-shadow:9px 10px 0 var(--tint, var(--lilac))}.tilt-inner.is-near:before{opacity:1;--mx: 20%;--my: 0%}.award.is-near{background:var(--tint);transform:translateY(-5px) rotate(-1.2deg)}.award.is-near .award-place{background:var(--paper-2)}.stat.is-near{transform:translateY(-4px)}.stat:nth-child(1).is-near{background:var(--mint)}.stat:nth-child(2).is-near{background:var(--butter)}.stat:nth-child(3).is-near{background:var(--sky)}.stat:nth-child(4).is-near{background:var(--rose)}}.btn:active,button:active,.chips li:active{transform:scale(.95)}@media (max-width: 900px){.about,.contact{grid-template-columns:1fr;gap:40px}.hero-foot{grid-template-columns:1fr}.stack-row{grid-template-columns:1fr;gap:12px}}@media (max-width: 620px){body{font-size:16px}.wrap{padding:72px 20px}.hero{padding:40px 20px 66px}.nav{padding:14px 20px;flex-wrap:wrap}.nav-pills{order:3;width:100%;justify-content:space-between}.nav-pills a{padding:7px 10px;font-size:.66rem}.about-stats{grid-template-columns:1fr 1fr}.job,.tilt-inner,.award{padding:24px}.projects{grid-auto-flow:column;grid-auto-columns:84%;gap:14px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scroll-padding-left:20px;-webkit-overflow-scrolling:touch;scrollbar-width:none;margin-inline:-20px;padding:4px 20px 14px}.projects::-webkit-scrollbar{display:none}.project-sticky{position:static;scroll-snap-align:start;height:auto}.project-sticky>.reveal,.project-sticky .tilt{height:100%}.projects .tilt-inner{padding:22px}.projects .project h3{font-size:1.3rem}.projects .blurb{font-size:.88rem}.projects .bullets{gap:8px;margin-top:16px!important}.projects .bullets li{font-size:.875rem;padding-left:22px}.swipe-hint{display:flex;align-items:center;gap:8px;margin:-22px 0 18px;font-family:var(--mono);font-size:.7rem;text-transform:uppercase;letter-spacing:.16em;color:var(--ink-3)}.swipe-hint span{animation:nudge 1.6s ease-in-out infinite}@keyframes nudge{0%,to{transform:translate(0)}50%{transform:translate(6px)}}.sec-title{margin-bottom:38px}.cursor{display:none}.marquee-item{font-size:1.2rem;gap:20px;padding-right:20px}.d-hero-1{right:20px;top:200px}.d-hero-2{left:auto;right:78px;top:44px}.d-hero-3{display:none}.d-awards-1{right:14px;top:62px;width:34px;height:34px}.contact-sec{padding-top:66px;padding-bottom:54px}.contact-sec .sec-title,.contact-sec .doodle{display:none}.contact-sec>.contact{gap:36px;margin-top:0}.contact-sec .prose{display:none}.shout{font-size:2.25rem}.links{margin-top:32px;display:grid;grid-template-columns:1fr 1fr;gap:10px}.links li{font-size:.8rem;text-align:center}.links li a{padding:12px}.links .wide{grid-column:1 / -1}.form{grid-template-columns:1fr 1fr;gap:14px}.field span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.field-msg,.form .btn,.status{grid-column:1 / -1}input,textarea{padding:14px 15px;font-size:.95rem;border-radius:12px}.form .btn{padding:15px 26px;margin-top:4px}}
