.cursor[data-astro-cid-xhaoqxbd]{animation:blink 1s step-end infinite}@keyframes blink{50%{opacity:0}}.selected[data-astro-cid-xhaoqxbd]{background-color:#3390ff;color:#10100e;border-radius:2px}.s-path[data-astro-cid-xhaoqxbd]{stroke-dasharray:1;stroke-dashoffset:1;animation:draw-s 5.5s ease-in-out infinite}@keyframes draw-s{0%{stroke-dashoffset:1}40%{stroke-dashoffset:0}60%{stroke-dashoffset:0}to{stroke-dashoffset:-1}}@media(prefers-reduced-motion:reduce){.s-path[data-astro-cid-xhaoqxbd]{animation:none;stroke-dashoffset:0}}.code-grid[data-astro-cid-xhaoqxbd]{position:absolute;inset:-2px;background-image:linear-gradient(to right,rgba(0,128,0,.06) 1px,transparent 1px),linear-gradient(to bottom,rgba(0,128,0,.06) 1px,transparent 1px);background-size:46px 46px;mask-image:radial-gradient(ellipse 80% 70% at 50% 50%,#000 30%,transparent 78%);-webkit-mask-image:radial-gradient(ellipse 80% 70% at 50% 50%,#000 30%,transparent 78%);animation:grid-pan 28s linear infinite}@keyframes grid-pan{to{background-position:46px 46px}}.code-glow[data-astro-cid-xhaoqxbd]{position:absolute;inset:0;background:radial-gradient(circle at 50% 42%,rgba(0,128,0,.12),transparent 60%);animation:glow-breathe 9s ease-in-out infinite}@keyframes glow-breathe{0%,to{opacity:.55;transform:scale(1)}50%{opacity:.9;transform:scale(1.06)}}.code-token[data-astro-cid-xhaoqxbd]{position:absolute;color:green;opacity:.16;letter-spacing:.04em;white-space:nowrap;user-select:none;transform:translateY(0);animation:token-float var(--dur, 28s) ease-in-out var(--delay, 0s) infinite;will-change:transform,opacity}@keyframes token-float{0%{transform:translateY(0);opacity:.06}50%{transform:translateY(var(--drift, 24px));opacity:.22}to{transform:translateY(0);opacity:.06}}@media(prefers-reduced-motion:reduce){.code-grid[data-astro-cid-xhaoqxbd],.code-glow[data-astro-cid-xhaoqxbd],.code-token[data-astro-cid-xhaoqxbd]{animation:none}}.cv-fab[data-astro-cid-hqbskdpd]{position:fixed;left:1rem;bottom:calc(1.25rem + env(safe-area-inset-bottom));z-index:50;display:inline-flex;align-items:center;justify-content:center;gap:.45rem;height:3.25rem;width:auto;padding:0 1.15rem;border-radius:9999px;border:1px solid rgba(34,197,94,.5);background:#22c55e1f;color:#22c55e;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 8px 26px #0000004d;text-decoration:none;white-space:nowrap;transition:background-color .3s ease,color .3s ease,transform .35s cubic-bezier(.34,1.56,.64,1),box-shadow .3s ease;animation:cv-fab-in .6s cubic-bezier(.22,1,.36,1)}@keyframes cv-fab-in{0%{opacity:0;transform:translateY(140%) scale(.9)}}.cv-fab[data-astro-cid-hqbskdpd]:hover{background:#22c55e;color:#10100e;transform:translateY(-2px);box-shadow:0 12px 32px #22c55e47}.cv-fab[data-astro-cid-hqbskdpd]:active{transform:scale(.93)}.cv-fab[data-astro-cid-hqbskdpd]:focus-visible{outline:none;box-shadow:0 0 0 3px #22c55e73}.cv-fab__icon[data-astro-cid-hqbskdpd]{height:1.35rem;width:1.35rem;flex-shrink:0;transition:transform .3s ease}.cv-fab[data-astro-cid-hqbskdpd]:hover .cv-fab__icon[data-astro-cid-hqbskdpd]{transform:translateY(2px)}.cv-fab__label[data-astro-cid-hqbskdpd]{font-size:.85rem;font-weight:500}.cv-fab__label--short[data-astro-cid-hqbskdpd]{display:inline}.cv-fab__label--full[data-astro-cid-hqbskdpd]{display:none}@media(min-width:768px){.cv-fab[data-astro-cid-hqbskdpd]{padding:0 1.35rem;gap:.55rem}.cv-fab__label--short[data-astro-cid-hqbskdpd]{display:none}.cv-fab__label--full[data-astro-cid-hqbskdpd]{display:inline}}@media(prefers-reduced-motion:reduce){.cv-fab[data-astro-cid-hqbskdpd],.cv-fab__icon[data-astro-cid-hqbskdpd]{transition:none;animation:none}}html,body{margin:0;width:100%;height:100%}.nav-pill[data-astro-cid-5blmo7yk]{gap:.125rem;padding:.4rem .75rem;border-radius:9999px;border:1px solid transparent;background:transparent;backdrop-filter:blur(0px);-webkit-backdrop-filter:blur(0px);box-shadow:0 0 #0000;transition:gap .5s cubic-bezier(.22,1,.36,1),padding .5s cubic-bezier(.22,1,.36,1),background-color .5s ease,backdrop-filter .5s ease,border-color .5s ease,box-shadow .5s ease}.nav-pill[data-astro-cid-5blmo7yk].scrolled{gap:.5rem;padding:.5rem 1.5rem;background:#ffffe30f;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-color:#ffffe31f;box-shadow:0 10px 35px #00000040}.nav-link[data-astro-cid-5blmo7yk]{position:relative;display:inline-block;padding:.45rem 1rem;border-radius:9999px;font-weight:500;white-space:nowrap;color:#ffffe3bf;transition:color .35s cubic-bezier(.22,1,.36,1),background-color .35s cubic-bezier(.22,1,.36,1)}.nav-link[data-astro-cid-5blmo7yk]:hover{color:#ffffe3;background-color:#ffffe31a}.nav-mobile[data-astro-cid-5blmo7yk]{position:fixed;right:1rem;bottom:1.25rem;z-index:50;display:flex;flex-direction:column;align-items:flex-end}@media(min-width:768px){.nav-mobile[data-astro-cid-5blmo7yk]{display:none}}.nav-menu[data-astro-cid-5blmo7yk]{position:absolute;right:0;bottom:calc(100% + .6rem);display:flex;flex-direction:column;gap:.25rem;list-style:none;margin:0;width:max-content;max-width:calc(100vw - 2rem);padding:.5rem;border-radius:1.5rem;background:#ffffe30f;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid rgba(255,255,227,.12);box-shadow:0 10px 35px #00000040;transform-origin:bottom right;opacity:0;transform:translateY(12px) scale(.96);pointer-events:none;transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1)}.nav-menu[data-astro-cid-5blmo7yk].open{opacity:1;transform:none;pointer-events:auto}.nav-menu[data-astro-cid-5blmo7yk] li[data-astro-cid-5blmo7yk]{list-style:none}.nav-menu[data-astro-cid-5blmo7yk] .nav-link[data-astro-cid-5blmo7yk]{display:block;text-align:center;padding:.65rem 1rem}.nav-toggle[data-astro-cid-5blmo7yk]{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem .9rem;border-radius:9999px;border:1px solid rgba(255,255,227,.08);background:#ffffe30a;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 6px 20px #0000002e;cursor:pointer;transition:background-color .35s ease,border-color .35s ease,box-shadow .35s ease}.nav-toggle[data-astro-cid-5blmo7yk]:hover{background:#ffffe314;border-color:#ffffe329}.nav-toggle[data-astro-cid-5blmo7yk].open{background:#0080001a;border-color:#00800047;box-shadow:0 8px 26px #00000038}.nav-toggle__icon[data-astro-cid-5blmo7yk]{display:block;width:1.125rem}.nav-toggle__label[data-astro-cid-5blmo7yk]{font-size:.8125rem;font-weight:500;letter-spacing:.02em;color:#ffffe3d1}.nav-toggle[data-astro-cid-5blmo7yk] .bar[data-astro-cid-5blmo7yk]{display:block;width:1.125rem;height:1.5px;border-radius:2px;background:#ffffe3d1;transition:transform .3s cubic-bezier(.22,1,.36,1),opacity .3s ease}.nav-toggle[data-astro-cid-5blmo7yk] .bar[data-astro-cid-5blmo7yk]+.bar[data-astro-cid-5blmo7yk]{margin-top:5px}.nav-toggle[data-astro-cid-5blmo7yk].open .bar[data-astro-cid-5blmo7yk]:nth-child(1){transform:translateY(6.5px) rotate(45deg)}.nav-toggle[data-astro-cid-5blmo7yk].open .bar[data-astro-cid-5blmo7yk]:nth-child(2){opacity:0}.nav-toggle[data-astro-cid-5blmo7yk].open .bar[data-astro-cid-5blmo7yk]:nth-child(3){transform:translateY(-6.5px) rotate(-45deg)}@media(prefers-reduced-motion:reduce){.nav-pill[data-astro-cid-5blmo7yk],.nav-menu[data-astro-cid-5blmo7yk],.nav-toggle[data-astro-cid-5blmo7yk] .bar[data-astro-cid-5blmo7yk]{transition:none}}.project-title[data-astro-cid-amng4zvp]{display:inline-block;transition:transform .4s cubic-bezier(.22,1,.36,1)}.plus-icon[data-astro-cid-amng4zvp]{transition:transform .4s cubic-bezier(.22,1,.36,1)}.project-panel[data-astro-cid-amng4zvp]{display:grid;grid-template-rows:0fr;transition:grid-template-rows .5s cubic-bezier(.22,1,.36,1)}.panel-inner[data-astro-cid-amng4zvp]{overflow:hidden}@media(hover:hover)and (pointer:fine){.project-header[data-astro-cid-amng4zvp]:hover .project-title[data-astro-cid-amng4zvp]{transform:translate(20px)}.project-item[data-astro-cid-amng4zvp]:hover .plus-icon[data-astro-cid-amng4zvp]{transform:rotate(45deg)}.project-item[data-astro-cid-amng4zvp]:hover .project-panel[data-astro-cid-amng4zvp]{grid-template-rows:1fr}}@media(hover:none),(pointer:coarse){.project-item[data-astro-cid-amng4zvp].open .plus-icon[data-astro-cid-amng4zvp]{transform:rotate(45deg)}.project-item[data-astro-cid-amng4zvp].open .project-panel[data-astro-cid-amng4zvp]{grid-template-rows:1fr}}.desc-text[data-astro-cid-amng4zvp].collapsed{max-height:7.5rem;overflow:hidden}.carousel[data-astro-cid-amng4zvp]{position:relative;align-self:start}.carousel-viewport[data-astro-cid-amng4zvp]{position:relative;aspect-ratio:3 / 2;overflow:hidden;border-radius:1rem;border:1px solid rgba(255,255,255,.1)}.carousel-track[data-astro-cid-amng4zvp]{display:flex;height:100%;transition:transform .5s cubic-bezier(.22,1,.36,1)}.carousel-slide[data-astro-cid-amng4zvp]{flex:0 0 100%;height:100%}.carousel-slide[data-astro-cid-amng4zvp] [data-astro-cid-amng4zvp]:is(img,video){display:block;width:100%;height:100%;object-fit:cover}.carousel-prev[data-astro-cid-amng4zvp],.carousel-next[data-astro-cid-amng4zvp]{position:absolute;top:50%;transform:translateY(-50%);display:grid;place-items:center;width:2.5rem;height:2.5rem;border-radius:9999px;border:1px solid rgba(255,255,255,.15);background:#0006;color:#ffffe3;font-size:1.5rem;line-height:1;transition:background-color .3s ease}.carousel-prev[data-astro-cid-amng4zvp]:hover,.carousel-next[data-astro-cid-amng4zvp]:hover{background:#22c55e35}.carousel-prev[data-astro-cid-amng4zvp]{left:.75rem}.carousel-next[data-astro-cid-amng4zvp]{right:.75rem}.carousel-dots[data-astro-cid-amng4zvp]{display:flex;justify-content:center;gap:.5rem;margin-top:1rem}.carousel-dot[data-astro-cid-amng4zvp]{width:.5rem;height:.5rem;border-radius:9999px;background:#ffffe340;transition:background-color .3s ease}.carousel-dot[data-astro-cid-amng4zvp].active{background:#22c55e}@media(prefers-reduced-motion:reduce){.project-panel[data-astro-cid-amng4zvp],.carousel-track[data-astro-cid-amng4zvp],.project-title[data-astro-cid-amng4zvp],.plus-icon[data-astro-cid-amng4zvp]{transition:none}}[data-astro-cid-v2cbyr3p][data-reveal]{opacity:0;transform:translateY(32px);transition:opacity .8s cubic-bezier(.22,1,.36,1),transform .8s cubic-bezier(.22,1,.36,1)}[data-astro-cid-v2cbyr3p][data-reveal].in{opacity:1;transform:none}.about-modal[data-astro-cid-v2cbyr3p]{margin:auto;max-width:40rem;width:92vw;max-height:88vh;padding:0;border:none;background:transparent}.about-modal[data-astro-cid-v2cbyr3p]::backdrop{background:#05050499;backdrop-filter:blur(6px)}.about-modal[data-astro-cid-v2cbyr3p][open]{animation:about-in .45s cubic-bezier(.22,1,.36,1)}@keyframes about-in{0%{opacity:0;transform:translateY(24px) scale(.97)}}.about-modal-card[data-astro-cid-v2cbyr3p]{position:relative;max-height:88vh;overflow-y:auto;padding:2rem;border-radius:1.5rem;border:1px solid rgba(255,255,255,.1);background:#14140f;color:#ffffe3}.about-modal-close[data-astro-cid-v2cbyr3p]{position:absolute;top:1rem;right:1rem;display:grid;place-items:center;width:2.5rem;height:2.5rem;border-radius:9999px;border:1px solid rgba(255,255,255,.15);background:#0000004d;color:#ffffe3;transition:background-color .3s ease}.about-modal-close[data-astro-cid-v2cbyr3p]:hover{background:#22c55ee6;color:#10100e}@media(prefers-reduced-motion:reduce){[data-astro-cid-v2cbyr3p][data-reveal]{opacity:1;transform:none;transition:none}.about-modal[data-astro-cid-v2cbyr3p][open]{animation:none}}[data-astro-cid-xmivup5a][data-reveal]{opacity:0;transform:translateY(32px);transition:opacity .8s cubic-bezier(.22,1,.36,1),transform .8s cubic-bezier(.22,1,.36,1)}[data-astro-cid-xmivup5a][data-reveal].in{opacity:1;transform:none}.field[data-astro-cid-xmivup5a]{display:flex;flex-direction:column;gap:.5rem}.field-label[data-astro-cid-xmivup5a]{font-size:.75rem;text-transform:uppercase;letter-spacing:.2em;color:#ffffe380}.field-input[data-astro-cid-xmivup5a]{width:100%;padding:.85rem 0;background:transparent;border:none;border-bottom:1px solid rgba(255,255,255,.15);color:#ffffe3;font-size:1.05rem;transition:border-color .3s ease}.field-input[data-astro-cid-xmivup5a]::placeholder{color:#ffffe34d}.field-input[data-astro-cid-xmivup5a]:focus{outline:none;border-bottom-color:#22c55e}.field-input[data-astro-cid-xmivup5a].invalid{border-bottom-color:#ef4444}.copy-btn[data-astro-cid-xmivup5a] .check-icon[data-astro-cid-xmivup5a]{position:absolute;opacity:0;transform:scale(.4);transition:opacity .2s ease,transform .3s cubic-bezier(.34,1.56,.64,1)}.copy-btn[data-astro-cid-xmivup5a] .copy-icon[data-astro-cid-xmivup5a]{transition:opacity .2s ease,transform .3s cubic-bezier(.34,1.56,.64,1)}.copy-btn[data-astro-cid-xmivup5a].copied .copy-icon[data-astro-cid-xmivup5a]{opacity:0;transform:scale(.4)}.copy-btn[data-astro-cid-xmivup5a].copied .check-icon[data-astro-cid-xmivup5a]{opacity:1;transform:scale(1);color:#22c55e}.ios-toast[data-astro-cid-xmivup5a]{position:fixed;top:max(1.25rem,env(safe-area-inset-top));left:50%;z-index:60;display:flex;align-items:center;gap:.75rem;padding:.7rem 1.1rem .7rem .7rem;border-radius:9999px;background:#1c1c1eb8;border:1px solid rgba(255,255,255,.12);box-shadow:0 8px 30px #00000073,0 1px #ffffff0f inset;color:#ffffe3;-webkit-backdrop-filter:blur(20px) saturate(180%);backdrop-filter:blur(20px) saturate(180%);transform:translate(-50%) translateY(-180%) scale(.92);opacity:0;pointer-events:none;transition:transform .6s cubic-bezier(.22,1.5,.36,1),opacity .4s ease;will-change:transform,opacity}.ios-toast[data-astro-cid-xmivup5a].show{transform:translate(-50%) translateY(120%) scale(1);opacity:1}.ios-toast__icon[data-astro-cid-xmivup5a]{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:2.1rem;height:2.1rem;border-radius:9999px;background:#22c55e;color:#10100e}.ios-toast__icon[data-astro-cid-xmivup5a] svg[data-astro-cid-xmivup5a]{width:1.15rem;height:1.15rem;transform:scale(.4);opacity:0;transition:transform .35s cubic-bezier(.34,1.56,.64,1) .12s,opacity .25s ease .12s}.ios-toast[data-astro-cid-xmivup5a].show .ios-toast__icon[data-astro-cid-xmivup5a] svg[data-astro-cid-xmivup5a]{transform:scale(1);opacity:1}.ios-toast__body[data-astro-cid-xmivup5a]{display:flex;flex-direction:column;line-height:1.2;padding-right:.4rem}.ios-toast__title[data-astro-cid-xmivup5a]{font-size:.92rem;font-weight:600}.ios-toast__sub[data-astro-cid-xmivup5a]{font-size:.78rem;color:#ffffe38c}@media(max-width:767px){.copy-btn[data-astro-cid-xmivup5a]{opacity:1;transform:translateY(-50%) translate(0)}.ios-toast[data-astro-cid-xmivup5a].show{transform:translate(-50%) translateY(0) scale(1)}}@media(prefers-reduced-motion:reduce){[data-astro-cid-xmivup5a][data-reveal]{opacity:1;transform:none;transition:none}.ios-toast[data-astro-cid-xmivup5a]{transition:opacity .2s ease;transform:translate(-50%) translateY(0) scale(1)}.ios-toast__icon[data-astro-cid-xmivup5a] svg[data-astro-cid-xmivup5a],.copy-btn[data-astro-cid-xmivup5a] .copy-icon[data-astro-cid-xmivup5a],.copy-btn[data-astro-cid-xmivup5a] .check-icon[data-astro-cid-xmivup5a]{transition:opacity .15s ease}}[data-astro-cid-xpq65ryk][data-reveal]{opacity:0;transform:translateY(32px);transition:opacity .8s cubic-bezier(.22,1,.36,1),transform .8s cubic-bezier(.22,1,.36,1)}[data-astro-cid-xpq65ryk][data-reveal].in{opacity:1;transform:none}.skill[data-astro-cid-xpq65ryk]{opacity:1}.skill[data-astro-cid-xpq65ryk]:not(.in){opacity:0}.skill[data-astro-cid-xpq65ryk].in{animation:skill-in .6s cubic-bezier(.22,1,.36,1) backwards;animation-delay:var(--skill-delay, 0ms)}@keyframes skill-in{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}.tree[data-astro-cid-xpq65ryk],.tree[data-astro-cid-xpq65ryk] ul[data-astro-cid-xpq65ryk]{list-style:none;margin:0;padding:0;text-align:left}.tree[data-astro-cid-xpq65ryk] ul[data-astro-cid-xpq65ryk]{padding-left:1.6rem}.tree[data-astro-cid-xpq65ryk] li[data-astro-cid-xpq65ryk]{position:relative;padding:.4rem 0}.tree[data-astro-cid-xpq65ryk] ul[data-astro-cid-xpq65ryk]>li[data-astro-cid-xpq65ryk]:before{content:"";position:absolute;left:-1.6rem;top:1.35rem;width:1.6rem;border-top:1px solid rgba(255,255,255,.16)}.tree[data-astro-cid-xpq65ryk] ul[data-astro-cid-xpq65ryk]>li[data-astro-cid-xpq65ryk]:after{content:"";position:absolute;left:-1.6rem;top:0;bottom:0;border-left:1px solid rgba(255,255,255,.16)}.tree[data-astro-cid-xpq65ryk] ul[data-astro-cid-xpq65ryk]>li[data-astro-cid-xpq65ryk]:last-child:after{bottom:auto;height:1.35rem}.tree[data-astro-cid-xpq65ryk]>li[data-astro-cid-xpq65ryk]:before,.tree[data-astro-cid-xpq65ryk]>li[data-astro-cid-xpq65ryk]:after{display:none}.exp-item[data-astro-cid-xpq65ryk]{padding-left:2rem}.exp-item[data-astro-cid-xpq65ryk]:before{content:"";position:absolute;left:5px;top:.65rem;bottom:0;border-left:1px solid rgba(255,255,255,.12)}.exp-item[data-astro-cid-xpq65ryk]:last-child:before{display:none}.exp-dot[data-astro-cid-xpq65ryk]{position:absolute;left:0;top:.55rem;width:11px;height:11px;border-radius:9999px;background:#22c55e;box-shadow:0 0 0 4px #22c55e26}@media(prefers-reduced-motion:reduce){[data-astro-cid-xpq65ryk][data-reveal]{opacity:1;transform:none;transition:none}.skill[data-astro-cid-xpq65ryk],.skill[data-astro-cid-xpq65ryk]:not(.in){opacity:1}.skill[data-astro-cid-xpq65ryk].in{animation:none}}[data-astro-cid-4fvwiuyn][data-reveal]{opacity:0;transform:translateY(32px);transition:opacity .8s cubic-bezier(.22,1,.36,1),transform .8s cubic-bezier(.22,1,.36,1)}[data-astro-cid-4fvwiuyn][data-reveal].in{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){[data-astro-cid-4fvwiuyn][data-reveal]{opacity:1;transform:none;transition:none}}
