@font-face{font-family:Mulish;font-style:normal;font-weight:400 800;font-display:swap;src:url(/fonts/mulish-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Mulish;font-style:normal;font-weight:400 800;font-display:swap;src:url(/fonts/mulish-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--ink:#14231b;--ink-lift:#1c3026;--ink-deep:#0d1913;--ink-soft:#3f4c44;--paper:#eff1e9;--paper-deep:#e0e5da;--white:#fdfefa;--accent:#2c7a51;--accent-dark:#1d5b3a;--accent-light:#7cc49a;--line:#b5c0b3;--line-dark:#2f473a;--display:Georgia, "Times New Roman", serif;--sans:"Mulish", "Avenir Next", "Segoe UI Variable Text", "Helvetica Neue", Helvetica, sans-serif;--mono:ui-monospace, "SF Mono", Menlo, Consolas, "Courier New", monospace;--max:1240px;--gutter:clamp(1.25rem, 4vw, 4rem);--section:clamp(4.25rem, 8vw, 8rem);--focus:3px solid #8fd3ae;--header-h:64px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{color:var(--ink);background:var(--paper);font-family:var(--sans);text-rendering:optimizelegibility;-webkit-text-size-adjust:100%;margin:0;font-size:1rem;line-height:1.6}img,svg{max-width:100%;display:block}a{color:inherit;text-underline-offset:.2em;text-decoration-thickness:1px}a:hover{text-decoration-color:var(--accent)}a,button{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible{outline:var(--focus);outline-offset:4px}h1,h2,h3,h4,p{margin-top:0}h1,h2,h3{text-wrap:balance}p{text-wrap:pretty}ul{margin:0;padding:0;list-style:none}.wrap{width:min(100% - (2 * var(--gutter)), var(--max));margin-inline:auto}.skip-link{z-index:100;background:var(--white);color:var(--ink);padding:.75rem 1rem;position:fixed;top:1rem;left:1rem;transform:translateY(-250%)}.skip-link:focus{transform:translateY(0)}main>section[id]{scroll-margin-top:var(--header-h)}.seam{border-top:2px solid var(--accent)}.seam-row{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:1rem;min-height:2.9rem;padding-block:.55rem;display:flex}.seam-label{color:var(--accent-dark);font:700 .68rem/1.2 var(--mono);letter-spacing:.12em;text-transform:uppercase}.seam-steps{align-items:center;gap:5px;display:flex}.seam-steps i{background:var(--line);width:14px;height:2px;display:block}.seam-steps i.on{background:var(--accent);width:26px}.on-dark .seam-row{border-bottom-color:var(--line-dark)}.on-dark .seam-label{color:var(--accent-light)}.on-dark .seam-steps i{background:#3c5a49}.on-dark .seam-steps i.on{background:var(--accent)}.section-title{max-width:13ch;font:400 clamp(2.4rem, 5.6vw, 5.2rem)/.98 var(--display);letter-spacing:-.045em;margin-bottom:1.75rem}.section-intro{max-width:56ch;color:var(--ink-soft);font-size:clamp(1.02rem,1.6vw,1.18rem)}.on-dark .section-intro{color:#b2c3b7}.button{border:1px solid var(--ink);background:var(--ink);min-height:48px;color:var(--white);letter-spacing:.04em;justify-content:center;align-items:center;padding:.75rem 1.2rem;font-size:.88rem;font-weight:700;text-decoration:none;transition:background-color .18s,color .18s,border-color .18s;display:inline-flex}.button:hover{background:var(--accent);border-color:var(--accent);color:var(--white)}.button.secondary{color:var(--ink);background:0 0}.button.secondary:hover{background:var(--ink);color:var(--white);border-color:var(--ink)}.text-link{border-bottom:1px solid;align-items:center;min-height:44px;font-size:.9rem;font-weight:700;text-decoration:none;display:inline-flex}.text-link:after{content:"↗";color:var(--accent);margin-left:.55rem;transition:transform .18s}.text-link:hover:after{transform:translate(.18rem,-.18rem)}.pending{font:700 .62rem var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--accent-dark);border:1px dashed var(--line);margin-left:.5rem;padding:.15rem .35rem}.on-dark .pending{color:var(--accent-light);border-color:var(--line-dark)}header{z-index:30;color:var(--white);background:var(--ink);border-bottom:1px solid var(--line-dark);position:sticky;top:0}.nav-shell{min-height:var(--header-h);justify-content:space-between;align-items:center;gap:1.5rem;display:flex}.wordmark{min-height:44px;font:700 .98rem/1 var(--sans);letter-spacing:.025em;white-space:nowrap;align-items:center;text-decoration:none;display:inline-flex}.wordmark span{color:var(--accent)}nav{align-items:center;gap:clamp(.1rem,1vw,.6rem);display:flex}nav a{color:#bfcec3;letter-spacing:.01em;align-items:baseline;gap:.4rem;min-height:44px;padding:.35rem .45rem;font-size:.8rem;font-weight:600;text-decoration:none;transition:color .18s;display:inline-flex;position:relative}nav a i{font:700 .6rem var(--mono);color:#8a9d92;letter-spacing:.06em;font-style:normal;transition:color .18s}nav a:after{content:"";background:var(--accent);opacity:0;height:2px;transition:opacity .18s;position:absolute;bottom:.55rem;left:.5rem;right:.5rem}nav a:hover{color:var(--white)}nav a:hover i{color:var(--accent-light)}nav a[aria-current=true]{color:var(--white)}nav a[aria-current=true] i{color:var(--accent-light)}nav a[aria-current=true]:after{opacity:1}nav .nav-cv{color:var(--white);border:1px solid #5d7568;margin-left:.5rem;padding-inline:1rem}nav .nav-cv:after{display:none}nav .nav-cv:hover{background:var(--accent);border-color:var(--accent)}.menu-button{min-width:44px;min-height:44px;color:var(--white);font:700 .75rem var(--sans);letter-spacing:.06em;background:0 0;border:1px solid #5d7568;justify-content:center;align-items:center;gap:.5rem;padding-inline:.85rem;display:none}.hero{background:var(--ink);color:var(--white);overflow:hidden}.hero-grid{min-height:min(760px, calc(100vh - var(--header-h)));grid-template-columns:minmax(0,7fr) minmax(15rem,3fr);align-items:end;gap:clamp(2.5rem,7vw,7rem);padding-block:clamp(3.5rem,7vw,6.5rem) 3rem;display:grid}.hero-copy{align-self:center}.hero-role{min-height:2rem;color:var(--accent-light);font:700 .72rem/1.3 var(--mono);letter-spacing:.12em;text-transform:uppercase;align-items:center;margin:0 0 1.25rem;display:inline-flex}.hero-role:before{content:"";border-top:2px solid var(--accent);flex:none;width:1.5rem;margin-right:.65rem}.hero h1{max-width:17ch;font:400 clamp(2.9rem, 6.4vw, 6.5rem)/.93 var(--display);letter-spacing:-.055em;margin-bottom:1.5rem}.hero h1 em{color:var(--accent-light);font-style:italic}.hero-summary{color:#ccd8ce;max-width:56ch;margin-bottom:1.35rem;font-size:clamp(1.05rem,1.6vw,1.22rem)}.location{color:#9bafa2;font:700 .72rem/1.5 var(--mono);letter-spacing:.06em;text-transform:uppercase}.hero-actions{flex-wrap:wrap;gap:.75rem;margin-top:2rem;display:flex}.hero .button{background:var(--accent);border-color:var(--accent)}.hero .button:hover{background:var(--white);color:var(--ink);border-color:var(--white)}.hero .button.secondary{color:var(--white);background:0 0;border-color:#5d7568}.hero .button.secondary:hover{background:var(--white);color:var(--ink)}.portrait-wrap{align-self:end}.portrait-frame{aspect-ratio:4/5;background:#1f352a;border:1px solid #4c6457;position:relative;overflow:hidden}.portrait-frame img{object-fit:cover;object-position:50% 50%;width:100%;height:100%;display:block}.portrait-caption{color:#9bafa2;font:.64rem/1.5 var(--mono);text-transform:uppercase;letter-spacing:.04em;margin:.65rem 0 0}.about{padding-bottom:var(--section)}.about-top{grid-template-columns:4fr 8fr;gap:clamp(2rem,6vw,6rem);padding-top:clamp(2.5rem,5vw,4.5rem);display:grid}.about-copy{max-width:62ch;font-size:clamp(1.08rem,1.7vw,1.32rem);line-height:1.58}.evidence-strip{border-block:1px solid var(--line);grid-template-columns:repeat(3,1fr);margin-top:clamp(2.5rem,6vw,5rem);display:grid}.evidence-item{padding:1.4rem clamp(1rem,2vw,2rem) 1.6rem 0}.evidence-item+.evidence-item{border-left:1px solid var(--line);padding-left:clamp(1rem,2vw,2rem)}.evidence-item .index{color:var(--accent-dark);font:700 .68rem var(--mono);letter-spacing:.1em;margin-bottom:.7rem;display:block}.evidence-item strong{max-width:22ch;font:400 clamp(1.2rem, 2vw, 1.6rem)/1.22 var(--display);display:block}.themes{grid-template-columns:1fr 1fr;column-gap:clamp(2rem,7vw,7rem);margin-top:clamp(2.5rem,6vw,5rem);display:grid}.theme-row{border-top:1px solid var(--line);grid-template-columns:2rem 1fr;gap:1rem;padding-block:1.35rem;display:grid}.theme-row b{color:var(--accent-dark);font:700 .7rem var(--mono)}.theme-row h3{font:700 1rem/1.3 var(--sans);margin-bottom:.3rem}.theme-row p{max-width:52ch;color:var(--ink-soft);margin-bottom:0}.experience{padding-bottom:var(--section);background:var(--ink);color:var(--white)}.experience-head{grid-template-columns:5fr 7fr;align-items:end;gap:clamp(1.5rem,6vw,6rem);margin-bottom:clamp(2.5rem,6vw,5.5rem);padding-top:clamp(2.5rem,5vw,4.5rem);display:grid}.experience .section-title{margin-bottom:0}.case{border-top:1px solid var(--line-dark);grid-template-columns:1.3fr 3.7fr 2.4fr;gap:clamp(1.25rem,3.5vw,3.5rem);padding-block:clamp(2.5rem,5vw,4.5rem);display:grid}.case-index{color:var(--accent-light);font:700 .72rem var(--mono);letter-spacing:.1em;flex-direction:column;gap:.3rem;display:flex}.case-index span{color:#84978b}.case h3{max-width:16ch;font:400 clamp(1.7rem, 2.9vw, 2.85rem)/1.06 var(--display);margin-bottom:1.15rem}.case-summary{color:#c1d0c5;max-width:58ch;margin-bottom:0;font-size:1.02rem}.outcomes-label{color:#84978b;font:700 .64rem var(--mono);letter-spacing:.14em;text-transform:uppercase;margin:0 0 .9rem}.outcomes li{border-top:1px solid var(--line-dark);color:#dfeae2;gap:.65rem;padding:.8rem 0;font-size:.96rem;display:flex}.outcomes li:before{content:"→";color:var(--accent-light);flex:none}.projects{padding-bottom:var(--section)}.projects-head{grid-template-columns:7fr 4fr;align-items:end;gap:2rem;margin-bottom:clamp(2.5rem,6vw,5rem);padding-top:clamp(2.5rem,5vw,4.5rem);display:grid}.projects-head .section-title{max-width:11ch;margin-bottom:0}.project{border-top:1px solid var(--line);grid-template-columns:5fr 7fr;align-items:start;gap:clamp(1.75rem,5vw,5rem);padding-block:clamp(2.75rem,6vw,5rem);display:grid}.project:nth-of-type(2n){grid-template-columns:7fr 5fr}.project:nth-of-type(2n) .project-visual{order:2}.project-visual{top:calc(var(--header-h) + 1.25rem);border:1px solid var(--line);background:var(--paper-deep);position:sticky}.visual-label{border-bottom:1px solid var(--line);font:700 .62rem var(--mono);letter-spacing:.08em;text-transform:uppercase;justify-content:space-between;gap:1rem;padding:.6rem .75rem;display:flex}.visual-label em{color:var(--accent-dark);font-style:normal}.visual-shot{aspect-ratio:2928/1408;object-fit:cover;object-position:50% 0;width:100%;height:auto;display:block}.visual-foot{border-top:1px solid var(--line);color:var(--ink-soft);font:.6rem/1.4 var(--mono);letter-spacing:.05em;text-transform:uppercase;padding:.55rem .75rem}.project-no{color:var(--accent-dark);font:700 .7rem var(--mono);letter-spacing:.12em}.project-content h3{font:400 clamp(2.3rem, 4.4vw, 4.4rem)/.95 var(--display);letter-spacing:-.04em;margin:.6rem 0 1.1rem}.project-summary{max-width:60ch;color:var(--ink-soft);font-size:1.05rem}.project-meta{border-top:1px solid var(--line);margin-top:2rem}.meta-row{border-bottom:1px solid var(--line);grid-template-columns:minmax(7.5rem,1fr) 3fr;gap:1rem clamp(1rem,3vw,2.5rem);padding-block:1.15rem;display:grid}.meta-row h4{color:#5c7267;font:700 .64rem/1.5 var(--mono);letter-spacing:.12em;text-transform:uppercase;margin:.15rem 0 0}.demonstrates li{gap:.6rem;max-width:58ch;padding-block:.32rem;display:flex}.demonstrates li:before{content:"—";color:var(--accent);flex:none}.status{border-left:2px solid var(--accent);max-width:58ch;color:var(--ink);margin:0;padding-left:.9rem}.stack{font:600 .84rem/1.7 var(--mono);letter-spacing:.02em;color:var(--ink-soft);margin:0}.project-links{flex-wrap:wrap;gap:.5rem 1.5rem;margin-top:1.25rem;display:flex}.tools{padding-bottom:var(--section)}.tools-layout{grid-template-columns:4fr 8fr;gap:clamp(2rem,7vw,7rem);padding-top:clamp(2.5rem,5vw,4.5rem);display:grid}.tools-copy{top:calc(var(--header-h) + 2rem);align-self:start;position:sticky}.tools-copy .section-title{font-size:clamp(2.3rem,4.4vw,4.2rem)}.tool-groups{border-top:1px solid var(--line)}.tool-group{border-bottom:1px solid var(--line);grid-template-columns:minmax(8rem,1.1fr) 3fr;gap:.6rem 1.5rem;padding-block:1.15rem;display:grid}.tool-group h3{color:#5c7267;font:700 .68rem/1.5 var(--mono);text-transform:uppercase;letter-spacing:.1em;margin:.25rem 0 0}.tool-list{flex-wrap:wrap;gap:.35rem 1.4rem;display:flex}.tool{align-items:center;gap:.5rem;min-height:34px;font-size:.87rem;font-weight:700;display:inline-flex}.tool i{border:1px dashed var(--line);background:0 0;flex:none;width:20px;height:20px;display:block}.tool[data-mark] i{background-color:#0000;background-position:50%;background-repeat:no-repeat;background-size:contain;border:0}.tool[data-mark=adobe] i{background-image:url(/tools/adobe.svg)}.tool[data-mark=salesforce] i{background-image:url(/tools/salesforce.svg)}.tool[data-mark=openai] i{background-image:url(/tools/openai.svg)}.tool[data-mark=powerbi] i{background-image:url(/tools/powerbi.svg)}.tool[data-mark=hubspot] i{background-image:url(/tools/hubspot.svg)}.tool[data-mark=claude] i{background-image:url(/tools/claude.svg)}.tool[data-mark=vercel] i{background-image:url(/tools/vercel.svg)}.tool[data-mark=supabase] i{background-image:url(/tools/supabase.svg)}.tool[data-mark=n8n] i{background-image:url(/tools/n8n.svg)}.tool[data-mark=zapier] i{background-image:url(/tools/zapier.svg)}.tool[data-mark=googleanalytics] i{background-image:url(/tools/googleanalytics.svg)}.tool[data-mark=posthog] i{background-image:url(/tools/posthog.svg)}.tool[data-mark=jira] i{background-image:url(/tools/jira.svg)}.tool[data-mark=confluence] i{background-image:url(/tools/confluence.svg)}.tools-note{color:#5c7267;font:.66rem/1.6 var(--mono);letter-spacing:.05em;text-transform:uppercase;margin:1.1rem 0 0}.contact{color:var(--white);background:var(--ink);padding-bottom:clamp(3rem,6vw,5.5rem)}.contact-grid{grid-template-columns:6fr 5fr;align-items:start;gap:clamp(2rem,7vw,6rem);padding-top:clamp(2.5rem,5vw,4.5rem);display:grid}.contact h2{border-left:2px solid var(--accent);max-width:20ch;font:400 clamp(2rem, 3.6vw, 3.4rem)/1.08 var(--display);letter-spacing:-.03em;margin-bottom:1.5rem;padding-left:1.1rem}.contact-copy{color:#c1d0c5;max-width:58ch;font-size:1.05rem}.contact-close{max-width:44ch;color:var(--white);font:italic 400 clamp(1.15rem, 2vw, 1.5rem)/1.35 var(--display);margin:0}.plate{border:1px solid var(--line-dark);background:var(--ink-lift)}.plate-head{border-bottom:1px solid var(--line-dark);color:#84978b;font:700 .64rem var(--mono);letter-spacing:.12em;text-transform:uppercase;justify-content:space-between;gap:1rem;padding:.7rem .95rem;display:flex}.plate-actions{flex-direction:column;gap:.6rem;padding:.95rem;display:flex}.plate .button{background:var(--accent);border-color:var(--accent);width:100%}.plate .button:hover{background:var(--white);color:var(--ink);border-color:var(--white)}.plate .button.secondary{color:var(--white);background:0 0;border-color:#5d7568}.plate .button.secondary:hover{background:var(--white);color:var(--ink)}.plate-index{border-top:1px solid var(--line-dark)}.plate-index a{color:#c1d0c5;border-bottom:1px solid #22392d;align-items:center;gap:.75rem;min-height:48px;padding:.35rem .95rem;font-size:.87rem;font-weight:700;text-decoration:none;transition:color .18s,background-color .18s;display:flex}.plate-index a:last-child{border-bottom:0}.plate-index a b{color:#93a69b;font:700 .64rem var(--mono);letter-spacing:.06em}.plate-index a:hover{color:var(--white);background:#213729}.plate-index a:hover b{color:var(--accent-light)}footer{background:var(--ink-deep);color:#9bafa2;border-top:1px solid var(--line-dark);padding-block:1.75rem}.footer-grid{grid-template-columns:1.4fr 1fr auto;align-items:start;gap:1.25rem 2rem;font-size:.8rem;display:grid}.footer-name{color:var(--white);font-weight:700}.footer-links{flex-wrap:wrap;gap:.25rem 1.25rem;display:flex}.footer-links a{align-items:center;min-height:44px;display:inline-flex}.built-note{text-align:right;max-width:28rem;font:.7rem/1.6 var(--mono);letter-spacing:.03em}@media (width<=980px){.menu-button{display:inline-flex}nav{inset:var(--header-h) var(--gutter) auto;border:1px solid var(--line-dark);background:var(--ink);flex-direction:column;align-items:stretch;gap:.1rem;padding:.6rem;display:none;position:absolute}nav.is-open{display:flex}nav a{padding-inline:.85rem}nav a:after{width:14px;bottom:.7rem;left:.85rem;right:auto}nav .nav-cv{justify-content:center;margin-top:.4rem;margin-left:0}.hero-grid{grid-template-columns:minmax(0,1fr) minmax(12rem,.4fr);gap:2.25rem}.about-top,.experience-head,.projects-head,.tools-layout,.contact-grid{grid-template-columns:1fr}.about-top,.experience-head,.projects-head{gap:1.25rem}.case{grid-template-columns:1fr}.tools-copy,.project-visual{position:static}.footer-grid{grid-template-columns:1fr 1fr}.built-note{text-align:left;grid-column:1/-1}}@media (width<=680px){:root{--gutter:1.15rem;--section:3.5rem}.seam-row{min-height:2.6rem}.seam-label{letter-spacing:.1em;font-size:.64rem}.hero-grid{flex-direction:column;align-items:stretch;gap:2rem;min-height:auto;padding-top:2.75rem;display:flex}.hero h1{max-width:14ch;font-size:clamp(2.6rem,12vw,4.2rem)}.portrait-wrap{width:min(70%,270px);margin-left:auto}.hero-actions .button{flex:100%}.evidence-strip{grid-template-columns:1fr}.evidence-item{padding-right:0}.evidence-item+.evidence-item{border-left:0;border-top:1px solid var(--line);padding-left:0}.evidence-item strong{max-width:none}.themes{grid-template-columns:1fr}.case{border-top:0;border:1px solid var(--line-dark);background:var(--ink-lift);gap:0;margin-top:1.1rem;padding-block:0}.case-index{border-bottom:1px solid var(--line-dark);background:#1f352a;flex-direction:row;justify-content:space-between;align-items:center;min-height:2.5rem;padding:.4rem .95rem}.case-body{padding:1.1rem .95rem 1.25rem}.case h3{max-width:none;margin-bottom:.85rem;font-size:1.65rem}.case-outcomes{background:var(--ink-deep);border-top:1px solid var(--line-dark);padding:1rem .95rem 1.1rem}.outcomes li{padding:.65rem 0;font-size:.92rem}.outcomes li:first-child{border-top:0;padding-top:0}.project,.project:nth-of-type(2n){grid-template-columns:1fr;gap:1.5rem}.project:nth-of-type(2n) .project-visual{order:0}.project-content h3{font-size:2.4rem}.meta-row,.tool-group{grid-template-columns:1fr;gap:.55rem}.contact h2{font-size:1.85rem}.footer-grid{grid-template-columns:1fr;gap:.65rem}.built-note{text-align:left;grid-column:auto}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}}
