*{font-family:Arial,Helvetica,sans-serif}html{scroll-behavior:smooth}body{margin:0;padding-top:100px}@media print{body{padding-top:0}}img{-webkit-user-select:none;user-select:none}p,a{color:#252525;font-size:16px;line-height:1.56}a{text-decoration:none}a:hover,a[target=_blank]{color:#33f}.css-1gbgzh4{z-index:1000;background:#fff;width:100%;margin:0 auto;padding-top:20px;position:fixed;top:0;left:0}@media print{.css-1gbgzh4{display:none}}.css-1wiofhw{margin:0}.css-s0rr0o{font-size:30px;font-weight:700}.css-s0rr0o:after{content:"--";color:#33f}.css-lctuz7{cursor:pointer;width:40px;display:none}.css-lctuz7:after,.css-lctuz7:before,.css-lctuz7 div{content:"";background-color:#000;border-radius:3px;height:5px;margin:7px 0;transition:all .2s ease-in-out;display:block}@media (max-width:960px){.css-lctuz7{display:block}}.css-kyuw30{display:none}@media (max-width:960px){.css-kyuw30:checked{opacity:0;z-index:9998;width:100vw;height:100vh;display:block;position:fixed;top:0;left:0}.css-kyuw30:checked+div{display:block}.css-kyuw30:checked+div+ul{transform:translate(0);box-shadow:5px 0 15px 4px #00000026}}.css-1xkui61{z-index:9997;opacity:.4;background:#000;width:100%;height:100%;display:none;position:fixed;top:0;left:0}.css-1eztmtk{margin:0;padding:0}@media (max-width:960px){.css-1eztmtk{z-index:9999;background:#fff;width:200px;height:100%;transition:all .2s ease-out;position:fixed;top:0;left:0;transform:translate(-200px)}}.css-cihsvi{border-bottom:1px solid #e3e3e3;margin-top:-100px;padding-top:100px;padding-bottom:20px}.css-1ozmpdx{max-width:1200px;margin:0 auto;padding:0 15px}.css-1fubgbz{justify-content:space-between;display:flex}.css-191hv6j{flex-direction:row;padding:0 10px}.css-1tyuk25{margin:8px 0 10px 20px;list-style:none;display:inline-block}@media (max-width:960px){.css-1tyuk25{display:block}}.css-1sswet2{text-transform:uppercase;font-size:12px;font-weight:700;line-height:1.66}@media screen{.css-cihsvi:nth-of-type(n+4){content-visibility:auto;contain-intrinsic-size:1px 900px}}.css-qnzu0s{aspect-ratio:1;border:1px solid #e3e3e3;border-radius:50%;width:100%;max-width:177px;height:auto}@media print{.css-qnzu0s{max-width:100px}}.css-miwyjc{margin:0;font-size:36px;line-height:1.25}.css-miwyjc:after{content:".";color:#33f}@media print{.css-miwyjc:after{content:""}}@media (max-width:560px){.css-xw9las{text-align:center}}@media print{.css-xw9las{display:none}}.css-zchm2w{justify-content:space-around;align-items:flex-start;display:flex}@media (max-width:560px){.css-zchm2w{flex-direction:column}}.css-120vmga{text-align:center;flex-direction:row;width:30%;min-height:209px;padding:15px 10px}@media (max-width:560px){.css-120vmga{width:100%;min-height:207px}}.css-12ylo60{flex-direction:row;width:70%;padding:0 10px}@media (max-width:560px){.css-12ylo60{width:100%}}.css-1m6anh9{float:left;clear:left;text-align:left;text-transform:uppercase;width:100px;font-size:12px;font-weight:700;line-height:1.66}.css-1m6anh9:after{content:":"}.css-1wvklo8{margin:0 0 0 110px;padding:0 0 .5em;font-size:14px;line-height:1.4}.css-1wrwiw8{text-transform:uppercase;text-align:center;color:#252525;background:#e3e3e3;border:none;border-radius:2px;min-width:150px;margin:5px;padding:10px;font-family:Arial,Helvetica,sans-serif;font-size:12px;font-weight:700;line-height:1.66;transition:all .3s;display:inline-block}.css-1wrwiw8:hover{color:#252525;box-shadow:10px 10px 20px #25252533}.css-1wrwiw8.primary{color:#fff;background:#33f}.css-1wrwiw8.primary:hover{box-shadow:10px 10px 20px #33f3}.css-f77afh{padding-top:15px;display:flex}@media (max-width:960px){.css-f77afh{flex-direction:column}}.css-cc8cfy{width:30%;padding:0 10px}@media (max-width:960px){.css-cc8cfy{width:100%}}.css-4kozmy{margin:0;font-size:30px}.css-4kozmy:after{content:".";color:#33f}@media print{.css-4kozmy:after{content:""}}.css-1vdxwoa{margin:0}@media (max-width:960px){.css-1vdxwoa{display:none}}.css-hd33gx{width:70%;padding:0 10px}@media (max-width:960px){.css-hd33gx{width:100%}}.css-1d7uo79{padding:0;list-style:none}.css-13qvviv{flex-direction:row;margin-bottom:20px;display:flex}.css-1auulg9{margin:0;line-height:1em}.css-n6780q{opacity:.8;margin:0;font-style:italic}.css-1lir6di{border:1px solid #e3e3e3;border-radius:50%;width:60px;height:60px;margin-right:10px}.css-15474bk{opacity:.8;padding-left:10px;font-weight:400}.css-qkdgad{opacity:.8;margin:0;font-size:13px}.css-1259ouq{content:attr(href);color:#33f;font-size:.7em;font-weight:400;display:block}@media print{.css-1259ouq:after{content:attr(href);color:#33f;font-size:.7em;font-weight:400;display:block}.css-1259ouq-hide:after{display:none}}.css-qtedj8{border-bottom:1px solid #e3e3e3;margin-bottom:30px;padding-bottom:10px;display:flex}@media (max-width:600px){.css-qtedj8{flex-direction:column}.css-1fgs2r2{text-align:center}}.css-hq6ffg{max-width:270px;margin:0 auto}.css-q7v5bu{opacity:0;z-index:9995;text-align:center;background:#000c;width:100%;height:100%;transition:opacity .3s ease-in-out;position:fixed;top:-100%;left:0}.css-q7v5bu:target{opacity:1;outline:none;top:0}.css-1jmq36u{max-width:90%;max-height:80%;margin-top:2%}.css-b9do0y{padding-left:15px}.css-1k45bwb{margin-top:0;margin-bottom:5px;font-size:1.5em}@media print{.css-1k45bwb{text-align:left;color:#000}}.css-n9lewo{color:#252525;background:#e3e3e3;border-radius:19px;margin:5px 5px 0 0;padding:3px 9px;font-size:12px;display:inline-block}@media print{.css-n9lewo{background:0 0;margin-right:0;padding:3px}.css-n9lewo:not(:last-child):after{content:"•";padding-left:5px}}.blink{animation:1s linear infinite blinker}@keyframes blinker{50%{opacity:0}}.row{flex-direction:row;align-items:center;display:flex}.lastest-package{color:#00e;padding-left:16px}.grid{grid-gap:8px;display:grid}.gif-emoji{height:270px}.round-corner{border-radius:10px}strong{color:#000;font-size:20px;font-weight:700}.strong-more{font-size:24px}.highlight{background-color:#ff0}.skill-section{flex-direction:column;row-gap:16px;width:40vw;display:flex}.skills{flex-direction:row;justify-content:space-between;align-items:center;display:flex}
table{width:100%}#profileMarkdown a{align-items:center;display:flex}#profileMarkdown span{margin-top:10px;margin-left:10px}.highlight-yellow{background-color:#ff0}.seo-intro{max-width:72ch}.shared-site-nav{z-index:1000;background:#fff;border-bottom:1px solid #e3e3e3;margin:-40px 0 24px;position:sticky;top:0}.shared-site-nav-inner{justify-content:space-between;align-items:center;max-width:1200px;min-height:78px;margin:0 auto;padding:0 25px;display:flex}.shared-site-brand{margin:0}.shared-site-brand a{color:#252525;font-size:30px;font-weight:700;line-height:1.2}.shared-site-brand a:after{color:#33f;content:"."}.shared-site-menu{gap:20px;margin:0;padding:0;list-style:none;display:flex}.shared-site-menu a{color:#252525;font-size:16px;line-height:1.56}.shared-site-menu a:hover{color:#33f}.shared-site-menu-control,.shared-site-menu-backdrop,.shared-site-menu-toggle{display:none}.shared-site-menu-toggle{cursor:pointer;width:40px}.shared-site-menu-toggle:before,.shared-site-menu-toggle:after,.shared-site-menu-toggle span{content:"";background-color:#000;border-radius:3px;height:5px;margin:7px 0;display:block}@media (max-width:960px){.shared-site-nav-inner{min-height:70px}.shared-site-menu-toggle{display:block}.shared-site-menu{z-index:9999;background:#fff;width:220px;height:100%;transition:transform .2s ease-out;display:block;position:fixed;top:0;left:0;transform:translate(-220px)}.shared-site-menu li{margin:18px 0 0 24px;list-style:none}.shared-site-menu-control:checked{opacity:0;z-index:9998;width:100vw;height:100vh;display:block;position:fixed;top:0;left:0}.shared-site-menu-control:checked+.shared-site-menu-backdrop{opacity:.4;z-index:9997;background:#000;width:100%;height:100%;display:block;position:fixed;top:0;left:0}.shared-site-menu-control:checked+.shared-site-menu-backdrop+.shared-site-menu{transform:translate(0);box-shadow:5px 0 15px 4px #00000026}}.portfolio-page{color:#0f172a;background:#f8fafc;padding:0 16px 80px}.portfolio-hero,.portfolio-note,.portfolio-grid{max-width:1180px;margin-left:auto;margin-right:auto}.portfolio-hero{color:#fff;background:linear-gradient(135deg,#111827,#155e75 58%,#0f172a);border-radius:8px;padding:48px}.portfolio-eyebrow,.portfolio-card-kicker{letter-spacing:.12em;text-transform:uppercase;font-size:.78rem;font-weight:700}.portfolio-eyebrow{color:#67e8f9}.portfolio-hero h1{letter-spacing:0;margin:10px 0 16px;font-size:clamp(2.3rem,4vw,4.25rem);line-height:1.04}.portfolio-hero p{color:#e2e8f0;max-width:78ch;font-size:1.05rem;line-height:1.75}.portfolio-stats{flex-wrap:wrap;gap:10px;margin-top:26px;display:flex}.portfolio-stats span{color:#fff;border:1px solid #ffffff3d;border-radius:999px;padding:8px 12px;font-size:.92rem;font-weight:700}.portfolio-note{background:#fff;border:1px solid #dbe3ee;border-radius:8px;margin-top:22px;padding:24px}.portfolio-note h2{margin:0 0 8px}.portfolio-note p{color:#475569;margin:0;line-height:1.7}.portfolio-note p+p{margin-top:12px}.portfolio-copy-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px;display:grid}.portfolio-grid{grid-template-columns:repeat(12,1fr);gap:18px;margin-top:22px;display:grid}.portfolio-card{background:#fff;border:1px solid #dbe3ee;border-radius:8px;grid-column:span 4;overflow:hidden}.portfolio-card img{aspect-ratio:16/10;object-fit:cover;background:#e2e8f0;width:100%;height:auto;display:block}.portfolio-card-media{display:block}.portfolio-card-body{padding:22px}.portfolio-card-kicker{color:#0369a1;margin:0 0 8px}.portfolio-card h2{letter-spacing:0;margin:0 0 10px;font-size:1.35rem}.portfolio-card h2 a{color:#0f172a}.portfolio-card h2 a:hover{color:#33f}.portfolio-card p,.portfolio-card dd{color:#475569;line-height:1.65}.portfolio-card dl{margin:16px 0 0}.portfolio-card dt{color:#0f172a;font-weight:700}.portfolio-card dd{margin:4px 0 0}.portfolio-card ul{flex-wrap:wrap;gap:8px;margin:18px 0 0;padding:0;list-style:none;display:flex}.portfolio-card li{color:#075985;background:#e0f2fe;border-radius:999px;padding:6px 9px;font-size:.86rem;font-weight:700}.portfolio-links{flex-wrap:wrap;gap:10px;margin-top:18px;display:flex}.portfolio-links a{color:#0f172a;border:1px solid #cbd5e1;border-radius:999px;padding:8px 12px;font-weight:700}.portfolio-links a:hover{color:#33f;border-color:#33f}.portfolio-detail-page{color:#0f172a;background:#f8fafc;padding:0 16px 80px}.portfolio-detail-hero,.portfolio-detail-layout,.portfolio-related{max-width:1180px;margin-left:auto;margin-right:auto}.portfolio-detail-hero{color:#fff;background:#0f172a;border-radius:8px;grid-template-columns:minmax(0,1fr) minmax(320px,520px);align-items:center;gap:32px;padding:42px;display:grid}.portfolio-detail-hero h1{letter-spacing:0;margin:10px 0 16px;font-size:clamp(2.15rem,3.5vw,3.75rem);line-height:1.05}.portfolio-detail-hero p{color:#e2e8f0;max-width:72ch;font-size:1.05rem;line-height:1.75}.portfolio-detail-hero img{aspect-ratio:16/10;object-fit:cover;background:#1e293b;border:1px solid #ffffff2e;border-radius:8px;width:100%;height:auto;display:block}.portfolio-detail-layout{grid-template-columns:minmax(0,1fr) 340px;align-items:start;gap:22px;margin-top:22px;display:grid}.portfolio-detail-main,.portfolio-detail-aside,.portfolio-related{gap:18px;display:grid}.portfolio-detail-section,.portfolio-detail-aside section,.portfolio-related{background:#fff;border:1px solid #dbe3ee;border-radius:8px;padding:24px}.portfolio-detail-section h2,.portfolio-detail-aside h2,.portfolio-related h2{letter-spacing:0;margin:0 0 14px;font-size:1.35rem}.portfolio-detail-section p,.portfolio-detail-aside dd,.portfolio-tech-list p{color:#475569;line-height:1.7}.portfolio-feature-list{gap:12px;margin:0;padding:0;list-style:none;display:grid}.portfolio-feature-list li{color:#334155;background:#f1f5f9;border-left:4px solid #0891b2;border-radius:8px;padding:14px 16px;font-weight:700;line-height:1.55}.portfolio-tech-list{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;display:grid}.portfolio-tech-list article{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:18px}.portfolio-tech-list h3{margin:0 0 8px;font-size:1rem}.portfolio-screenshot-grid{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;display:grid}.portfolio-screenshot-grid figure{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;margin:0;overflow:hidden}.portfolio-screenshot-grid img{aspect-ratio:9/16;object-fit:cover;background:#e2e8f0;width:100%;height:100%;display:block}.portfolio-detail-aside dl{margin:0}.portfolio-detail-aside dt{color:#0f172a;margin-top:14px;font-weight:800}.portfolio-detail-aside dt:first-child{margin-top:0}.portfolio-detail-aside dd{margin:5px 0 0}.portfolio-keyword-list{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.portfolio-keyword-list li{color:#155e75;background:#ecfeff;border:1px solid #a5f3fc;border-radius:999px;padding:7px 10px;font-size:.86rem;font-weight:800}.portfolio-related{margin-top:22px}.portfolio-related>div{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;display:grid}.portfolio-related a{color:#0f172a;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:16px;font-weight:800}.portfolio-related a:hover{color:#33f;border-color:#33f}.portfolio-related span{color:#0369a1;letter-spacing:.1em;text-transform:uppercase;margin-bottom:6px;font-size:.78rem;font-weight:800;display:block}@media (max-width:980px){.portfolio-card{grid-column:span 6}.portfolio-detail-hero,.portfolio-detail-layout{grid-template-columns:1fr}}@media (max-width:680px){.portfolio-hero,.portfolio-detail-hero{padding:30px 24px}.portfolio-card{grid-column:span 12}}.static-page-top-image{max-width:1040px;margin:0 auto 22px;padding:0 16px}.static-page-top-image img{aspect-ratio:16/7;object-fit:cover;background:#0f172a;border:1px solid #dbe3ee;border-radius:8px;width:100%;height:auto;display:block}.editorial-depth-section{background:#fff;border:1px solid #dbe3ee;border-radius:8px;max-width:1040px;margin:22px auto 0;padding:28px}.editorial-depth-section h2{margin-top:0}.editorial-depth-section p{color:#475569;max-width:82ch;line-height:1.75}.editorial-depth-section h3{margin:24px 0 10px}.editorial-link-list{grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:8px 18px;margin:0;padding-left:20px;display:grid}.editorial-link-list a{color:#0369a1;font-weight:700}.seo-section,.semantic-grid,.editorial-depth-section,#services,#react-native-notes,#open-source-projects,#skill-summary,#react-native-expertise,#profiles,#experience,#courses,#open-source,#portfolio,#faq,#social-profiles{content-visibility:auto;contain-intrinsic-size:640px}
