@charset "UTF-8";
@font-face{font-family:Onest;src:url('assets/onest.ttf') format('truetype');font-weight:100 900;font-style:normal;font-display:swap}
:root{--bg:#171a16;--surface:#22261f;--raised:#2a3026;--ink:#f2f2e8;--muted:#b6b9ac;--line:#373d31;--accent:#d1f879;--accent-ink:#20271a;--subtle:#92a079;--cover:#ceee88;--shade:rgba(0,0,0,.18);--serif:Georgia,'Times New Roman',serif;--font:Onest,'Arial',sans-serif;color-scheme:dark}
:root[data-theme=light]{--bg:#f4f4eb;--surface:#e9ebe0;--raised:#e0e4d4;--ink:#252a20;--muted:#626958;--line:#cdd2c1;--accent:#bfde64;--accent-ink:#26331a;--subtle:#6c7959;--cover:#d5ed9b;--shade:rgba(39,49,26,.10);color-scheme:light}
*{box-sizing:border-box}html{scroll-padding-top:25px}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);font-weight:400;line-height:1.55;-webkit-font-smoothing:antialiased}body,header,article,section,dialog{transition:background-color .35s,color .35s,border-color .35s}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}a,button{-webkit-tap-highlight-color:transparent}button{border:0}img{max-width:100%;display:block}p,h1,h2,h3,ul,figure{margin:0}button,a{touch-action:manipulation}::selection{background:var(--accent);color:#20271a}:focus-visible{outline:2px solid var(--accent);outline-offset:5px}em{font-family:var(--serif);font-weight:400}.page-shell{width:min(1320px,100%);margin:0 auto;padding:0 62px}.skip-link{position:fixed;top:-100px;left:20px;background:var(--accent);color:var(--accent-ink);padding:15px 20px;z-index:100}.skip-link:focus{top:15px}.reading-progress{position:fixed;top:0;left:0;right:0;height:3px;z-index:80;pointer-events:none}.reading-progress span{display:block;height:100%;width:100%;background:var(--accent);transform:scaleX(0);transform-origin:left}
.site-header{display:flex;align-items:center;justify-content:space-between;gap:30px;padding:28px 0 24px;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px;line-height:1.2;font-size:13px}.brand strong{font-weight:500}.brand-star{font-size:42px;line-height:1;color:var(--accent);transition:transform .5s}.brand:hover .brand-star{transform:rotate(45deg)}.site-nav{display:flex;gap:30px;font-size:13px}.site-nav a{min-height:44px;display:flex;align-items:center;position:relative}.site-nav a::after{content:'';position:absolute;bottom:6px;left:0;right:0;height:2px;background:var(--accent);transform:none;opacity:0;transition:opacity .25s}.site-nav a:hover::after,.site-nav a[aria-current]::after{transform:none;opacity:1}.header-actions{display:flex;gap:20px;align-items:center}.theme-toggle{display:grid;place-items:center;position:relative;width:44px;height:44px;background:transparent;border:1px solid var(--line);border-radius:50%;transition:background .3s,transform .3s}.theme-toggle:hover{background:var(--raised);transform:rotate(12deg)}.theme-toggle svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.5}.moon-icon{display:none}[data-theme=light] .moon-icon{display:block}[data-theme=light] .sun-icon{display:none}.header-contact{font-size:13px;min-height:44px;display:flex;align-items:center;gap:13px}.header-contact span{color:var(--accent);font-size:23px}.eyebrow{font-size:10px;letter-spacing:1.4px;font-weight:500;text-transform:uppercase;line-height:1.7}.small-star{color:var(--accent);font-size:16px;vertical-align:-1px;margin-right:7px}
.hero{display:grid;grid-template-columns:1.2fr 1fr;align-items:center;gap:35px;padding:66px 0 58px}.hero h1{font-size:clamp(56px,6.1vw,84px);font-weight:500;line-height:1.04;letter-spacing:-4.6px;margin:27px 0 25px;max-width:700px}.hero h1 em{font-size:1.02em}.underline{position:relative;white-space:nowrap;isolation:isolate}.underline::after{content:'';position:absolute;z-index:-1;bottom:.065em;left:-.035em;right:-.045em;height:.09em;background:var(--accent);transform:rotate(-2deg);transition:none}.hero-description{font-size:15px;color:var(--muted);max-width:390px;line-height:1.8}.hero-actions{display:flex;gap:30px;align-items:center;margin-top:28px}.button{min-height:52px;display:inline-flex;gap:30px;justify-content:space-between;align-items:center;border-radius:4px;padding:15px 21px;font-size:13px;font-weight:500;line-height:1.5;transition:transform .25s,box-shadow .25s,background .25s}.button-primary{background:var(--accent);color:var(--accent-ink)}.button-primary:hover{transform:translate(-2px,-3px);box-shadow:4px 5px 0 var(--line)}.button span{font-size:21px;line-height:1}.text-link,.case-link{background:transparent;font-size:13px;display:inline-flex;align-items:center;gap:16px;min-height:44px;padding:0;border-bottom:1px solid currentColor}.text-link span,.case-link span{font-size:20px;transition:transform .25s}.text-link:hover span,.case-link:hover span{transform:translate(2px,-2px)}
.hero-visual{position:relative;min-height:505px;display:grid;place-items:center;padding:30px 15px 30px 30px}.hero-asterisk{position:absolute;right:-12px;top:-16px;color:var(--accent);font-size:350px;line-height:1;transform:rotate(-10deg);opacity:.9;pointer-events:none}.portrait-orbit{position:absolute;width:410px;height:410px;border:1px solid var(--line);border-radius:50%;right:-3px;top:50px;transform:none}.portrait-orbit::after{content:'';width:12px;height:12px;background:var(--accent);border-radius:50%;position:absolute;left:30px;top:80px}.portrait-card{position:relative;background:#f5f4e9;color:#20271a;z-index:2;width:300px;padding:14px 14px 17px;transform:rotate(3deg);box-shadow:12px 14px 0 var(--shade);transition:transform .5s}.portrait-card:hover{transform:rotate(0deg) translateY(-5px)}.portrait-top{display:flex;justify-content:space-between;align-items:center;font-size:9px;letter-spacing:.7px;text-transform:uppercase;margin-bottom:12px}.portrait-top span:last-child{font-size:20px}.portrait-card img{width:100%;height:auto;aspect-ratio:1;object-fit:cover;filter:none;transition:transform .65s}.portrait-card:hover img{filter:none;transform:scale(1.018)}.portrait-card figcaption{display:flex;flex-direction:column;margin-top:12px;gap:2px;font-size:14px;font-weight:500}.portrait-card small{font-size:10px;font-weight:400;color:#636a59}.portrait-note{position:absolute;left:10px;bottom:-1px;font-family:var(--serif);font-style:italic;font-size:23px;line-height:1.15;transform:rotate(-8deg);z-index:3}.visual-index{position:absolute;right:0;bottom:0;font-size:9px;letter-spacing:1px;color:var(--muted)}.value-strip{display:grid;grid-template-columns:1fr 1fr 1.2fr;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:22px 0;font-size:12px;gap:20px}.value-strip span{display:flex;align-items:center;gap:13px}.value-strip b{font-size:23px;color:var(--accent);font-weight:400}
.section-heading{display:flex;justify-content:space-between;align-items:end;gap:40px;margin-bottom:36px}.section-heading .eyebrow{margin-bottom:17px}.section-heading h2,.about-section h2{font-size:clamp(35px,4.3vw,57px);font-weight:500;letter-spacing:-2px;line-height:1.13}.section-intro{font-size:13px;line-height:1.8;color:var(--muted);padding-bottom:5px}.work-section{padding-top:81px}.about-section{display:grid;grid-template-columns:1fr 1fr;gap:80px;padding:94px 0 85px;border-top:1px solid var(--line);margin-top:88px}.about-heading .eyebrow{margin-bottom:23px}.about-star{display:block;font-size:125px;line-height:1.2;color:var(--accent);margin:25px 0 0 15px;transform:rotate(15deg)}.about-content{padding-top:30px;font-size:14px;color:var(--muted)}.about-lead{font-size:24px;line-height:1.4;letter-spacing:-.5px;color:var(--ink);margin-bottom:22px}.approach-list{margin-top:25px}.approach-list>div{display:flex;gap:23px;border-top:1px solid var(--line);padding:20px 0}.approach-list>div>span{font-size:11px;color:var(--accent);padding-top:3px}.approach-list strong{display:block;color:var(--ink);font-size:15px;font-weight:500;margin-bottom:6px}.personal-note{font-size:12px;border-top:1px solid var(--line);padding-top:22px;color:var(--muted)}.experience-section{padding-top:40px;border-top:1px solid var(--line)}.experience-row{display:grid;grid-template-columns:210px minmax(0,1fr) 90px;gap:30px;padding:30px 0;border-top:1px solid var(--line)}.date-label,.role-label{font-size:11px;color:var(--muted)}.date-label{padding-top:5px}.experience-row h3{font-size:22px;font-weight:500;letter-spacing:-.7px}.role-label{margin:5px 0 15px}.experience-row p:not(.role-label){font-size:13px;line-height:1.8;color:var(--muted);max-width:660px}.experience-type{text-align:right;font-size:10px;letter-spacing:.5px;text-transform:uppercase;color:var(--muted);padding-top:8px}
.contact-section{position:relative;overflow:hidden;background:var(--accent);color:var(--accent-ink);padding:49px;margin:65px 0 60px;border-radius:5px}.contact-section h2{font-size:clamp(43px,5.8vw,74px);font-weight:500;line-height:1.06;letter-spacing:-3px;margin:20px 0 23px;position:relative;z-index:1}.contact-section>p:not(.eyebrow){font-size:14px;position:relative;z-index:1}.contact-star{position:absolute;right:23px;top:3px;font-size:360px;line-height:1;color:var(--accent-ink);opacity:.12;transform:rotate(-12deg)}.contact-actions{display:flex;gap:25px;align-items:center;margin-top:25px;position:relative;z-index:1}.button-ink{background:var(--accent-ink);color:#f1f4e7}.button-ink:hover{transform:translateY(-3px);box-shadow:0 5px 0 #688633}.site-footer{display:flex;justify-content:space-between;gap:40px;padding-bottom:35px}.footer-name{font-size:15px;font-weight:500}.footer-name span{color:var(--accent);margin-left:10px}.site-footer p{font-size:10px;line-height:1.8;color:var(--muted);margin-top:10px}.footer-links{display:flex;align-items:start;gap:25px;font-size:11px;min-height:44px}.footer-links a{min-height:44px;display:flex;align-items:center}.footer-links a:hover{color:var(--accent)}
.reveal-ready{opacity:0;transform:translateY(22px);transition:opacity .7s,transform .7s,background-color .35s,color .35s}.reveal-ready.is-visible{opacity:1;transform:none}.modal-open{overflow:hidden}.case-dialog{color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:6px;width:min(640px,calc(100% - 32px));max-height:88dvh;padding:30px 36px;box-shadow:0 25px 100px #0006;overscroll-behavior:contain}.case-dialog::backdrop{background:rgba(10,15,8,.70);backdrop-filter:blur(10px)}.dialog-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.dialog-close{background:var(--surface);color:var(--ink);font-size:27px;width:44px;height:44px;border-radius:50%}.dialog-close:hover{background:var(--raised)}.case-dialog h2{font-size:45px;letter-spacing:-2px;font-weight:500;line-height:1.1}.dialog-lead{font-size:19px;line-height:1.45;margin:18px 0 27px;color:var(--muted)}.case-section{border-top:1px solid var(--line);padding:18px 0}.case-section h3{font-size:14px;font-weight:500;margin-bottom:9px}.case-section p,.case-section ul{font-size:13px;color:var(--muted);line-height:1.85}.case-section ul{padding-left:19px;margin-top:10px}.case-section li{padding-left:5px;margin:7px 0}.case-section li::marker{color:var(--accent)}.case-context{font-size:11px;color:var(--muted);margin:10px 0 25px}.case-dialog .button{margin:18px 0 5px}.case-dialog .tag-list{margin-top:10px}
::view-transition-old(root){animation:none;z-index:1}::view-transition-new(root){animation:theme-reveal .7s cubic-bezier(.22,1,.36,1);z-index:2}@keyframes theme-reveal{from{clip-path:circle(0% at 92% 5%)}to{clip-path:circle(150% at 92% 5%)}}@media(prefers-reduced-motion:no-preference){.hero-copy{animation:hero-enter .8s both}.hero-visual{animation:hero-enter .9s .12s both}}@keyframes hero-enter{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@media(min-width:1600px){.hero{padding-top:90px;padding-bottom:75px}}
@media(max-width:1100px){.page-shell{padding:0 36px}.hero{gap:15px;grid-template-columns:1.2fr 1fr}.hero h1{font-size:68px;letter-spacing:-3.5px}.hero-visual{padding-left:0}.hero-asterisk{font-size:280px;right:20px;top:5px}.portrait-card{width:265px}.portrait-orbit{width:340px;height:340px;right:-10px;top:75px}.portrait-note{font-size:20px;left:0}.about-section{gap:45px}.value-strip{font-size:11px}.experience-row{grid-template-columns:170px minmax(0,1fr) 70px;gap:20px}}
@media(max-width:780px){.site-header{gap:15px;flex-wrap:wrap;padding-top:21px;padding-bottom:16px}.brand{font-size:12px}.brand-star{font-size:36px}.site-nav{order:3;width:100%;justify-content:center;border-top:1px solid var(--line);padding-top:7px;gap:35px;margin-top:4px}.header-actions{margin-left:auto;gap:16px}.header-contact{font-size:12px}.hero{grid-template-columns:1fr;gap:30px;padding-top:38px;padding-bottom:35px}.hero h1{font-size:clamp(53px,10.7vw,75px);letter-spacing:-3.4px;max-width:620px;line-height:1.04}.hero-description{max-width:440px;font-size:14px}.hero-copy .eyebrow{font-size:9px;letter-spacing:1px}.hero-visual{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:385px;max-width:490px;width:100%;justify-self:center;padding:0}.portrait-card{width:250px;transform:rotate(2deg)}.hero-asterisk{font-size:280px;right:10px;top:-18px}.portrait-orbit{width:320px;height:320px;right:10px;top:25px}.portrait-note{position:relative;font-size:20px;bottom:auto;left:auto;align-self:flex-start;margin-top:20px}.visual-index{bottom:5px;right:7px}.value-strip{grid-template-columns:1fr;padding:16px 0;gap:9px;font-size:12px}.value-strip span{gap:12px}.value-strip b{font-size:20px}.work-section{padding-top:50px}.section-heading{align-items:start;flex-direction:column;gap:18px}.section-heading h2,.about-section h2{font-size:43px;letter-spacing:-1.8px}.section-intro{font-size:12px}.about-section{grid-template-columns:1fr;gap:15px;margin-top:55px;padding:55px 0}.about-star{display:none}.about-content{padding-top:10px}.about-lead{font-size:22px}.experience-section{padding-top:37px}.experience-row{grid-template-columns:1fr;gap:9px;padding:24px 0}.experience-type{display:none}.experience-row h3{font-size:20px}.date-label{padding:0}.contact-section{margin:45px 0;padding:30px}.contact-section h2{font-size:52px;letter-spacing:-2px}.contact-star{font-size:250px;right:-70px;top:40px}.site-footer{flex-direction:column;gap:10px}.footer-links{gap:30px}.case-dialog{padding:22px}.case-dialog h2{font-size:36px}.dialog-lead{font-size:17px}}
@media(max-width:440px){.page-shell{padding:0 21px}.hero h1{font-size:54px;letter-spacing:-3px}.hero h1 em{font-size:.98em}.hero-actions{gap:22px}.button{font-size:12px;padding:14px 17px;gap:22px}.hero-visual{min-height:355px}.portrait-card{width:232px}.hero-asterisk{font-size:250px;right:15px}.portrait-orbit{width:290px;height:290px;right:-5px}.portrait-note{font-size:18px;bottom:auto}.section-heading h2,.about-section h2{font-size:38px}.about-lead{font-size:21px}.contact-section{padding:27px 22px}.contact-section h2{font-size:43px}.contact-actions{align-items:start;flex-direction:column;gap:13px}.header-contact{gap:7px}.hero-description{font-size:13px}.case-dialog .button{gap:12px;font-size:11px}.site-footer p{font-size:9px}}
@media(max-width:350px){.hero h1{font-size:47px}.hero-actions{gap:17px}.hero .eyebrow{font-size:8px}.header-actions{gap:8px}.brand{font-size:10px}.brand-star{font-size:32px}.header-contact{font-size:11px}.hero-visual{min-height:340px}.portrait-card{width:217px}.hero-asterisk{font-size:220px}.portrait-orbit{width:267px;height:267px}.section-heading h2,.about-section h2{font-size:33px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.reveal-ready{opacity:1;transform:none}.portrait-card{transform:none}::view-transition-new(root){animation:none}}
@media print{body{background:#fff;color:#222}.page-shell{padding:0 20px}.site-header,.reading-progress,.theme-toggle,.button,.site-footer,.hero-visual,.contact-section,.all-projects,dialog{display:none}.hero{display:block;padding:20px 0}.hero h1{font-size:40px}.reveal-ready{opacity:1;transform:none}.work-section{padding-top:20px}.about-section{margin-top:20px;padding:25px 0}.project-card,.project-feature,.experience-row{break-inside:avoid}}

/* Vector stars never use the platform emoji font. */
.star-icon{display:inline-block;width:1em;height:1em;vertical-align:-.08em;overflow:visible}
/* No empty portrait column. */
@media(min-width:900px){.hero{grid-template-columns:1.2fr 1fr}.hero-copy,.hero-workflow{min-width:0}}
@media(max-width:899px){.hero{grid-template-columns:1fr}}
.hero-copy{max-width:960px}
.hero-workflow{min-width:0}
.workflow-caption{margin:0 0 16px;font-size:10px;letter-spacing:.7px;text-transform:uppercase;color:var(--subtle)}
.workflow-card{position:relative;display:grid;place-items:center;gap:20px;justify-items:center;background:var(--cover);color:var(--accent-ink);border:1px solid var(--line);border-radius:6px;padding:26px 24px 28px}
.workflow-glyph{font-family:var(--font);font-size:64px;font-weight:700;line-height:1}
.workflow-steps{list-style:none;margin:0;padding:0;width:100%;max-width:290px}
.workflow-steps li{display:flex;gap:14px;align-items:baseline;border-top:1px solid rgba(32,39,26,.18);padding:11px 0}
.workflow-steps li span{flex-shrink:0;font-size:12px;font-weight:500}
.workflow-steps li p{font-size:12px;min-width:0}
@media(max-width:440px){.workflow-card{padding:20px 18px 22px}.workflow-glyph{font-size:52px}}
