@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/Inter-Regular-Cb462fmB.woff2) format("woff2")}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/assets/Inter-Medium-BSV1SRWE.woff2) format("woff2")}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/assets/Inter-SemiBold-BfioKe8B.woff2) format("woff2")}@font-face{font-family:Manrope;font-style:normal;font-weight:600;font-display:swap;src:url(/assets/Manrope-SemiBold-B5p8ueAc.woff2) format("woff2")}@font-face{font-family:Manrope;font-style:normal;font-weight:700;font-display:swap;src:url(/assets/Manrope-Bold-Dyj77jgE.woff2) format("woff2")}@font-face{font-family:Manrope;font-style:normal;font-weight:800;font-display:swap;src:url(/assets/Manrope-ExtraBold-BX2hdvsO.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/JetBrainsMono-Regular-pnArZU_a.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/assets/JetBrainsMono-Medium-C0q_ea6y.woff2) format("woff2")}:root{--font-sans: "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-display: "Manrope", var(--font-sans);--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--radius-sm: 10px;--radius-md: 14px;--radius-lg: 20px;--radius-xl: 28px;--radius-full: 999px;--container: 1160px;--gutter: clamp(16px, 4vw, 32px);--header-h: 64px;--ease-out: cubic-bezier(.22, 1, .36, 1);--dur: .18s;--amber: #fbbf24;--emerald: #34d399;--cyan: #22d3ee;--rose: #fb7185}:root,:root[data-theme=dark]{color-scheme:dark;--bg: #09090b;--bg-elevated: #111115;--surface: rgb(255 255 255 / .03);--surface-2: rgb(255 255 255 / .05);--surface-hover: rgb(255 255 255 / .07);--border: rgb(255 255 255 / .08);--border-strong: rgb(255 255 255 / .16);--text: #fafafa;--text-muted: #a1a1aa;--text-subtle: #8b8b94;--accent: #a78bfa;--accent-strong: #7c3aed;--accent-soft: rgb(139 92 246 / .14);--accent-2: #22d3ee;--glow-1: rgb(139 92 246 / .22);--glow-2: rgb(34 211 238 / .1);--grid-line: rgb(255 255 255 / .05);--shadow-lg: 0 24px 64px -16px rgb(0 0 0 / .7);--header-bg: rgb(9 9 11 / .72);--overlay: rgb(0 0 0 / .6)}:root[data-theme=light]{color-scheme:light;--bg: #fafafa;--bg-elevated: #ffffff;--surface: #ffffff;--surface-2: #f4f4f5;--surface-hover: #f1f1f3;--border: rgb(9 9 11 / .08);--border-strong: rgb(9 9 11 / .16);--text: #09090b;--text-muted: #52525b;--text-subtle: #6b6b74;--accent: #6d28d9;--accent-strong: #7c3aed;--accent-soft: rgb(124 58 237 / .08);--accent-2: #0891b2;--glow-1: rgb(124 58 237 / .12);--glow-2: rgb(8 145 178 / .08);--grid-line: rgb(9 9 11 / .05);--shadow-lg: 0 24px 64px -20px rgb(9 9 11 / .2);--header-bg: rgb(250 250 250 / .78);--overlay: rgb(9 9 11 / .35);--amber: #b45309;--emerald: #047857;--cyan: #0e7490;--rose: #be123c}*,*:before,*:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + 16px);scrollbar-gutter:stable;background-color:var(--bg)}html:has(dialog[open]){overflow:hidden}body{min-height:100dvh;font-family:var(--font-sans);font-size:16px;line-height:1.6;color:var(--text);background-color:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;overflow-x:clip}img,svg{display:block;max-width:100%}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}ul,ol{padding:0;list-style:none}h1,h2,h3,h4{font-family:var(--font-display);font-weight:700;line-height:1.15;letter-spacing:-.02em;text-wrap:balance}p{text-wrap:pretty}::selection{background:color-mix(in srgb,var(--accent-strong) 35%,transparent)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}main:focus{outline:none}.container{width:100%;max-width:calc(var(--container) + var(--gutter) * 2);margin-inline:auto;padding-inline:var(--gutter)}.section{padding-block:clamp(48px,7vw,88px)}.section-head{display:flex;flex-direction:column;gap:12px;max-width:720px;margin-bottom:clamp(32px,5vw,56px)}.section-eyebrow{display:inline-flex;align-items:center;gap:10px;font-family:var(--font-mono);font-size:13px;font-weight:500;color:var(--accent)}.section-eyebrow:after{content:"";width:32px;height:1px;background:currentColor;opacity:.5}.section-title{font-size:clamp(32px,5vw,48px);font-weight:800;letter-spacing:-.03em}.section-lead{font-size:17px;color:var(--text-muted)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg)}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{display:inline-flex;align-items:center;gap:6px;min-height:28px;padding:2px 10px;border-radius:var(--radius-full);font-family:var(--font-mono);font-size:12.5px;line-height:1.3;color:var(--text-muted);background:var(--surface-2);border:1px solid var(--border)}.chip__count{color:var(--text-subtle);font-size:11px}.badge{--badge-color: var(--accent);display:inline-flex;align-items:center;gap:5px;min-height:24px;padding:2px 9px;border-radius:var(--radius-full);font-size:12px;font-weight:600;line-height:1.3;color:var(--badge-color);background:color-mix(in srgb,var(--badge-color) 12%,transparent);border:1px solid color-mix(in srgb,var(--badge-color) 30%,transparent);white-space:nowrap}.badge svg{width:13px;height:13px;flex-shrink:0}.badge--favorite{--badge-color: var(--amber)}.badge--first-flutter{--badge-color: var(--emerald)}.badge--first-freelance{--badge-color: var(--cyan)}.badge--most-complex{--badge-color: var(--rose)}.badge--live{--badge-color: var(--emerald)}.badge--award{--badge-color: var(--amber);white-space:normal}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 18px;border-radius:var(--radius-full);font-size:15px;font-weight:600;line-height:1;white-space:nowrap;border:1px solid transparent;transition:background-color var(--dur),border-color var(--dur),color var(--dur),transform var(--dur) var(--ease-out)}.btn:active{transform:scale(.98)}.btn svg{width:18px;height:18px;flex-shrink:0}.btn--primary{color:#fff;background:var(--accent-strong);box-shadow:0 10px 30px -10px color-mix(in srgb,var(--accent-strong) 70%,transparent),inset 0 1px #ffffff2e}.btn--primary:hover{background:color-mix(in srgb,var(--accent-strong) 86%,white)}.btn--secondary{background:var(--surface-2);border-color:var(--border)}.btn--secondary:hover{background:var(--surface-hover);border-color:var(--border-strong)}.icon-btn{display:inline-grid;place-items:center;flex-shrink:0;width:40px;height:40px;border-radius:var(--radius-full);color:var(--text-muted);background:var(--surface);border:1px solid var(--border);transition:background-color var(--dur),border-color var(--dur),color var(--dur)}.icon-btn:hover{color:var(--text);background:var(--surface-hover);border-color:var(--border-strong)}.icon-btn svg{width:18px;height:18px}.icon-btn--lg{width:44px;height:44px}.socials{display:flex;flex-wrap:wrap;gap:8px}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.skip-link{position:fixed;top:12px;left:12px;z-index:100;padding:10px 16px;border-radius:var(--radius-sm);font-weight:600;color:#fff;background:var(--accent-strong);translate:0 -200%;transition:translate var(--dur) var(--ease-out)}.skip-link:focus-visible{translate:0 0}.stretched-link:after{content:"";position:absolute;inset:0;z-index:1;border-radius:inherit}.stretched-link:focus-visible{outline:none}.stretched-link:focus-visible:after{outline:2px solid var(--accent);outline-offset:2px}@media(prefers-reduced-motion:no-preference){@supports (animation-timeline: view()){.reveal{animation:reveal-up linear both;animation-timeline:view();animation-range:entry 0% entry 35%}}}@keyframes reveal-up{0%{opacity:0;translate:0 32px}to{opacity:1;translate:0 0}}::view-transition-old(root),::view-transition-new(root){animation-duration:.26s}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
