:root{color-scheme:light;--paper:#f5f2eb;--ink:#30322d;--muted:#696c63;--line:#d7d7cb;--accent:#9a553c;--serif:Georgia,"Times New Roman",serif;--sans:Inter,"Segoe UI",Arial,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:34px}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.7 var(--sans)}a{color:inherit;text-decoration:none}a:focus-visible{outline:2px solid var(--accent);outline-offset:6px}a:hover{color:var(--accent)}.netcom-link{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}.netcom-link span{font-size:.85em}::selection{background:#e4b89a;color:#282c25}h1,h2,h3,p{margin:0}h1,h2,h3{line-height:1.2}svg{display:block}em{font-weight:400}.page-shell{max-width:1240px;padding:0 64px;margin:auto}.skip-link{position:fixed;top:-80px;left:15px;background:var(--ink);color:#fff;padding:12px;z-index:10}.skip-link:focus{top:10px}.site-header{min-height:104px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:24px}.wordmark{font-family:var(--serif);font-size:29px;letter-spacing:-1.3px}.wordmark span{color:var(--accent)}nav{display:flex;gap:34px;font-size:13px}nav a:last-child{border-bottom:1px solid #adada0}.hero{padding:94px 0 100px;display:grid;grid-template-columns:1.65fr 1fr;gap:70px;align-items:center}.eyebrow,.project-category,.note-label{font-size:10px;letter-spacing:.1em;text-transform:uppercase;font-weight:600;color:var(--muted)}.hero .eyebrow{margin-bottom:25px}h1{font-family:var(--serif);font-size:clamp(44px,5.3vw,66px);font-weight:400;letter-spacing:-2.8px;line-height:1.09}h1 em{color:var(--accent)}.intro{max-width:450px;margin:27px 0 26px;font-size:16px;color:var(--muted);line-height:1.8}.inline-link{display:inline-flex;align-items:center;gap:22px;font-size:12px;font-weight:600;border-bottom:1px solid #adaf9f;padding-bottom:5px}.inline-link span{font-size:18px;font-weight:400}.desk-note{position:relative;background:#e9e8dc;border:1px solid #d7d8c7;box-shadow:4px 7px #e3e1d780;transform:rotate(2deg);padding:33px 28px 24px;max-width:320px;justify-self:end;margin-top:31px}.note-pin{position:absolute;top:-11px;left:calc(50% - 27px);height:24px;width:54px;background:#d3cbb4b3;transform:rotate(-7deg)}.note-label{margin-bottom:18px}.note-heading{font-family:var(--serif);font-size:29px;line-height:1.12;letter-spacing:-.6px;margin-bottom:18px}.desk-note>p:not(.note-label):not(.note-heading){font-size:12px;color:#626558;line-height:1.8}.note-bottom{margin-top:24px;border-top:1px solid #c7cbbb;padding-top:16px;display:grid;gap:1px;font-size:10px;color:#666a5c}.note-bottom strong{font-weight:600;color:#363e32;letter-spacing:.09em;font-size:12px}.note-signature{display:block;text-align:right;font-family:var(--serif);font-style:italic;font-size:27px;margin-top:12px;color:#70785d}.section-heading{display:flex;justify-content:space-between;align-items:baseline;gap:20px;margin-bottom:30px;border-top:1px solid var(--line);padding-top:28px}h2{font-family:var(--serif);font-weight:400;font-size:36px;letter-spacing:-1.2px}.section-heading h2 span{color:var(--accent)}.section-heading>p{font-size:11px;color:var(--muted)}.xr-visual{background:#35423a;color:#e0e3cf;min-height:354px;padding:20px 24px 17px;display:flex;flex-direction:column;overflow:hidden}.visual-top,.visual-caption{display:flex;align-items:center;justify-content:space-between;font-size:9px;letter-spacing:.07em}.visual-top{opacity:.75}.tiny-dots{font-size:7px;letter-spacing:4px}.cube-drawing{width:100%;max-height:300px;flex:1}.visual-caption{padding-top:12px;border-top:1px solid #667261;color:#d4d8bf;letter-spacing:.02em}.tech-list{list-style:none;display:flex;flex-wrap:wrap;gap:9px;padding:0;margin:20px 0 0;font-size:10px;color:#555b4e}.tech-list li+li:before{content:"·";margin-right:9px;color:#8d9183}.project-context{display:block;font-size:10px;color:#7b7d71;margin-top:18px}.project-art{height:252px;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;transition:background .2s}.project-art:hover{background:#e0dfd1}.art-arrow{position:absolute;right:18px;top:13px;font-size:24px;color:#535d4c;transition:transform .2s}.project-art:hover .art-arrow{transform:translate(3px,-3px)}.tracker-diagram{width:238px;text-align:center;color:#64705b;transform:rotate(-3deg)}.diagram-label{display:block;font-family:var(--serif);font-style:italic;font-size:19px;letter-spacing:0;margin-bottom:15px}.person-symbol{display:grid;place-items:center;width:62px;height:62px;border:1px solid #8d977f;border-radius:50%;margin:auto;background:#f1f0e6}.person-symbol svg{width:36px;fill:none;stroke:#66755a;stroke-width:1.5}.diagram-line{width:1px;height:23px;background:#9ba58f;margin:auto}.diagram-branches{position:relative;display:flex;justify-content:space-between;padding-top:12px}.diagram-branches:before{content:"";position:absolute;top:0;left:43px;right:43px;height:12px;border:1px solid #9ba58f;border-bottom:0}.diagram-branches span{position:relative;background:#f5f2eb;border:1px solid #b3b9a5;padding:5px 13px;font-size:10px;border-radius:3px}.layer-composition{position:relative;width:165px;height:153px;margin-bottom:12px}.layer{position:absolute;width:120px;height:120px;border:1px solid #b79980}.layer-back{left:38px;top:1px;background:#e5c7a6;transform:rotate(10deg)}.layer-middle{left:18px;top:14px;background:repeating-conic-gradient(#dfd9c7 0% 25%,#eee8d7 0% 50%) 50% / 18px 18px;transform:rotate(-4deg)}.layer-front{left:0;top:26px;background:#f7ebd4;transform:rotate(-12deg);box-shadow:3px 5px 8px #8b736323}.layer-front svg{width:100%;height:100%;image-rendering:pixelated}.art-note{position:absolute;bottom:15px;right:22px;font-family:var(--serif);font-size:15px;font-style:italic;color:#806450;transform:rotate(-4deg)}.playing-cards{height:86px;position:relative;margin-left:7px}.playing-cards span{position:absolute;top:7px;width:49px;height:68px;background:#faf8f0;border:1px solid #bfc1ad;border-radius:4px;padding:3px 8px;font:20px/1.1 var(--serif);transform:rotate(-15deg);color:#48583e}.playing-cards span+span{transform:rotate(12deg);left:33px;top:13px}.more-work{margin:24px 0 0}.experience-section{margin-top:89px}.experience-row{display:grid;grid-template-columns:155px 1.1fr 1fr;gap:24px;padding:25px 0;border-bottom:1px solid var(--line);align-items:baseline}.experience-row h3{font-size:13px;font-weight:600;margin-bottom:7px}.experience-row p{font-size:12px;color:var(--muted)}.experience-row .dates{font-size:10px;letter-spacing:.02em}.experience-row>div>p{font-size:11px}.about-section{margin:88px 0;display:grid;grid-template-columns:1fr 1.25fr;gap:86px}.about-heading .eyebrow{margin-bottom:20px}.about-heading h2{font-size:47px;line-height:1.1}.about-heading h2 em{color:var(--accent)}.about-flourish{display:block;font-family:var(--serif);font-style:italic;font-size:43px;color:#9ea189;transform:rotate(-8deg);margin:34px 0 0 25px;letter-spacing:10px}.about-copy>p{font-size:14px;color:var(--muted);line-height:1.85;margin-bottom:17px}.about-details{display:grid;grid-template-columns:1.3fr 1fr;gap:20px;border-top:1px solid var(--line);padding-top:20px;margin-top:28px}.about-details h3{font-size:10px;font-weight:600;margin-bottom:9px}.about-details p{font-size:11px;color:var(--muted)}footer{border-top:1px solid var(--line);padding:32px 0 38px;display:flex;align-items:end;justify-content:space-between;gap:25px}footer>div>p{font-size:12px;color:var(--muted);margin-bottom:5px}footer>div>a:not(.footer-links a){font:400 33px var(--serif);letter-spacing:-1px}.footer-links{display:grid;justify-items:end;gap:8px;font-size:11px}.footer-links>a{border-bottom:1px solid #a4a997}.footer-links>span{color:var(--muted);font-size:10px}.footer-links .illustration-note{font-size:9px;color:#808274}@media(min-width:1500px){.hero{padding-top:116px;padding-bottom:118px}}@media(max-width:1000px){.page-shell{padding:0 38px}.hero{gap:36px;grid-template-columns:1.4fr 1fr}.desk-note{padding:28px 22px 20px}.experience-row{grid-template-columns:130px 1fr 1fr}.about-section{gap:44px}}@media(max-width:720px){.page-shell{padding:0 24px}.site-header{min-height:84px}.wordmark{font-size:25px}nav{gap:20px;font-size:12px}.hero{padding:60px 0 66px;grid-template-columns:1fr;gap:30px}.hero .eyebrow{font-size:9px;letter-spacing:.07em}h1{font-size:57px;letter-spacing:-2.7px}.intro{font-size:15px;max-width:450px}.desk-note{max-width:none;width:100%;transform:rotate(-1deg);margin:0;padding:22px 25px;display:grid;grid-template-columns:1fr 1.2fr;gap:7px 25px}.note-label{grid-column:1/-1;margin:0 0 8px}.note-heading{font-size:25px;margin:0}.desk-note>p:not(.note-label):not(.note-heading){font-size:11px}.note-bottom{grid-column:2;margin:8px 0 0;padding-top:12px}.note-signature{grid-column:1;grid-row:4;align-self:end;text-align:left;margin:0}.section-heading{align-items:start;gap:10px}.section-heading>p{max-width:150px;font-size:10px;text-align:right}h2{font-size:31px}.xr-visual{min-height:310px}.cube-drawing{max-height:260px}.project-art{height:205px}.tracker-diagram{width:180px}.diagram-branches:before{left:34px;right:39px}.diagram-branches span{padding:5px 7px}.experience-section{margin-top:62px}.experience-row{grid-template-columns:1fr 2fr;gap:9px 22px}.experience-row>.experience-bullets{grid-column:2}.about-section{margin:64px 0;gap:30px;grid-template-columns:1fr}.about-flourish{display:none}.about-heading h2{font-size:41px}.about-heading h2 br{display:none}.about-copy{max-width:580px}}@media(max-width:450px){.page-shell{padding:0 20px}.site-header{gap:15px}nav{gap:15px;font-size:11px}.wordmark{font-size:23px}h1{font-size:46px;letter-spacing:-2px}.hero{padding-top:48px}.hero .eyebrow{font-size:8px}.desk-note{grid-template-columns:1fr;padding:24px;gap:12px}.note-heading{font-size:28px}.note-bottom{grid-column:1;margin-top:6px}.note-signature{display:none}.note-label{margin:0}.section-heading>p{max-width:105px;font-size:9px}.section-heading h2{font-size:29px}.project-art{height:240px}.playing-cards{margin-left:0;transform:scale(.8);transform-origin:left center}.experience-row{grid-template-columns:1fr;gap:10px}.experience-row>.experience-bullets{grid-column:1}.about-details{grid-template-columns:1fr;gap:19px}footer{align-items:start;flex-direction:column;gap:26px}.footer-links{justify-items:start}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important}}.progress-note{border-left:2px solid #a7af91;padding-left:14px;margin-top:23px}.progress-note strong{font-size:10px;font-weight:600;letter-spacing:.04em}.progress-note p{font-size:11px;color:var(--muted);line-height:1.8;margin-top:5px}.frugal-visual{display:flex;align-items:center;justify-content:center;min-width:0;padding:17px}.frugal-board{display:flex;flex-direction:column;width:100%;max-width:520px;height:100%;background:#faf9f2;border:1px solid #c9cfbb;box-shadow:7px 8px #d5dcc9;transform:rotate(-1deg)}.frugal-board-heading{display:flex;align-items:baseline;justify-content:space-between;gap:8px;padding:10px 15px 8px;border-bottom:1px solid #d6dbc9}.frugal-board-heading span{font:italic 23px var(--serif);color:#61734f}.frugal-board-heading small{color:#7f8b71;font-size:8px;font-weight:700;letter-spacing:.1em;white-space:nowrap}.frugal-board-body{display:grid;grid-template-columns:minmax(0,1fr) 145px;gap:13px;flex:1;min-height:0;padding:12px 15px}.frugal-steps{display:grid;grid-template-rows:repeat(4,1fr);gap:5px;min-height:0}.frugal-step{display:flex;align-items:center;gap:9px;min-width:0;padding:4px 9px;border-left:2px solid #81956c;background:#e9eee2}.frugal-step>span{color:#839473;font:italic 15px var(--serif)}.frugal-step div{display:flex;flex-direction:column;min-width:0}.frugal-step strong{color:#40533d;font-size:11px;line-height:1.2}.frugal-step small{color:#697663;font-size:9px;line-height:1.2}.frugal-shopping-note{display:flex;flex-direction:column;align-items:start;justify-content:center;gap:8px;padding:10px 13px;border:1px solid #e0ce9e;background:#fff3d7;box-shadow:3px 4px #e2e4cb;transform:rotate(2deg)}.frugal-shopping-note svg{width:64px;height:48px;align-self:center;color:#637953}.frugal-shopping-note span{color:#977950;font-size:8px;font-weight:700;letter-spacing:.09em}.frugal-shopping-note p{color:#5f5b46;font-size:10px;line-height:1.35}.frugal-shopping-note p:before{content:"✓";margin-right:5px;color:#6a8058}.frugal-board-footer{display:flex;justify-content:space-between;gap:8px;padding:7px 15px;border-top:1px solid #d6dbc9;color:#7c8870;font-size:8px;letter-spacing:.04em}@media(max-width:600px){.frugal-visual{padding:13px}.frugal-board-body{grid-template-columns:minmax(0,1fr) 118px;gap:8px;padding:9px 10px}.frugal-board-heading{padding:8px 10px 6px}.frugal-board-heading span{font-size:19px}.frugal-step{gap:5px;padding:3px 5px}.frugal-step>span{font-size:12px}.frugal-step strong{font-size:10px}.frugal-step small{font-size:8px}.frugal-shopping-note{padding:8px}.frugal-shopping-note svg{width:50px;height:37px}.frugal-shopping-note p{font-size:9px}.frugal-board-footer{padding:6px 10px;font-size:7px}}.generic-art{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;min-height:180px;width:100%;font:italic 58px var(--serif);color:var(--accent)}.generic-art span{font:12px var(--sans);color:var(--muted)}.project-link{margin-top:20px}.copy-bullets{margin:0;padding-left:18px;color:var(--muted);font-size:13px;line-height:1.7}.copy-bullets li+li{margin-top:8px}.copy-bullets li::marker{color:var(--accent)}.copy-bullets .contribution,.copy-bullets strong{color:var(--ink);font-weight:600}.intro-bullets{margin:25px 0 28px;font-size:15px}.note-bullets{font-size:12px}.about-bullets{font-size:14px}.experience-bullets{font-size:12px}.progress-note .copy-bullets{margin-top:5px;font-size:12px}.project-details{grid-column:1 / -1;border-top:1px solid var(--line);padding-top:22px}.project-details h4{font:400 24px/1.3 var(--serif);margin:0 0 18px;letter-spacing:-.4px}.responsibility-bullets{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 44px}.responsibility-bullets li+li{margin-top:0}@media(max-width:580px){.responsibility-bullets{grid-template-columns:1fr;gap:14px}.intro-bullets{font-size:14px}}@media(prefers-reduced-motion:no-preference){nav a,.inline-link,.footer-links a{transition:color .18s ease,border-color .18s ease}.inline-link>span,.art-arrow{display:inline-block;transition:translate .22s ease}.inline-link:is(:hover,:focus-visible)>span{translate:3px 0}.desk-note,.frugal-board{transition:rotate .32s ease,box-shadow .32s ease}.project-art{transition:background .22s ease,translate .28s ease,box-shadow .28s ease}.layer{transition:translate .35s ease}.has-entered .chart-trace{stroke-dasharray:1;animation:chart-draw 1.2s ease-out .18s both}.has-entered .network-packet{animation:packet-pass 1.7s ease-in-out 2}.has-entered .network-packet+.network-packet{animation-delay:.25s}@keyframes chart-draw{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}@keyframes packet-pass{0%,to{translate:0 0;opacity:1}50%{translate:10px 0;opacity:.5}}}@media(prefers-reduced-motion:no-preference)and (hover:hover)and (pointer:fine){.desk-note:hover,.frugal-board:hover{rotate:-1deg;box-shadow:4px 8px 14px #30322d12}.project-art:is(:hover,:focus-visible){translate:0 -3px;box-shadow:0 8px 18px #30322d0c}.project-art:is(:hover,:focus-visible) .layer-back{translate:3px -3px}.project-art:is(:hover,:focus-visible) .layer-front{translate:-3px 2px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important}}.featured-project{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;gap:28px 36px;padding:28px;margin-bottom:32px;border:1px solid var(--line);background:#f9f7f1}.featured-art{min-width:0;height:340px;display:flex;align-items:center;justify-content:center;overflow:hidden}.featured-art--cube{background:#35423a}.featured-art--grocery{background:#eeeee3}.featured-art .xr-visual{width:100%;height:100%;min-height:0;padding:18px}.featured-art .cube-drawing{min-height:0;max-height:none}.featured-art .frugal-visual{width:100%;height:100%}.featured-summary{min-width:0}.featured-summary h3{font:400 34px/1.12 var(--serif);letter-spacing:-1px;margin:12px 0 8px}.featured-subtitle{font:italic 21px/1.3 var(--serif);color:var(--accent);margin-bottom:20px}.featured-project .project-details{padding-top:22px}.featured-project .project-details h4{font-size:23px}.featured-project .responsibility-bullets{gap:14px 36px}.featured-project .progress-note{margin-top:16px}.project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}.project-card{min-width:0;display:flex;flex-direction:column;border:1px solid var(--line);background:#f9f7f1}.project-card .project-art{height:205px;flex-shrink:0}.project-art--identity{background:#e7e7de}.project-art--layers{background:#eadace}.project-art--cards{background:#e0e6da}.project-card .tracker-diagram{width:190px}.project-card .diagram-branches span{padding:5px 8px}.project-card .diagram-branches:before{left:35px;right:38px}.project-card .playing-cards{width:90px;height:100px;margin:0;transform:scale(1.25);transform-origin:center}.project-card .art-note{font-size:12px;right:14px;bottom:12px}.project-card-body{display:flex;flex-direction:column;flex:1;min-width:0;padding:20px}.project-card .project-category{min-height:30px;font-size:9px;line-height:1.55;letter-spacing:.055em}.project-card h3{font:400 25px/1.2 var(--serif);letter-spacing:-.5px;margin:7px 0 14px}.project-card .tech-list{margin-top:auto;padding-top:20px}.project-grid+.featured-project{margin-top:32px}@media(max-width:900px){.featured-project{grid-template-columns:1fr;gap:24px;padding:24px}.featured-art{height:285px}.project-grid{gap:14px}.project-card .project-art{height:175px}.project-card .tracker-diagram{width:190px;scale:.75;flex-shrink:0}.project-card .layer-composition{scale:.8;flex-shrink:0}.project-card-body{padding:15px 12px}.project-card h3{font-size:21px}.project-card .copy-bullets{font-size:12px;padding-left:14px}.project-card .project-category{font-size:8px;min-height:38px}}@media(max-width:600px){.featured-project{padding:18px}.featured-art{height:270px}.featured-summary h3{font-size:30px}.featured-subtitle{font-size:20px}.featured-project .responsibility-bullets{grid-template-columns:1fr}.project-grid{grid-template-columns:1fr;gap:24px}.project-card .project-art{height:200px}.project-card .tracker-diagram,.project-card .layer-composition{scale:1}.project-card-body{padding:20px}.project-card .project-category{min-height:0;font-size:9px}.project-card h3{font-size:26px}.project-card .copy-bullets{font-size:13px;padding-left:18px}}
