:root{--bg:#fff;--ink:#111;--muted:#6b6b6b;--line:#e8e8e8;--soft:#f7f7f7;--font:"Manrope", "Helvetica Neue", sans-serif;--pad:clamp(20px, 4vw, 48px);--max:1120px;--radius:16px;--ease:cubic-bezier(.22, 1, .36, 1)}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased;margin:0;font-weight:500;line-height:1.55}img{max-width:100%;display:block}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}h1,h2,h3,p,ul{margin:0}ul{padding:0;list-style:none}#root{min-height:100vh}.site-header{z-index:40;min-height:72px;padding:0 var(--pad);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transition:border-color .25s var(--ease);background:#ffffffeb;border-bottom:1px solid #0000;justify-content:space-between;align-items:center;gap:1rem;display:flex;position:sticky;top:0}.site-header.is-scrolled{border-bottom-color:var(--line)}.brand{letter-spacing:-.03em;font-size:1.15rem;font-weight:800}.nav-actions{align-items:center;gap:1.25rem;display:flex}.nav-actions a{color:var(--muted);transition:color .2s var(--ease);font-size:.92rem;font-weight:600}.nav-actions a:hover{color:var(--ink)}.hero{padding:24px var(--pad) 56px;max-width:calc(var(--max) + var(--pad) * 2);align-items:center;gap:8px;margin:0 auto;display:grid;position:relative;overflow:hidden}.hero-visual{pointer-events:none;width:min(100%,420px);margin:0 auto}.hero-wave{width:100%;height:auto;animation:float-in 1.1s var(--ease) both}.hero-copy{text-align:center;max-width:34rem;animation:rise .9s var(--ease) .12s both;margin:0 auto}.hero-copy h1{letter-spacing:-.045em;margin-bottom:1rem;font-size:clamp(2.15rem,7.2vw,3.65rem);font-weight:800;line-height:1.06}.hero-copy p{color:var(--muted);margin-bottom:1.5rem;font-size:.95rem;font-weight:500;line-height:1.6}.cta-row{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.cta{min-height:46px;transition:transform .2s var(--ease), background .2s var(--ease), color .2s var(--ease);border-radius:10px;justify-content:center;align-items:center;padding:0 18px;font-size:.92rem;font-weight:700;display:inline-flex}.cta:hover{transform:translateY(-1px)}.cta.primary{background:var(--ink);color:#fff}.cta.ghost{border:1.5px solid var(--ink);background:#fff}@media (width>=900px){.hero{padding:40px var(--pad) 88px;grid-template-columns:1.05fr .95fr;gap:24px;min-height:min(72vh,640px)}.hero-visual{width:100%;max-width:none;margin:0}.hero-copy{text-align:left;justify-self:end;width:100%;margin:0}.cta-row{justify-content:flex-start}}.section{padding:72px var(--pad) 24px;max-width:calc(var(--max) + var(--pad) * 2);margin:0 auto}.section-title{letter-spacing:-.035em;margin-bottom:28px;font-size:clamp(1.75rem,3.5vw,2.25rem);font-weight:800}.category-grid{gap:28px;display:grid}@media (width>=900px){.category-grid{grid-template-columns:repeat(3,1fr);gap:22px}}.category-card,.portfolio-feature{border:1px solid var(--line);border-radius:var(--radius);transition:border-color .25s var(--ease), box-shadow .25s var(--ease);background:#fff;overflow:hidden}.category-card:hover,.portfolio-feature:hover{border-color:#d4d4d4;box-shadow:0 12px 40px #0000000a}.category-card figure,.portfolio-feature figure{background:var(--soft);margin:0;overflow:hidden}.category-card figure{aspect-ratio:16/10}.category-card img,.portfolio-feature img{object-fit:cover;width:100%;height:100%;transition:transform .55s var(--ease)}.category-card:hover img,.portfolio-feature:hover img{transform:scale(1.025)}.category-body,.portfolio-body{gap:12px;padding:20px 20px 22px;display:grid}.category-card h3,.portfolio-feature h3{letter-spacing:-.02em;font-size:1.05rem;font-weight:800;line-height:1.3}.category-card p,.portfolio-feature p{color:var(--muted);font-size:.9rem;font-weight:500;line-height:1.6}.more{width:fit-content;transition:gap .2s var(--ease);align-items:center;gap:6px;margin-top:4px;font-size:.9rem;font-weight:700;display:inline-flex}.more:hover{gap:10px}.portfolio-feature{margin-top:4px}.portfolio-feature figure{aspect-ratio:16/9;background:#f3f6fa}.portfolio-feature img{object-fit:contain;object-position:center top;padding:12px 12px 0}@media (width>=900px){.portfolio-feature figure{aspect-ratio:21/9}.portfolio-body{max-width:42rem;padding:24px 28px 28px}}.site-footer{border-top:1px solid var(--line);padding:56px var(--pad) 64px;margin-top:80px}.footer-inner{max-width:var(--max);gap:40px;margin:0 auto;display:grid}@media (width>=800px){.footer-inner{grid-template-columns:1.1fr 1.6fr;align-items:start;gap:48px}}.footer-brand{letter-spacing:-.02em;margin-bottom:10px;font-size:1.2rem;font-weight:800}.footer-tagline{color:var(--muted);max-width:16rem;margin-bottom:18px;font-size:.9rem}.socials{gap:10px;display:flex}.socials a{border:1px solid var(--line);width:36px;height:36px;color:var(--muted);transition:.2s var(--ease);border-radius:999px;place-items:center;display:grid}.socials a:hover{color:var(--ink);border-color:var(--ink)}.footer-columns{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;display:grid}.footer-columns h3{margin-bottom:14px;font-size:.92rem;font-weight:700}.footer-columns a{color:var(--muted);margin-bottom:10px;font-size:.88rem;font-weight:500;display:block}.footer-columns a:hover{color:var(--ink)}@media (width<=520px){.footer-columns{grid-template-columns:1fr;gap:28px}}.page-hero{padding:56px var(--pad) 20px;max-width:calc(var(--max) + var(--pad) * 2);margin:0 auto}.page-hero h1{letter-spacing:-.05em;font-size:clamp(2.4rem,7vw,4rem);font-weight:800;line-height:.95}.portfolio-grid{padding:12px var(--pad) 72px;max-width:calc(var(--max) + var(--pad) * 2);gap:28px;margin:0 auto;display:grid}@media (width>=700px){.portfolio-grid{grid-template-columns:repeat(2,1fr);gap:28px 20px}}.project-card figure{aspect-ratio:16/10;border-radius:var(--radius);border:1px solid var(--line);background:var(--soft);margin:0 0 14px;overflow:hidden}.project-card img{object-fit:cover;width:100%;height:100%}.project-card h3{margin-bottom:6px;font-size:1.1rem;font-weight:800}.project-card p{color:var(--muted);font-size:.9rem}.resume-wrap{max-width:calc(var(--max) + var(--pad) * 2);padding:8px var(--pad) 72px;gap:40px;margin:0 auto;display:grid}.resume-block h2{letter-spacing:.06em;text-transform:uppercase;margin-bottom:12px;font-size:.85rem;font-weight:800}.resume-row{border-top:1px solid var(--line);gap:8px;padding:18px 0;display:grid}.resume-row:last-child{border-bottom:1px solid var(--line)}.resume-row .year{color:var(--muted);font-size:.88rem;font-weight:600}.resume-row h3{font-size:1.1rem;font-weight:800}.resume-row p{color:var(--muted);max-width:40rem;font-size:.92rem}@media (width>=800px){.resume-row{grid-template-columns:72px 1fr;column-gap:20px}}.resume-cta{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.resume-cta h2{letter-spacing:-.03em;text-transform:none;margin:0;font-size:clamp(1.6rem,4vw,2.3rem);font-weight:800}@keyframes float-in{0%{opacity:0;transform:translate(-18px)scale(.98)}to{opacity:1;transform:none}}@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}
