@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Space+Grotesk:wght@400;500;600;700&family=Instrument+Serif:ital@0;1&display=swap');
:root{--bg:#101311;--fg:#f1f3e9;--muted:#a6afa3;--line:#343d32;--accent:#c0ee80;--panel:#191f18;--serif:'Instrument Serif',Georgia,serif;--sans:'DM Sans',Arial,sans-serif;--display:'Space Grotesk',Arial,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:110px}body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--sans);font-size:16px;line-height:1.6}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:6px}button{border:0;background:none}::selection{background:var(--accent);color:var(--bg)}.skip{position:fixed;top:-100px;left:20px;z-index:99;background:var(--accent);color:var(--bg);padding:10px}.skip:focus{top:10px}.concept-bar{background:var(--fg);color:var(--bg);display:flex;align-items:center;justify-content:space-between;padding:8px 4.5%;font-size:11px;letter-spacing:.05em;gap:12px}.concept-bar nav{display:flex;gap:22px}.concept-bar a{opacity:.55}.concept-bar a[aria-current]{opacity:1;text-decoration:underline;text-underline-offset:4px}.wrap{width:91%;max-width:1500px;margin:auto}.site-nav{display:flex;align-items:center;justify-content:space-between;padding:26px 0;border-bottom:1px solid var(--line);gap:20px}.brand{font:600 20px var(--display);letter-spacing:-1px}.brand span{color:var(--accent)}.site-nav nav{display:flex;gap:30px;font-size:13px}.nav-contact{border-bottom:1px solid var(--accent);padding-bottom:4px}.eyebrow,.mono{font:11px/1.6 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.1em;text-transform:uppercase}.eyebrow{color:var(--muted)}.status{display:flex;align-items:center;gap:9px}.status:before{content:'';width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 12%,transparent)}.hero{position:relative;padding-top:55px}.hero-top{display:flex;justify-content:space-between;align-items:center}.hero h1{font:500 clamp(58px,7.6vw,128px)/.97 var(--display);letter-spacing:-.065em;margin:47px 0 28px;max-width:1050px}.hero h1 em{font-style:normal;color:var(--accent)}.intro{max-width:440px;color:var(--muted);font-size:16px;line-height:1.7}.intro strong{color:var(--fg);font-weight:500}.actions{display:flex;gap:24px;align-items:center;margin-top:30px;flex-wrap:wrap}.primary{display:inline-flex;align-items:center;justify-content:space-between;gap:36px;background:var(--accent);color:var(--bg);padding:15px 22px;font-size:13px;font-weight:600;border:1px solid var(--accent);transition:transform .25s}.primary:hover{transform:translateY(-3px)}.text-link{font-size:13px;border-bottom:1px solid var(--line);padding:8px 0}.text-link:hover{border-color:var(--accent)}.hero-bottom{display:flex;justify-content:space-between;align-items:end;border-bottom:1px solid var(--line);padding:35px 0 28px;margin-top:38px;gap:24px}.hero-bottom p{margin:0;max-width:370px;font-size:12px;color:var(--muted)}.scroll-cue{font-size:12px}.audience{display:inline-flex;border:1px solid var(--line);padding:4px;gap:4px}.audience button{padding:8px 15px;font-size:12px}.audience button[aria-pressed=true]{color:var(--bg);background:var(--fg)}.section{padding:92px 0;border-bottom:1px solid var(--line)}.section-heading{display:flex;justify-content:space-between;align-items:end;gap:30px;margin-bottom:40px}.section h2{font:500 clamp(38px,4.7vw,76px)/1.07 var(--display);letter-spacing:-.055em;margin:12px 0 0}.section-heading>p{max-width:330px;color:var(--muted);font-size:14px;margin:0}.project{display:grid;grid-template-columns:1fr 1fr;min-height:390px;border-top:1px solid var(--line);gap:6%;padding:35px 0 45px}.project-copy{display:flex;flex-direction:column;align-items:start;justify-content:center}.project-copy h3{font:500 clamp(30px,3vw,46px)/1.1 var(--display);letter-spacing:-.045em;margin:17px 0}.project-copy p{max-width:440px;color:var(--muted);font-size:14px;margin:0 0 20px}.project-no{font:11px ui-monospace,monospace;color:var(--muted)}.project-tag{font-size:11px;padding:5px 9px;border:1px solid var(--line);margin-bottom:12px}.project-links{display:flex;gap:22px;align-items:center;margin-top:20px}.project-links button{border-bottom:1px solid var(--accent);padding:5px 0;font-size:13px}.project-links a{font-size:12px;color:var(--muted)}.project-art{position:relative;min-height:320px;overflow:hidden;background:var(--panel);border:1px solid var(--line);display:flex;align-items:center;justify-content:center}.project-art .art-caption{position:absolute;bottom:18px;left:22px;font:10px ui-monospace,monospace;letter-spacing:.08em;color:var(--muted)}.project-art .art-mark{position:absolute;top:18px;right:20px;font:11px ui-monospace,monospace;color:var(--muted)}.project-art svg{width:90%;height:240px}.diagram-line{stroke:var(--accent);stroke-width:1;fill:none}.flow-path{stroke-dasharray:8 14;animation:flow 10s linear infinite}.diagram-dot{fill:var(--accent)}.diagram-text{fill:var(--fg);font:11px ui-monospace,monospace}.diagram-sub{fill:var(--muted);font:9px ui-monospace,monospace}.orbit{animation:orbit 30s linear infinite;transform-origin:250px 130px}.pulse{animation:pulse 3s ease-in-out infinite}.services{display:grid;grid-template-columns:1fr 2fr;gap:10%}.services-intro{color:var(--muted);max-width:330px;font-size:14px}.services details{border-top:1px solid var(--line);padding:24px 0}.services summary{list-style:none;cursor:pointer;font:500 clamp(24px,2.7vw,40px) var(--display);letter-spacing:-.04em;display:flex;justify-content:space-between;gap:20px}.services summary::-webkit-details-marker{display:none}.services summary:after{content:'↗';color:var(--accent);font-size:24px}.services details[open] summary:after{content:'−'}.services details p{color:var(--muted);max-width:550px;font-size:14px}.about-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:12%}.about-statement{font:400 clamp(32px,3.6vw,57px)/1.16 var(--serif);letter-spacing:-.025em;margin:24px 0}.about-body{color:var(--muted);font-size:14px;max-width:490px}.experience-row{border-top:1px solid var(--line);padding:20px 0;display:flex;gap:30px;justify-content:space-between}.experience-row p{margin:0}.experience-row small{font-size:11px;color:var(--muted)}.experience-row strong{font-size:14px;font-weight:500}.experience-row .role{color:var(--muted);font-size:12px}.toolkit{margin-top:40px}.toolkit p{font-size:13px;color:var(--muted)}.recognition{border-left:2px solid var(--accent);padding-left:20px;margin-top:30px}.recognition p{font-size:12px;color:var(--muted)}.contact{padding:85px 0 60px}.contact h2{font:500 clamp(55px,7.7vw,120px)/1 var(--display);letter-spacing:-.065em;margin:30px 0}.contact-top{display:flex;justify-content:space-between;align-items:center}.contact .contact-note{color:var(--muted);font-size:14px;max-width:420px}.email-row{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.email{font-size:clamp(17px,2.3vw,36px);letter-spacing:-.045em}.copy-email{color:var(--muted);font-size:11px;border:1px solid var(--line);padding:7px 12px}.footer{border-top:1px solid var(--line);padding:24px 0;display:flex;justify-content:space-between;gap:20px;font-size:11px;color:var(--muted)}.socials{display:flex;gap:24px}.motion-toggle{font-size:11px;color:var(--muted);padding:0}.modal{max-width:770px;width:calc(100% - 36px);background:var(--bg);color:var(--fg);border:1px solid var(--line);padding:42px;max-height:85svh;overflow:auto}.modal::backdrop{background:#000b;backdrop-filter:blur(7px)}.modal-close{float:right;font-size:13px;border:1px solid var(--line);padding:6px 14px}.modal h2{font:500 44px var(--display);letter-spacing:-.05em;margin:30px 0 20px}.modal h3{font-size:12px;letter-spacing:.09em;text-transform:uppercase;margin-top:28px;color:var(--accent)}.modal p{color:var(--muted);font-size:14px}.modal a{display:inline-block;margin:20px 25px 0 0;border-bottom:1px solid var(--accent);font-size:13px}.modal .modal-note{font-size:11px;border-top:1px solid var(--line);padding-top:15px;margin-top:30px}.reveal{transition:opacity .7s,transform .7s}.js-motion .reveal{opacity:0;transform:translateY(25px)}.js-motion .reveal.visible{opacity:1;transform:none}.no-motion *, .no-motion *:before,.no-motion *:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.no-motion .reveal{opacity:1;transform:none}.site-progress{position:fixed;top:0;left:0;width:var(--progress,0%);height:2px;background:var(--accent);z-index:100}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
/* 01 — SIGNAL: a quiet engineering studio with a living signal field. */
.signal .hero{min-height:690px}.signal .hero-copy{position:relative;z-index:2;width:66%;pointer-events:none}.signal .hero-copy a,.signal .hero-copy button{pointer-events:auto}.signal .hero h1{font-size:clamp(60px,7.7vw,124px);max-width:920px}.signal .hero h1 .serif{font-family:var(--serif);font-weight:400;letter-spacing:-.045em}.signal .intro{max-width:430px}.signal-field{position:absolute;right:-2%;top:125px;width:49%;height:470px;opacity:.9}.signal-field canvas{width:100%;height:100%;display:block}.field-label{position:absolute;right:20px;top:38px;color:var(--muted)}.field-bottom{position:absolute;bottom:30px;left:35%;font:10px ui-monospace,monospace;color:var(--accent)}.signal .hero-bottom{position:relative;z-index:3;margin-top:35px}.signal .hero-top{position:relative;z-index:3}.signal .work{padding-top:65px}.signal .project:nth-of-type(even) .project-art{order:-1}.signal .project:nth-of-type(even){grid-template-columns:1fr 1fr}.signal .project:nth-of-type(even) .project-copy{padding-left:5%}
/* 02 — FIELDNOTES: an engineer's illustrated journal. */
.fieldnotes{--bg:#f0eee5;--fg:#252b23;--muted:#666d61;--line:#c6cabc;--accent:#305c35;--panel:#e2e7d8}.fieldnotes .brand{font-family:var(--serif);font-size:27px;font-weight:400;letter-spacing:-.04em}.fieldnotes .concept-bar{background:#305c35;color:#f0eee5}.fieldnotes .hero{padding-top:36px}.fieldnotes .hero-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:6%;align-items:center}.fieldnotes .hero h1{font:400 clamp(65px,7.2vw,117px)/.96 var(--serif);letter-spacing:-.045em;margin-top:30px}.fieldnotes .hero h1 em{font-style:italic}.fieldnotes .intro{max-width:430px}.notebook{position:relative;aspect-ratio:1/1;max-height:505px;border:1px solid var(--line);background:repeating-linear-gradient(0deg,transparent,transparent 31px,#c6cabc55 32px),repeating-linear-gradient(90deg,transparent,transparent 31px,#c6cabc55 32px);margin:22px 0;overflow:hidden}.notebook svg{width:100%;height:100%}.notebook .sheet-label{position:absolute;top:18px;left:20px;color:var(--muted)}.notebook .sheet-foot{position:absolute;bottom:18px;right:20px;color:var(--accent);font-family:var(--serif);font-style:italic;font-size:19px}.notebook .core{animation:gentle-turn 18s ease-in-out infinite;transform-origin:250px 250px}.fieldnotes .hero-bottom{margin-top:30px}.fieldnotes .section h2{font:400 clamp(42px,5vw,80px)/1 var(--serif);letter-spacing:-.035em}.fieldnotes .project{grid-template-columns:.85fr 1.25fr;gap:8%;padding:40px 0 55px}.fieldnotes .project-copy h3{font:400 clamp(38px,4vw,60px)/1 var(--serif)}.fieldnotes .project-art{border:0;min-height:360px}.fieldnotes .project-tag{border:0;border-bottom:1px solid var(--line);padding:0 0 7px}.fieldnotes .about-statement{font-size:clamp(36px,4vw,62px)}.fieldnotes .contact h2{font:400 clamp(60px,8.5vw,140px)/.97 var(--serif);letter-spacing:-.035em}.fieldnotes .services summary{font-family:var(--serif);font-weight:400;font-size:clamp(29px,3.2vw,45px)}
/* 03 — MOMENTUM: cobalt, oversized typography and a tactile project reel. */
.momentum{--bg:#e9e9e4;--fg:#1724bb;--muted:#555b86;--line:#b7bbd4;--accent:#1828dc;--panel:#dcded9}.momentum .concept-bar{background:#1724bb;color:#f4f4e9}.momentum .hero-top{margin-bottom:25px}.momentum .hero{padding-top:30px}.momentum .hero h1{font:700 clamp(86px,14.2vw,230px)/.83 var(--display);text-transform:uppercase;letter-spacing:-.09em;margin:28px 0 20px;position:relative;z-index:2;pointer-events:none}.momentum .hero h1 .outline{-webkit-text-stroke:1.5px var(--fg);color:transparent}.momentum .hero h1 .line-two{display:flex;align-items:center;gap:30px}.momentum .hero h1 .asterisk{font-family:Arial,sans-serif;font-size:.7em;line-height:.7;display:inline-block;animation:spin 18s linear infinite;transform-origin:50% 40%}.momentum .hero-lower{display:grid;grid-template-columns:1fr 1fr;gap:8%;align-items:center;margin-top:35px}.momentum .hero-lower .intro{margin:0}.momentum .primary{color:#f5f5eb}.momentum .hero-bottom{margin-top:30px}.momentum .project-deck{position:relative;background:var(--fg);color:#e9e9e4;min-height:225px;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between;padding:24px;isolation:isolate}.deck-orbit{position:absolute;right:35px;top:-35px;width:245px;height:245px;border:1px solid #b5ff49;border-radius:50%;transform:rotateX(60deg) rotateZ(25deg);box-shadow:0 0 0 25px #b5ff4910,0 0 0 50px #b5ff4910,0 0 0 75px #b5ff4910;z-index:-1;animation:deck 10s ease-in-out infinite}.deck-title{font:500 40px var(--display);letter-spacing:-.055em;margin:0}.deck-bottom{display:flex;align-items:end;justify-content:space-between}.deck-bottom button{width:36px;height:36px;border:1px solid #e9e9e460;margin-left:7px}.deck-desc{max-width:230px;font-size:12px;line-height:1.5}.momentum .project-art{border:0;background:#d5d8f4}.momentum .project-art.paleskies{background:#c5de9a}.momentum .project-art.stock{background:#ded0ed}.momentum .section h2{font-weight:700;text-transform:uppercase;font-size:clamp(40px,6vw,95px)}.momentum .project-copy h3{font-weight:600}.momentum .project{padding:40px 0;gap:10%}.momentum .project:nth-of-type(odd) .project-art{order:-1}.momentum .contact{background:var(--fg);color:#e9e9e4;margin:0 -4.945%;padding:70px 4.945%}.momentum .contact .eyebrow,.momentum .contact .contact-note,.momentum .contact .copy-email{color:#c2c6ee}.momentum .contact h2{font-weight:700;text-transform:uppercase}.momentum .contact .primary{background:#c4fa6d;color:#1724bb;border-color:#c4fa6d}.momentum .footer{padding-top:28px}.momentum .modal{--bg:#e9e9e4;--fg:#1724bb}
@keyframes flow{to{stroke-dashoffset:-220}}@keyframes pulse{50%{opacity:.35}}@keyframes orbit{to{transform:rotate(360deg)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes gentle-turn{50%{transform:rotate(10deg)}}@keyframes deck{50%{transform:rotateX(65deg) rotateZ(100deg)}}
@media(min-width:1600px){.hero{padding-top:70px}.signal .hero{min-height:790px}}
@media(max-width:850px){.site-nav nav{gap:18px}.signal .hero-copy{width:80%}.signal-field{right:-4%;width:58%;opacity:.55}.hero h1{font-size:75px}.section{padding:65px 0}.section-heading{align-items:start}.section-heading>p{max-width:240px}.project{gap:5%}.project-art{min-height:300px}.services{grid-template-columns:1fr;gap:20px}.services-intro{max-width:530px}.about-grid{gap:7%}.fieldnotes .hero-grid{gap:3%}.fieldnotes .hero h1{font-size:75px}.momentum .hero h1{font-size:14vw}.momentum .hero-lower{gap:5%}.email{font-size:25px}}
@media(max-width:600px){html{scroll-padding-top:30px}.wrap{width:89%}.concept-bar{padding:9px 5.5%;font-size:10px}.concept-bar>span{display:none}.concept-bar nav{width:100%;justify-content:space-between;gap:10px}.site-nav{padding:21px 0}.site-nav .brand{font-size:18px}.site-nav nav{font-size:12px;gap:17px}.site-nav nav .about-nav{display:none}.hero{padding-top:28px}.hero-top{gap:15px;align-items:start}.hero-top>.eyebrow:last-child{max-width:120px;text-align:right}.hero h1{font-size:61px;margin-top:30px}.intro{font-size:14px}.signal .hero{min-height:0}.signal .hero-copy{width:100%}.signal .hero h1{font-size:clamp(52px,12.6vw,78px);margin-top:35px}.signal-field{position:relative;top:auto;right:auto;width:100%;height:255px;opacity:.9;margin-top:-10px}.signal .hero-bottom{margin-top:0}.signal .intro{max-width:330px}.field-label{top:12px;right:0}.field-bottom{bottom:8px;left:auto;right:0}.hero-bottom{display:block;padding:24px 0}.hero-bottom>p{margin-top:20px;max-width:100%}.scroll-cue{display:none}.section{padding:52px 0}.section-heading{display:block;margin-bottom:28px}.section-heading>p{margin-top:20px;max-width:100%;font-size:13px}.section h2{font-size:43px}.project,.fieldnotes .project,.signal .project:nth-of-type(even){grid-template-columns:1fr;gap:25px;padding:28px 0 35px;min-height:0}.project-art,.fieldnotes .project-art{order:-1!important;min-height:255px}.project-art svg{height:220px}.project-copy h3{margin:12px 0}.project-copy p{font-size:13px}.signal .project:nth-of-type(even) .project-copy{padding-left:0}.project-links{margin-top:5px}.project-tag{margin-bottom:10px}.services summary{font-size:28px}.about-grid{grid-template-columns:1fr;gap:30px}.about-statement{font-size:38px}.contact{padding:55px 0 40px}.contact-top{display:block}.contact .contact-note{margin-top:22px}.contact h2{font-size:57px;margin-top:15px}.email{font-size:20px;letter-spacing:-.04em}.email-row{gap:12px}.footer{flex-wrap:wrap;font-size:10px}.socials{gap:20px}.fieldnotes .hero-grid{grid-template-columns:1fr}.fieldnotes .hero h1{font-size:74px;margin-bottom:22px}.notebook{margin-top:35px;max-height:350px;aspect-ratio:1.1}.fieldnotes .hero-bottom{margin-top:0}.fieldnotes .section h2{font-size:50px}.fieldnotes .project-copy h3{font-size:43px}.fieldnotes .contact h2{font-size:67px}.momentum .hero h1{font-size:17.2vw;margin:32px 0;line-height:.9}.momentum .hero h1 .line-two{gap:12px}.momentum .hero-lower{grid-template-columns:1fr;gap:25px}.momentum .project-deck{min-height:205px}.momentum .hero-bottom{margin-top:25px}.momentum .section h2{font-size:44px}.momentum .contact{margin:0 -6.18%;padding:55px 6.18%}.momentum .contact h2{font-size:59px}.modal{padding:24px}.modal h2{font-size:36px}.actions{gap:20px;margin-top:23px}.primary{padding:13px 18px}.experience-row{gap:15px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.js-motion .reveal{opacity:1;transform:none}}

@media(min-width:851px){.signal .hero{padding-top:35px}.signal .hero h1{font-size:clamp(60px,6.8vw,112px);margin-top:32px;margin-bottom:22px}.signal .signal-field{top:100px}}
.deck-bottom>div:last-child{display:flex;flex-shrink:0}
@media(max-width:600px){.deck-desc{max-width:190px}.email{font-size:clamp(15px,4.5vw,20px)}}
@media(max-width:380px){.momentum .contact h2{font-size:48px}}
