:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#fbfbfd;--surface:#fff;--text-primary:#1d1d1f;--text-secondary:#6e6e73;--text-tertiary:#86868b;--link:#06c;--link-hover:#049;--border:#00000014;--nav-bg:#fbfbfdb8;--shadow-soft:0 4px 24px #0000000f;--radius-lg:18px;--radius-pill:980px;--font:-apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Roboto, "Helvetica Neue", Helvetica, Arial, sans-serif;--max-content:980px;--ease-out:cubic-bezier(.25, .1, .25, 1)}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#000;--surface:#1d1d1f;--text-primary:#f5f5f7;--text-secondary:#a1a1a6;--text-tertiary:#6e6e73;--link:#2997ff;--link-hover:#5eb0ff;--border:#ffffff1f;--nav-bg:#000000b8;--shadow-soft:0 4px 32px #0006}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}.skip-link{z-index:10000;color:#fff;background:var(--link);transition:transform .2s var(--ease-out);border-radius:0 0 8px;padding:12px 20px;font-size:15px;font-weight:500;text-decoration:none;position:absolute;top:0;left:0;transform:translateY(-120%)}.skip-link:focus{outline:none;transform:translateY(0)}.skip-link:focus-visible{outline:2px solid var(--text-primary);outline-offset:2px}body{font-family:var(--font);letter-spacing:-.022em;color:var(--text-primary);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color .28s var(--ease-out), color .28s var(--ease-out);margin:0;font-size:17px;line-height:1.47059}#root{min-height:100svh}a{color:var(--link);transition:color .2s var(--ease-out);text-decoration:none}a:hover{color:var(--link-hover)}a:focus-visible{outline:2px solid var(--link);outline-offset:3px;border-radius:2px}.page{overflow-x:clip}.header{z-index:100;border-bottom:1px solid var(--border);background:var(--nav-bg);-webkit-backdrop-filter:saturate(180%)blur(20px);justify-content:center;align-items:center;height:48px;display:flex;position:sticky;top:0}.header__inner{width:100%;max-width:var(--max-content);justify-content:space-between;align-items:center;gap:16px;padding:0 22px;display:flex}.header__end{flex-shrink:0;align-items:center;gap:8px;display:flex}.header__logo{letter-spacing:-.02em;color:var(--text-primary);font-size:21px;font-weight:600}.header__logo:hover{color:var(--text-secondary)}.header__nav{gap:28px;margin:0;padding:0;list-style:none;display:flex}.header__nav a{color:var(--text-primary);opacity:.88;font-size:12px;font-weight:400}.header__nav a:hover{opacity:1;color:var(--text-primary)}.theme-toggle{width:32px;height:32px;color:var(--text-primary);cursor:pointer;transition:background .2s var(--ease-out), color .2s var(--ease-out);background:0 0;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.theme-toggle:hover{background:#0000000f}:root[data-theme=dark] .theme-toggle:hover{background:#ffffff1a}.theme-toggle:focus-visible{outline:2px solid var(--link);outline-offset:2px}@media (width<=640px){.header__logo{letter-spacing:-.018em;white-space:nowrap;text-overflow:ellipsis;max-width:min(52vw,200px);font-size:15px;overflow:hidden}.header__nav{gap:16px}.header__nav a{font-size:11px}}.section{padding:88px 22px 100px}.section--tight-top{padding-top:48px}.section__inner{max-width:var(--max-content);margin:0 auto}.section__eyebrow{letter-spacing:.06em;text-transform:uppercase;color:var(--text-tertiary);margin:0 0 12px;font-size:12px;font-weight:600}.section__title{letter-spacing:-.015em;color:var(--text-primary);margin:0 0 16px;font-size:40px;font-weight:600;line-height:1.1}.section__lead{letter-spacing:.011em;color:var(--text-secondary);max-width:42rem;margin:0;font-size:21px;font-weight:400;line-height:1.381}@media (width<=734px){.section{padding:64px 20px 72px}.section__title{font-size:32px}.section__lead{font-size:19px}}.hero{text-align:center;padding:56px 22px 96px}.hero__inner{max-width:820px;margin:0 auto}.hero__label{letter-spacing:.04em;color:var(--text-tertiary);animation:fade-up .8s var(--ease-out) both;margin:0 0 12px;font-size:14px;font-weight:600}.hero__title{letter-spacing:-.025em;color:var(--text-primary);animation:fade-up .8s var(--ease-out) 60ms both;margin:0 0 20px;font-size:clamp(40px,7vw,72px);font-weight:600;line-height:1.05}.hero__subtitle{letter-spacing:.01em;color:var(--text-secondary);max-width:36rem;animation:fade-up .8s var(--ease-out) .12s both;margin:0 auto 36px;font-size:clamp(19px,2.4vw,24px);font-weight:400;line-height:1.4}.hero__actions{animation:fade-up .8s var(--ease-out) .18s both;flex-wrap:wrap;justify-content:center;gap:16px;display:flex}.btn{letter-spacing:-.022em;border-radius:var(--radius-pill);cursor:pointer;min-width:28px;transition:transform .2s var(--ease-out), opacity .2s var(--ease-out);border:none;justify-content:center;align-items:center;padding:11px 22px;font-family:inherit;font-size:17px;font-weight:400;line-height:1.17647;display:inline-flex}.btn:active{transform:scale(.98)}.btn--primary{background:var(--link);color:#fff}.btn--primary:hover{background:var(--link-hover);color:#fff}.btn--secondary{color:var(--link);box-shadow:inset 0 0 0 1px var(--link);background:0 0}.btn--secondary:hover{color:var(--link-hover);background:#0066cc0f}:root[data-theme=dark] .btn--secondary:hover{background:#2997ff1f}@keyframes fade-up{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.projects__grid{gap:24px;margin-top:48px;display:grid}@media (width>=735px){.projects__grid{grid-template-columns:repeat(2,1fr)}}.project-card{background:var(--surface);border-radius:var(--radius-lg);border:1px solid var(--border);box-shadow:var(--shadow-soft);transition:transform .35s var(--ease-out), box-shadow .35s var(--ease-out);overflow:hidden}.project-card:hover{transform:translateY(-4px);box-shadow:0 12px 40px #0000001a}:root[data-theme=dark] .project-card:hover{box-shadow:0 12px 48px #0000008c}.project-card__visual{aspect-ratio:16/10;background:var(--surface);position:relative;overflow:hidden}.project-card__thumb{object-fit:cover;object-position:top center;width:100%;height:100%;transition:transform .45s var(--ease-out);display:block;position:absolute;inset:0}.project-card:hover .project-card__thumb{transform:scale(1.03)}.project-card__body{padding:24px 22px 28px}.project-card__title{letter-spacing:-.015em;color:var(--text-primary);margin:0 0 8px;font-size:21px;font-weight:600}.project-card__desc{color:var(--text-secondary);margin:0 0 16px;font-size:14px;line-height:1.5}.project-card__link{font-size:14px;font-weight:500}.about__layout{flex-direction:column;align-items:center;gap:36px;margin-top:8px;display:flex}@media (width>=735px){.about__layout{flex-direction:row;align-items:flex-start;gap:48px}}.about__photo-wrap{flex-shrink:0;width:min(260px,72vw)}.about__photo{border-radius:var(--radius-lg);width:100%;height:auto;box-shadow:var(--shadow-soft);border:1px solid var(--border);display:block}.about__text{flex:1;min-width:0}.about__copy{color:var(--text-secondary);max-width:38rem;margin:0 0 1em;font-size:19px;line-height:1.5}.about__text .about__copy:last-child{margin-bottom:0}.footer{border-top:1px solid var(--border);padding:32px 22px 48px}.footer__inner{max-width:var(--max-content);text-align:center;flex-direction:column;align-items:center;gap:16px;margin:0 auto;display:flex}@media (width>=735px){.footer__inner{text-align:left;flex-direction:row;justify-content:space-between}}.footer__meta{color:var(--text-tertiary);margin:0;font-size:12px}.footer__extras{flex-direction:column;align-items:center;gap:14px;display:flex}@media (width>=735px){.footer__extras{flex-direction:row;align-items:center;gap:20px}}.footer__email{color:var(--text-secondary);font-size:12px}.footer__email:hover{color:var(--text-primary)}.footer__social{align-items:center;gap:4px;display:flex}.contact__social{align-items:center;gap:4px;margin-top:22px;display:flex}.social-icon-link{width:40px;height:40px;color:var(--text-secondary);transition:background .2s var(--ease-out), color .2s var(--ease-out);border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.social-icon-link:hover{color:var(--text-primary);background:#0000000f}:root[data-theme=dark] .social-icon-link:hover{background:#ffffff14}.social-icon-link:focus-visible{outline:2px solid var(--link);outline-offset:2px}.social-icon{width:20px;height:20px}
