@font-face{font-family:Apercu;src:url(/fonts/apercu/Apercu-Regular.woff2) format("woff2"),url(/fonts/apercu/Apercu-Regular.woff) format("woff");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Apercu;src:url(/fonts/apercu/Apercu-Italic.woff2) format("woff2"),url(/fonts/apercu/Apercu-Italic.woff) format("woff");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:Apercu;src:url(/fonts/apercu/Apercu-Medium.woff2) format("woff2"),url(/fonts/apercu/Apercu-Medium.woff) format("woff");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Apercu;src:url(/fonts/apercu/Apercu-Bold.woff2) format("woff2"),url(/fonts/apercu/Apercu-Bold.woff) format("woff");font-weight:700;font-style:normal;font-display:swap}:root{--bg: hsl(210deg 25% 98%);--bg-soft: hsl(220deg 35% 95%);--surface: #ffffff;--ink: hsl(222deg 22% 8%);--ink-soft: hsl(222deg 14% 38%);--ink-faint: hsl(222deg 12% 58%);--border: hsl(220deg 26% 90%);--violet: hsl(245deg 100% 60%);--primary: hsl(245deg 100% 67%);--pink: hsl(333deg 90% 48%);--teal: hsl(170deg 80% 42%);--accent: var(--violet);--accent-ink: hsl(245deg 75% 50%);--radius: 16px;--radius-lg: 24px;--shadow-sm: 0 1px 2px rgba(33, 32, 43, .06), 0 2px 8px rgba(33, 32, 43, .05);--shadow-md: 0 8px 28px hsl(245deg 100% 60% / .16), 0 2px 8px hsl(222deg 40% 20% / .06);--maxw: 1080px;--font: "Apercu", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{margin:0;font-family:var(--font);color:var(--ink);background:var(--bg);line-height:1.65;font-size:18px;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}img{max-width:100%;display:block}a{color:var(--accent-ink);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3{line-height:1.15;font-weight:700;letter-spacing:-.02em;margin:0 0 .4em}h1{font-size:clamp(2.4rem,6vw,4rem)}h2{font-size:clamp(1.7rem,4vw,2.4rem)}h3{font-size:1.25rem}p{margin:0 0 1.1em}::selection{background:var(--violet);color:#fff}.wrap{width:100%;max-width:var(--maxw);margin:0 auto;padding:0 24px}.gradient-text{color:var(--violet)}.eyebrow{font-weight:500;letter-spacing:.08em;text-transform:uppercase;font-size:.8rem;color:var(--accent-ink);margin:0 0 .6em}.brand{font-weight:700;font-size:1.2rem;color:var(--ink);display:inline-flex;align-items:baseline;gap:.16em;letter-spacing:-.01em}.brand:hover{text-decoration:none}.brand-mono{display:inline-flex;align-items:center;color:var(--primary);margin:0 .1em}.brand-mono svg{height:1.25em;width:auto;display:block;stroke:currentColor;fill:none;overflow:visible;transform:translateY(.05em) rotate(-4deg)}.brand-last{color:var(--ink)}.site-header{position:sticky;top:0;z-index:50;background:#fbfcfdc7;backdrop-filter:saturate(180%) blur(14px);-webkit-backdrop-filter:saturate(180%) blur(14px);border-bottom:1px solid var(--border)}.nav{display:flex;align-items:center;justify-content:space-between;height:68px}.primary-nav ul{list-style:none;display:flex;align-items:center;gap:4px;margin:0;padding:0}.primary-nav a{color:var(--ink-soft);font-weight:500;padding:.4em .8em;border-radius:999px}.primary-nav a:hover{color:var(--ink);background:var(--bg-soft);text-decoration:none}.primary-nav a.active{color:var(--accent-ink)}.header-actions{display:flex;align-items:center;gap:10px}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;color:var(--ink-soft);border:1px solid transparent}.icon-btn:hover{color:var(--accent-ink);background:var(--bg-soft);text-decoration:none}.nav-toggle{display:none;background:none;border:0;font-size:1.6rem;line-height:1;cursor:pointer;color:var(--ink);padding:4px 8px}@media(max-width:600px){.primary-nav{position:absolute;top:68px;left:0;right:0;background:var(--bg);border-bottom:1px solid var(--border);padding:8px 24px 16px;display:none}.primary-nav.open{display:block}.primary-nav ul{flex-direction:column;align-items:stretch;gap:2px}.primary-nav a{padding:.7em .6em}.nav-toggle{display:block}.header-actions .icon-btn,.header-actions .btn{display:none}}.btn{display:inline-flex;align-items:center;gap:.5em;font-weight:500;font-size:1rem;padding:.7em 1.3em;border-radius:999px;border:1.5px solid transparent;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease,background .15s ease;text-decoration:none}.btn:hover{text-decoration:none;transform:translateY(-2px)}.btn-primary{background:var(--primary);color:#fff;box-shadow:var(--shadow-md)}.btn-primary:hover{background:#43f}.btn-ghost{background:var(--surface);color:var(--ink);border-color:var(--border);box-shadow:var(--shadow-sm)}.btn-ghost:hover{border-color:var(--violet);color:var(--accent-ink)}section{padding:72px 0}.section-head{max-width:640px;margin-bottom:40px}.section-head p{color:var(--ink-soft);font-size:1.05rem}.hero{padding-top:88px;padding-bottom:40px}.hero .lead{font-size:1.25rem;color:var(--ink-soft);max-width:38ch}.hero-grid{display:grid;grid-template-columns:1.4fr .9fr;gap:48px;align-items:center}.hero-portrait{position:relative;justify-self:center}.hero-portrait img{width:280px;height:280px;object-fit:cover;border-radius:28px;box-shadow:var(--shadow-md);border:4px solid #fff}.hero-portrait:before{content:"";position:absolute;inset:-14px -14px 14px 14px;border-radius:32px;background:var(--primary);z-index:-1}@media(max-width:860px){.hero-grid{grid-template-columns:1fr;gap:32px}.hero-portrait{order:-1}.hero-portrait img{width:200px;height:200px}}.grid{display:grid;gap:22px}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:28px;box-shadow:var(--shadow-sm);overflow:hidden;transition:transform .18s ease,box-shadow .18s ease}.card:hover{transform:translateY(-4px);box-shadow:var(--shadow-md)}.card .ico{font-size:1.8rem;margin-bottom:12px}.card h3{margin-bottom:.35em}.card p{color:var(--ink-soft);font-size:.98rem;margin-bottom:0}.tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}.tag{font-size:.8rem;font-weight:500;padding:.3em .75em;border-radius:999px;background:var(--bg-soft);color:var(--accent-ink);border:1px solid var(--border)}.proj-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:22px;grid-auto-flow:dense}.proj-grid.cols-3{grid-template-columns:repeat(3,1fr)}.proj-grid .span-2{grid-column:span 2}.proj-art{display:flex;align-items:center;justify-content:center;height:150px;margin:-28px -28px 20px;background:var(--bg-soft);border-bottom:1px solid var(--border)}.proj-art svg{width:auto;height:100%;max-width:100%;padding:16px 0}@media(max-width:980px){.proj-grid.cols-3{grid-template-columns:repeat(2,1fr)}}@media(max-width:760px){.proj-grid,.proj-grid.cols-3{grid-template-columns:1fr}.proj-grid .span-2{grid-column:auto}}.timeline{position:relative;margin-left:8px}.timeline:before{content:"";position:absolute;left:6px;top:6px;bottom:6px;width:2px;background:var(--border)}.t-item{position:relative;padding:0 0 36px 36px}.t-item:last-child{padding-bottom:0}.t-item:before{content:"";position:absolute;left:0;top:7px;width:14px;height:14px;border-radius:50%;background:var(--primary);box-shadow:0 0 0 4px var(--bg)}.t-item .t-role{font-weight:700;font-size:1.15rem}.t-item .t-meta{color:var(--ink-faint);font-size:.9rem;margin-bottom:.5em}.t-item .t-meta a{color:var(--accent-ink)}.t-item ul{margin:0;padding-left:1.1em;color:var(--ink-soft)}.t-item li{margin-bottom:.4em}.band{background:var(--primary);border-radius:var(--radius-lg);padding:48px;color:#fff;text-align:center;box-shadow:var(--shadow-md)}.band h2{color:#fff}.band p{color:#ffffffe6;max-width:46ch;margin:0 auto 1.4em}.band .btn-ghost{background:#fff;border-color:#fff;color:var(--accent-ink)}.reveal{opacity:0;transform:translateY(18px);transition:opacity .6s ease,transform .6s ease}.reveal.in{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}html{scroll-behavior:auto}}@media(max-width:860px){.grid-3{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){body{font-size:17px}section{padding:56px 0}.grid-2,.grid-3{grid-template-columns:1fr}.band{padding:32px 22px}}
