.language-switch[data-astro-cid-34uxj53s]{height:44px;font:600 12px var(--font-display);display:flex;position:relative}.track[data-astro-cid-34uxj53s]{pointer-events:none;background:#151515;border-radius:9px;position:absolute;inset:4px 0}.thumb[data-astro-cid-34uxj53s]{clip-path:inset(0 50% 0 0 round 6px);background:#333;position:absolute;inset:2px}.language-switch[data-astro-cid-34uxj53s]:has(input[value=en]:checked) .thumb[data-astro-cid-34uxj53s]{clip-path:inset(0 0 0 50% round 6px)}label[data-astro-cid-34uxj53s]{color:#aaa;cursor:pointer;place-items:center;width:44px;height:44px;display:grid;position:relative}input[data-astro-cid-34uxj53s]{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}input[data-astro-cid-34uxj53s]:checked+span[data-astro-cid-34uxj53s]{color:#fafafa}input[data-astro-cid-34uxj53s]:focus-visible+span[data-astro-cid-34uxj53s]{outline-offset:5px;border-radius:2px;outline:2px solid #fafafa}@media (forced-colors:active){.track[data-astro-cid-34uxj53s],.thumb[data-astro-cid-34uxj53s]{border-color:canvastext}input[data-astro-cid-34uxj53s]:checked+span[data-astro-cid-34uxj53s]{color:highlight}}.site-header[data-astro-cid-nen7h5rs]{z-index:20;width:100%;padding:15px var(--page-gutter);backdrop-filter:blur(24px)saturate(160%);color:#fafafa;font-family:var(--font-display);background:linear-gradient(#ffffff0d,#ffffff04),#0a0a0c75;border-bottom:1px solid #ffffff1c;font-weight:600;transition:transform .2s cubic-bezier(.23,1,.32,1);position:fixed;top:0;left:0;box-shadow:inset 0 1px #ffffff1a,0 6px 24px #00000038}.site-header[data-astro-cid-nen7h5rs].is-hidden:not(:focus-within){transform:translateY(-100%)}.header-inner[data-astro-cid-nen7h5rs]{min-height:39px;max-width:var(--page-width);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:28px;margin:0 auto;display:grid;position:relative}.desktop-nav[data-astro-cid-nen7h5rs],.header-actions[data-astro-cid-nen7h5rs]{align-items:center;display:flex}.desktop-nav[data-astro-cid-nen7h5rs]{white-space:nowrap;gap:2px;min-width:0;margin-left:-8px}.section-choice[data-astro-cid-nen7h5rs]{color:#b5b5b5;min-height:44px;font:inherit;letter-spacing:.01em;white-space:nowrap;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;flex:none;padding:10px 7px;font-size:14px;line-height:1.3;transition:color 60ms,border-color 60ms,background-color 60ms;position:relative}@media (hover:hover) and (pointer:fine){.section-choice[data-astro-cid-nen7h5rs]:hover{color:#fafafa;background:#101010}}.section-choice[data-astro-cid-nen7h5rs][aria-pressed=true]{color:#fafafa;background:#242424;border-radius:4px}.header-actions[data-astro-cid-nen7h5rs]{justify-self:end;gap:12px}.social-placeholder[data-astro-cid-nen7h5rs]{width:120px;height:36px}.cv-host,.cv-slot{display:inline-flex}.social-links{align-items:center;gap:6px;display:flex}.social-button{color:#fafafa;background:#242424;border-radius:4px;justify-content:center;align-items:center;width:36px;height:36px;transition:background-color .16s,color .16s;display:inline-flex}@media (hover:hover) and (pointer:fine){.social-button:hover{color:#fff;background:#303030}}.social-button:focus-visible{outline-offset:4px;outline:2px solid #fafafa}.cv-control[data-astro-cid-nen7h5rs]{flex:none}.cv-button[data-astro-cid-nen7h5rs]{color:#fafafa;min-height:36px;font:inherit;white-space:nowrap;cursor:pointer;background:#242424;border:1px solid #0000;border-radius:4px;justify-content:center;align-items:center;gap:5px;padding:0 12px;font-size:12px;font-weight:600;line-height:1;text-decoration:none;transition:background-color .16s,color .16s,opacity .16s;display:inline-flex}.cv-icon[data-astro-cid-nen7h5rs]{flex:none;width:14px;height:14px}.cv-button[data-astro-cid-nen7h5rs][hidden]{display:none}@media (hover:hover) and (pointer:fine){.cv-button[data-astro-cid-nen7h5rs]:hover:not(:disabled){color:#fff;background:#303030}}.cv-button[data-astro-cid-nen7h5rs]:disabled{cursor:wait;opacity:.62}.sr-only[data-astro-cid-nen7h5rs]{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.header-lang[data-astro-cid-nen7h5rs]{display:flex}.mobile-menu[data-astro-cid-nen7h5rs],.mobile-panel[data-astro-cid-nen7h5rs]{display:none}.section-choice[data-astro-cid-nen7h5rs]:focus-visible,.cv-button[data-astro-cid-nen7h5rs]:focus-visible,.mobile-menu-toggle[data-astro-cid-nen7h5rs]:focus-visible,.mobile-close[data-astro-cid-nen7h5rs]:focus-visible{outline-offset:4px;outline:2px solid #fafafa}@media (width<=1399px){.site-header[data-astro-cid-nen7h5rs]{padding-block:11px 16px}.header-inner[data-astro-cid-nen7h5rs]{grid-template-columns:minmax(0,1fr);gap:10px;display:grid}.desktop-nav[data-astro-cid-nen7h5rs],.header-lang[data-astro-cid-nen7h5rs]{display:none}.header-actions[data-astro-cid-nen7h5rs]{flex-wrap:nowrap;justify-content:flex-start;justify-self:stretch;gap:8px;width:100%;min-width:0}.mobile-menu[data-astro-cid-nen7h5rs]{margin-left:auto;display:block;position:relative}.mobile-menu-toggle[data-astro-cid-nen7h5rs]{color:#fafafa;min-height:44px;font:inherit;cursor:pointer;white-space:nowrap;background:#242424;border:0;border-radius:4px;align-items:center;gap:8px;padding:0 8px;font-size:12px;line-height:1;display:flex}.mobile-menu-toggle[data-astro-cid-nen7h5rs][aria-expanded=true]{color:#b5b5b5}.mobile-panel[data-astro-cid-nen7h5rs]{z-index:1000;padding:16px var(--page-gutter) 24px;overscroll-behavior:none;touch-action:none;color:#fafafa;font-family:var(--font-display);visibility:hidden;background:#080808;flex-direction:column;gap:24px;font-weight:600;transition:transform .34s cubic-bezier(.23,1,.32,1),visibility 0s linear .34s;display:flex;position:fixed;inset:0;overflow:hidden;transform:translate(100%)}.mobile-panel[data-astro-cid-nen7h5rs][data-open=true]{visibility:visible;transition:transform .34s cubic-bezier(.23,1,.32,1),visibility;transform:translate(0)}.mobile-panel-top[data-astro-cid-nen7h5rs]{justify-content:space-between;align-items:center;gap:12px;display:flex}.mobile-lang[data-astro-cid-nen7h5rs]{display:flex}.mobile-close[data-astro-cid-nen7h5rs]{color:#fafafa;cursor:pointer;background:#242424;border:0;border-radius:4px;place-items:center;width:44px;height:44px;padding:0;display:inline-grid}.mobile-nav[data-astro-cid-nen7h5rs]{gap:4px;display:grid}.mobile-nav[data-astro-cid-nen7h5rs] .section-choice[data-astro-cid-nen7h5rs]{text-align:left;width:100%;min-height:52px;padding:12px 16px;font-size:17px}}@media (width<=480px){.header-actions[data-astro-cid-nen7h5rs],.social-links{gap:4px}.social-button{width:34px;height:36px}.cv-button[data-astro-cid-nen7h5rs]{gap:4px;min-height:36px;padding:0 8px}.mobile-menu-toggle[data-astro-cid-nen7h5rs]{gap:6px;min-height:36px;padding:0 4px 0 8px}}@media (width<=380px){.site-header[data-astro-cid-nen7h5rs]{padding-inline:12px}.header-actions[data-astro-cid-nen7h5rs]{gap:5px}.cv-button[data-astro-cid-nen7h5rs]{min-height:36px;padding-inline:6px}}@media (prefers-reduced-motion:reduce){.site-header[data-astro-cid-nen7h5rs],.section-choice[data-astro-cid-nen7h5rs],.cv-button[data-astro-cid-nen7h5rs],.mobile-panel[data-astro-cid-nen7h5rs]{transition:none}}.dot-grid{width:100%;height:100%;position:relative}.dot-grid__canvas{pointer-events:none;width:100%;height:100%;display:block;position:absolute;inset:0}.identity[data-astro-cid-6shdjl2g]{--value-size:clamp(1.25rem, 2.2vw, 1.875rem);--feature-size:clamp(1.75rem, 2.8vw, 2.5rem);width:min(100%, var(--page-width));color:var(--foreground);-webkit-user-select:none;user-select:none;margin:clamp(32px,4vw,64px) auto 0}.frame[data-astro-cid-6shdjl2g]{isolation:isolate;min-width:0;padding:clamp(24px, 4vw, 56px) var(--page-gutter);border:1px solid var(--rule);position:relative}.dot-bg[data-astro-cid-6shdjl2g]{z-index:-1;pointer-events:none;isolation:isolate;background:#000;position:absolute;inset:0;overflow:hidden}.dot-bg[data-astro-cid-6shdjl2g]:after{content:"";mix-blend-mode:multiply;background-image:linear-gradient(94deg,#f384ff,#38bdf8,#ffcb5c,#e1e1fe,#0af,#00166d);position:absolute;inset:0}.heading[data-astro-cid-6shdjl2g]{z-index:1;justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:clamp(32px,5vw,68px);display:flex;position:relative}h2[data-astro-cid-6shdjl2g]{font-size:var(--feature-size);margin:0;font-weight:600;line-height:1.1}.main-col[data-astro-cid-6shdjl2g]{z-index:1;min-width:0;position:relative}.details[data-astro-cid-6shdjl2g]{z-index:1;margin:0;position:relative}.columns[data-astro-cid-6shdjl2g]{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:clamp(24px,3vw,48px);display:grid}.detail[data-astro-cid-6shdjl2g]{min-width:0;position:relative}.name[data-astro-cid-6shdjl2g]{padding:0 0 clamp(12px,1.5vw,20px)}dt[data-astro-cid-6shdjl2g]{width:auto;color:var(--muted);text-transform:uppercase;letter-spacing:.14em;border:0;margin-bottom:10px;padding:0;font-size:.7rem;line-height:1.4}dd[data-astro-cid-6shdjl2g]{color:#fafafa;width:fit-content;max-width:100%;font-family:var(--font-display);letter-spacing:-.04em;border:0;margin:0;padding:0;font-weight:600;line-height:1.08;display:block}.name[data-astro-cid-6shdjl2g] dd[data-astro-cid-6shdjl2g]{letter-spacing:-.055em;text-wrap:balance;max-width:24ch;font-size:clamp(1.75rem,3vw,2.75rem);line-height:1}.name[data-astro-cid-6shdjl2g] dd[data-astro-cid-6shdjl2g] span[data-astro-cid-6shdjl2g],.nationality[data-astro-cid-6shdjl2g] dd[data-astro-cid-6shdjl2g] span[data-astro-cid-6shdjl2g]{overflow-wrap:anywhere}.lower[data-astro-cid-6shdjl2g]{grid-template-columns:repeat(2,max-content);align-items:start;gap:16px clamp(24px,3vw,40px);margin-left:0;padding:16px 0 0;display:grid}.age[data-astro-cid-6shdjl2g]{padding-bottom:2px}.age[data-astro-cid-6shdjl2g] dd[data-astro-cid-6shdjl2g]{font-size:var(--value-size)}.nationality[data-astro-cid-6shdjl2g]{padding-bottom:clamp(8px,1.5vw,20px)}.nationality[data-astro-cid-6shdjl2g] dd[data-astro-cid-6shdjl2g]{max-width:34ch;font-size:var(--value-size)}.additional[data-astro-cid-6shdjl2g]{display:contents}.additional[data-astro-cid-6shdjl2g] section[data-astro-cid-6shdjl2g]{z-index:1;min-width:0;position:relative}.additional[data-astro-cid-6shdjl2g]{min-width:0}.sr-only[data-astro-cid-6shdjl2g]{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.additional[data-astro-cid-6shdjl2g] dl[data-astro-cid-6shdjl2g]{gap:20px;margin:0;display:grid}.lower[data-astro-cid-6shdjl2g]{margin-top:24px}.language-list[data-astro-cid-6shdjl2g]{grid-template-columns:minmax(0,1fr);gap:12px!important}.additional[data-astro-cid-6shdjl2g] dd[data-astro-cid-6shdjl2g]{letter-spacing:-.02em;overflow-wrap:anywhere;font-size:clamp(1rem,1.5vw,1.25rem);font-weight:400}.lower[data-astro-cid-6shdjl2g] dd[data-astro-cid-6shdjl2g]{font-size:var(--value-size);letter-spacing:-.04em;font-weight:600}.additional[data-astro-cid-6shdjl2g] a[data-astro-cid-6shdjl2g]{max-width:100%;color:inherit;text-underline-offset:.2em;align-items:baseline;gap:.5em;text-decoration:underline 1px;display:inline-flex}.additional[data-astro-cid-6shdjl2g] a[data-astro-cid-6shdjl2g] svg[data-astro-cid-6shdjl2g]{flex:none;align-self:center;width:1em;height:1em}.additional[data-astro-cid-6shdjl2g] a[data-astro-cid-6shdjl2g] span[data-astro-cid-6shdjl2g]{overflow-wrap:anywhere;min-width:0}.additional[data-astro-cid-6shdjl2g] a[data-astro-cid-6shdjl2g]:hover{color:#a9c8ff}.additional[data-astro-cid-6shdjl2g] a[data-astro-cid-6shdjl2g]:focus-visible{outline-offset:4px;outline:2px solid}.additional[data-astro-cid-6shdjl2g] p[data-astro-cid-6shdjl2g]{color:var(--muted)}@media (width<=900px){.columns[data-astro-cid-6shdjl2g]{grid-template-columns:1fr}}@media (width<=560px){.identity[data-astro-cid-6shdjl2g]{--value-size:clamp(1.05rem, 5vw, 1.4rem);--feature-size:1.75rem}.heading[data-astro-cid-6shdjl2g]{align-items:flex-start}.columns[data-astro-cid-6shdjl2g]{grid-template-columns:1fr}.language-list[data-astro-cid-6shdjl2g]{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (prefers-contrast:more){.frame[data-astro-cid-6shdjl2g]{border-color:#aeb4bd}.heading[data-astro-cid-6shdjl2g]:before{border-color:#c6cbd4}dt[data-astro-cid-6shdjl2g]{color:#e0e3e8}}.el{color:#e5e5e5;min-width:0;position:relative;overflow-x:clip}.el-list{border-top:1px solid #292929;margin:0;padding:0;list-style:none}.el-row{border-bottom:1px solid #292929;transition:background-color .2s}.el-row:hover,.el-row:focus-within{background:#070707}.el-link{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:3.25rem minmax(0,1fr) auto;align-items:center;gap:12px;margin:0;padding:clamp(14px,2.2vw,22px) 0;display:grid}.el-link.is-static{cursor:default}.el-link:focus-visible{outline-offset:4px;outline:2px solid #38bdf8}.el-num{color:#38bdf8;font:500 12px/1 var(--font-display);align-self:start;padding-top:.6em}.el-main{flex-direction:column;gap:8px;min-width:0;display:flex}.el-name{color:#fafafa;font-family:var(--font-display);letter-spacing:-.03em;overflow-wrap:anywhere;font-size:clamp(24px,4.4vw,56px);font-weight:600;line-height:1.05;transition:color .2s;display:block}.el-row:hover .el-name,.el-link:focus-visible .el-name{color:#38bdf8}.el-meta{color:#a1a1a1;font:400 12px/1.4 var(--font-display);flex-wrap:wrap;gap:4px 16px;display:flex}.el-badge{color:#ffcb5c}.el-arrow{color:#a1a1a1;border:1px solid #323232;place-items:center;width:40px;height:40px;transition:transform .25s,color .2s,border-color .2s;display:grid}.el-arrow svg{width:18px;height:18px}.el-row:hover .el-arrow,.el-link:focus-visible .el-arrow{color:#38bdf8;border-color:#38bdf8}.el-arrow svg{transition:transform .25s}.el-row:hover .el-arrow svg,.el-link:focus-visible .el-arrow svg{transform:translate(4px)}.el-sr{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.el-desc{grid-template-rows:0fr;padding-left:calc(3.25rem + 12px);transition:grid-template-rows .32s cubic-bezier(.22,1,.36,1);display:grid}.el-desc-in{max-width:70ch;min-height:0;overflow:hidden}.el-row:hover .el-desc,.el-row:focus-within .el-desc{grid-template-rows:1fr}.el-project{color:#d4d4d4;font:500 14px/1.5 var(--font-sans);margin:0 0 8px}.el-text{color:#a1a1a1;font:400 15px/1.6 var(--font-sans);-webkit-line-clamp:3;-webkit-box-orient:vertical;margin:0;display:-webkit-box;overflow:hidden}.el-foot{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 20px;padding:12px 0 20px;display:flex}.el-logos{color:#737373;font:400 11px var(--font-display);letter-spacing:.08em;text-transform:uppercase;align-items:center;gap:8px;display:flex}.el-logos a,.el-logos>img{background:#0a0a0a;border:1px solid #292929;place-items:center;width:34px;height:34px;display:grid}.el-logos img{object-fit:contain;max-width:22px;max-height:22px}.el-ext{color:#fafafa;min-height:44px;font:600 12px var(--font-display);align-items:center;gap:6px;text-decoration:none;display:inline-flex}.el-ext:hover{color:#38bdf8}.el-ext:focus-visible{outline-offset:4px;outline:2px solid #fafafa}.el-preview{z-index:60;pointer-events:none;background:#0a0a0a;border:1px solid #323232;width:clamp(260px,34vw,480px);max-width:calc(100vw - 16px);position:fixed;top:0;left:0;overflow:hidden}.el-preview img{width:100%;height:auto;display:block}.el-inline{display:none}@media (hover:none){.el-preview{display:none}.el-desc{grid-template-rows:1fr;padding-left:0}.el-inline{aspect-ratio:16/9;object-fit:contain;object-position:center;background:#111;border:1px solid #292929;width:100%;margin:0 0 14px;display:block}}@media (width<=480px){.el-link{grid-template-columns:2.25rem minmax(0,1fr) auto;gap:8px}.el-arrow{width:34px;height:34px}}@media (width<=480px) and (hover:hover){.el-desc{padding-left:calc(2.25rem + 8px)}}@media (prefers-reduced-motion:reduce){.el-row,.el-name,.el-arrow,.el-desc{transition:none}.el-arrow svg,.el-row:hover .el-arrow svg{transition:none;transform:none}}.project-modal{box-sizing:border-box;color:#fafafa;background:#0a0a0a;border:1px solid #343434;width:min(760px,100vw - 32px);max-height:min(88dvh,860px);margin:auto;padding:0;overflow:hidden}.project-modal[open]{flex-direction:column;animation:.28s cubic-bezier(.23,1,.32,1) both modal-in;display:flex}.project-modal[open]::backdrop{backdrop-filter:blur(4px);background:#000000b8;animation:.28s both backdrop-in}.project-modal[data-closing]{animation:.2s cubic-bezier(.4,0,1,1) both modal-out}.project-modal[data-closing]::backdrop{animation:.2s both backdrop-out}@keyframes modal-in{0%{opacity:0;transform:translateY(18px)scale(.96)}}@keyframes modal-out{to{opacity:0;transform:translateY(10px)scale(.98)}}@keyframes backdrop-in{0%{opacity:0}}@keyframes backdrop-out{to{opacity:0}}.modal-header{background:#0a0a0a;border-bottom:1px solid #292929;flex:none;justify-content:space-between;align-items:center;gap:16px;padding:10px 10px 10px clamp(20px,3vw,32px);display:flex}.modal-header h3{min-width:0;margin:0;font-size:clamp(1.05rem,2vw,1.3rem);line-height:1.2}.modal-close{color:#fafafa;cursor:pointer;background:#0a0a0ad9;border:1px solid #3a3a3a;flex:none;justify-content:center;align-items:center;width:40px;height:40px;display:inline-flex}.modal-close svg{width:18px;height:18px}.modal-close:hover{background:#242424}.modal-close:focus-visible{outline-offset:2px;outline:2px solid #fafafa}.modal-visual{background:#050505;border-bottom:1px solid #292929;flex:none}.modal-visual img{object-fit:contain;width:100%;max-height:340px;display:block}.modal-body{min-height:0;padding:clamp(20px,3vw,32px);overflow-y:auto}.modal-description{color:#b5b5b5;white-space:pre-line;overflow-wrap:anywhere;margin:18px 0 0;font-size:15px;line-height:1.75}.modal-stack{flex-wrap:wrap;gap:8px;margin:22px 0 0;padding:0;list-style:none;display:flex}.modal-stack li{color:#ddd;border:1px solid #333;align-items:center;gap:8px;padding:6px 10px;font-size:12px;display:inline-flex}.modal-stack img{width:16px;height:16px}@media (prefers-reduced-motion:reduce){.project-modal[open],.project-modal[open]::backdrop,.project-modal[data-closing],.project-modal[data-closing]::backdrop{animation:none}}.modal-meta[data-astro-cid-yzgswyjn]{color:#888;letter-spacing:.04em;margin:0;font-size:12px}.modal-actions[data-astro-cid-yzgswyjn]{margin-top:24px}a[data-astro-cid-yzgswyjn]:focus-visible{outline-offset:3px;outline:2px solid #fff}.project-link[data-astro-cid-yzgswyjn]{color:#fafafa;min-height:44px;font-family:var(--font-display);white-space:nowrap;cursor:pointer;background:#242424;border:1px solid #0000;border-radius:4px;justify-content:center;align-items:center;gap:5px;padding:0 12px;font-size:12px;font-weight:600;line-height:1;text-decoration:none;transition:background-color .16s,color .16s,opacity .16s;display:inline-flex}.project-link[data-astro-cid-yzgswyjn] svg[data-astro-cid-yzgswyjn]{flex:none;width:14px;height:14px}.project-link[data-astro-cid-yzgswyjn]:hover{color:#fff;background:#303030}.project-link[data-astro-cid-yzgswyjn]:focus-visible{outline-offset:4px;outline:2px solid #fafafa}@media (width<=380px){.project-link[data-astro-cid-yzgswyjn]{min-height:44px;padding-inline:10px}}@media (prefers-reduced-motion:reduce){.project-link[data-astro-cid-yzgswyjn]{transition:none}}.experience[data-astro-cid-bl6cniha]{box-sizing:border-box;min-width:0;width:min(100%, var(--page-width));padding:clamp(24px, 4vw, 56px) var(--page-gutter);border:1px solid var(--rule);margin:clamp(32px,4vw,64px) auto 0;overflow-x:clip}.heading[data-astro-cid-bl6cniha]{margin-bottom:clamp(32px,5vw,68px)}.heading[data-astro-cid-bl6cniha] h2[data-astro-cid-bl6cniha]{margin:0;font-size:clamp(1.75rem,2.8vw,2.5rem);font-weight:600;line-height:1.1}.empty[data-astro-cid-bl6cniha]{color:#aaa;padding:40px 0}.p04-logoloop{--p04-logoloop-gap:32px;--p04-logoloop-logoHeight:28px;--p04-logoloop-pad:0px;padding-top:var(--p04-logoloop-pad);padding-bottom:var(--p04-logoloop-pad);-webkit-tap-highlight-color:transparent;position:relative;overflow:clip}.p04-logoloop--vertical{height:100%;padding:0 var(--p04-logoloop-pad);display:inline-block}.p04-logoloop[data-draggable]{cursor:grab;touch-action:pan-y pinch-zoom}.p04-logoloop--vertical[data-draggable]{touch-action:pan-x pinch-zoom}.p04-logoloop[data-dragging],.p04-logoloop[data-dragging] *{cursor:grabbing}.p04-logoloop__track{z-index:0;will-change:transform;-webkit-user-select:none;user-select:none;width:max-content;display:flex;position:relative}.p04-logoloop--vertical .p04-logoloop__track{flex-direction:column;width:100%;height:max-content}.p04-logoloop__list{align-items:center;margin:0;padding:0;list-style:none;display:flex}.p04-logoloop--vertical .p04-logoloop__list{flex-direction:column}.p04-logoloop__item{margin-right:var(--p04-logoloop-gap);font-size:var(--p04-logoloop-logoHeight);flex:none;line-height:1;position:relative}.p04-logoloop--vertical .p04-logoloop__item{margin-right:0;margin-bottom:var(--p04-logoloop-gap)}.p04-logoloop[data-intro] .p04-logoloop__item{opacity:0}.p04-logoloop__content{align-items:center;gap:calc(var(--p04-logoloop-logoHeight) * .3);color:inherit;border-radius:4px;text-decoration:none;transition:opacity .35s,filter .35s,color .35s;display:inline-flex}.p04-logoloop[data-labels=below] .p04-logoloop__content{gap:calc(var(--p04-logoloop-logoHeight) * .22);flex-direction:column}.p04-logoloop__content:focus-visible{outline-offset:2px;outline:2px solid}.p04-logoloop__node{align-items:center;display:inline-flex}.p04-logoloop__item img{width:auto;height:var(--p04-logoloop-logoHeight);object-fit:contain;image-rendering:-webkit-optimize-contrast;-webkit-user-drag:none;pointer-events:none;display:block}.p04-logoloop__node,.p04-logoloop__item img{transition:transform .3s cubic-bezier(.4,0,.2,1)}.p04-logoloop--scale-hover .p04-logoloop__item:hover img,.p04-logoloop--scale-hover .p04-logoloop__item:hover .p04-logoloop__node{transform:scale(1.2)}.p04-logoloop__label{font-size:max(12px, calc(var(--p04-logoloop-logoHeight) * .5));letter-spacing:-.01em;white-space:nowrap;font-weight:600;line-height:1.2}.p04-logoloop[data-labels=below] .p04-logoloop__label{font-size:max(11px, calc(var(--p04-logoloop-logoHeight) * .26));letter-spacing:0;opacity:.72;font-weight:500}.p04-logoloop__tip{margin-top:calc(var(--p04-logoloop-logoHeight) * .2);font-size:max(11px, calc(var(--p04-logoloop-logoHeight) * .26));white-space:nowrap;opacity:0;pointer-events:none;font-weight:500;line-height:1.2;transition:opacity .25s,translate .25s;position:absolute;top:100%;left:50%;translate:-50% 4px}.p04-logoloop--vertical .p04-logoloop__tip{margin-top:0;margin-left:calc(var(--p04-logoloop-logoHeight) * .25);top:50%;left:100%;translate:4px -50%}.p04-logoloop__item:hover .p04-logoloop__tip,.p04-logoloop__item:focus-within .p04-logoloop__tip,.p04-logoloop__item[data-active] .p04-logoloop__tip{opacity:.8;translate:-50%}.p04-logoloop--vertical .p04-logoloop__item:hover .p04-logoloop__tip,.p04-logoloop--vertical .p04-logoloop__item:focus-within .p04-logoloop__tip,.p04-logoloop--vertical .p04-logoloop__item[data-active] .p04-logoloop__tip{translate:0 -50%}.p04-logoloop[data-muted] .p04-logoloop__content{filter:grayscale(var(--p04-logoloop-gray,1));opacity:var(--p04-logoloop-dim,.5)}.p04-logoloop[data-muted] .p04-logoloop__item:hover .p04-logoloop__content,.p04-logoloop[data-muted] .p04-logoloop__item:focus-within .p04-logoloop__content,.p04-logoloop[data-muted] .p04-logoloop__item[data-active] .p04-logoloop__content{filter:none;opacity:1}.p04-logoloop__item[data-color]:hover .p04-logoloop__content,.p04-logoloop__item[data-color]:focus-within .p04-logoloop__content,.p04-logoloop__item[data-color][data-active] .p04-logoloop__content{color:var(--p04-logoloop-item-color)}.p04-logoloop:not([data-muted]) .p04-logoloop__item:not([data-color]) a.p04-logoloop__content:hover{opacity:.8}@media (prefers-reduced-motion:reduce){.p04-logoloop__content,.p04-logoloop__node,.p04-logoloop__item img,.p04-logoloop__tip{transition:none}}.pl-root{min-width:0;max-width:100%;position:relative;overflow-x:clip}.pl-lanes{grid-template-columns:minmax(0,1fr);gap:14px;min-width:0;max-width:100%;display:grid}.pl-card{box-sizing:border-box;color:#e5e5e5;width:clamp(230px,72vw,300px);font-family:var(--font-sans);text-align:left;white-space:normal;background:#080808;border:1px solid #292929;border-radius:4px;flex-direction:column;transition:border-color .2s;display:flex;overflow:hidden}.pl-card:hover{border-color:#38bdf8}.pl-media{aspect-ratio:16/9;background:#111;overflow:hidden}.pl-card .pl-media img{object-fit:contain;object-position:center;width:100%;height:100%;display:block}.pl-ph{color:#38bdf8;opacity:.6;justify-content:center;align-items:center;width:100%;height:100%;display:flex}.pl-ph svg{width:28px;height:28px}.pl-body{flex-direction:column;flex:1;gap:8px;min-width:0;padding:14px 16px 12px;display:flex}.pl-name{font-family:var(--font-display);color:#fafafa;overflow-wrap:anywhere;margin:0;font-size:15px;font-weight:600;line-height:1.25}.pl-desc{color:#a1a1a1;white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:13px;line-height:1.4;overflow:hidden}.pl-tech{flex-wrap:wrap;gap:6px;margin-top:2px;display:flex}.pl-chip{color:#d4d4d4;background:#0c0c0c;border:1px solid #292929;border-radius:4px;justify-content:center;align-items:center;min-width:28px;height:26px;padding:0 6px;display:inline-flex}.pl-card .pl-chip img{object-fit:contain;width:16px;height:16px;display:block}.pl-chip-txt{font-family:var(--font-display);color:#a1a1a1;font-size:10px}.pl-foot{flex-wrap:wrap;justify-content:space-between;gap:0 8px;margin-top:auto;padding-top:6px;display:flex}.pl-btn{cursor:pointer;min-height:44px;font-family:var(--font-display);color:#fafafa;background:0 0;border:0;align-items:center;gap:6px;font-size:12px;font-weight:600;text-decoration:none;display:inline-flex}.pl-btn svg{flex:none;width:14px;height:14px}.pl-btn:hover{color:#38bdf8}.pl-btn:focus-visible{outline-offset:4px;outline:2px solid #fafafa}.pl-sr{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;list-style:none;position:absolute;overflow:hidden}.pl-sr:focus-within{clip:auto;white-space:normal;width:auto;height:auto;margin:20px 0 0;position:static;overflow:visible}.pl-sr li{color:#d4d4d4;border-top:1px solid #292929;padding:10px 0}.pl-sr h3{font-family:var(--font-display);color:#fafafa;margin:0 0 4px;font-size:15px;font-weight:600}.pl-sr p{color:#a1a1a1;margin:0 0 6px}.pl-sr a,.pl-sr button{font:inherit;cursor:pointer;color:#38bdf8;background:0 0;border:0;text-decoration:underline}.pl-sr a:focus-visible,.pl-sr button:focus-visible{outline-offset:3px;outline:2px solid #fafafa}.pl-sr-name{color:#a1a1a1}@media (prefers-reduced-motion:reduce){.pl-card{transition:none}}.projects[data-astro-cid-ftq3vvlr]{box-sizing:border-box;min-width:0;width:min(100%, var(--page-width));padding:clamp(24px, 4vw, 56px) var(--page-gutter);border:1px solid var(--rule);margin:clamp(32px,4vw,64px) auto 0;position:relative;overflow:clip}.heading[data-astro-cid-ftq3vvlr]{justify-content:space-between;align-items:end;gap:20px;margin-bottom:36px;display:flex;position:relative}.heading[data-astro-cid-ftq3vvlr] h2[data-astro-cid-ftq3vvlr]{margin:0;font-size:clamp(1.75rem,2.8vw,2.5rem);font-weight:600;line-height:1.1}.heading[data-astro-cid-ftq3vvlr] p[data-astro-cid-ftq3vvlr]{color:#aaa;background:#000;margin:0;font-size:14px}.sr-only[data-astro-cid-ftq3vvlr]{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.actions[data-astro-cid-ftq3vvlr]{justify-content:flex-end;align-items:center;gap:8px;margin-top:12px;padding-top:0;display:flex}.actions[data-astro-cid-ftq3vvlr] a[data-astro-cid-ftq3vvlr]{color:#fafafa;min-height:44px;font-family:var(--font-display);white-space:nowrap;cursor:pointer;background:#242424;border:1px solid #0000;border-radius:4px;justify-content:center;align-items:center;gap:5px;padding:0 12px;font-size:12px;font-weight:600;line-height:1;text-decoration:none;transition:background-color .16s,color .16s,opacity .16s;display:inline-flex}.actions[data-astro-cid-ftq3vvlr] a[data-astro-cid-ftq3vvlr]:hover,.details-toggle[data-astro-cid-ftq3vvlr]:hover{color:#fff;background:#303030}.actions[data-astro-cid-ftq3vvlr] a[data-astro-cid-ftq3vvlr]:focus-visible,.details-toggle[data-astro-cid-ftq3vvlr]:focus-visible{outline-offset:4px;outline:2px solid #fafafa}.actions[data-astro-cid-ftq3vvlr] svg[data-astro-cid-ftq3vvlr]{flex:none;width:14px;height:14px}.details-toggle[data-astro-cid-ftq3vvlr]{color:#fafafa;min-height:44px;font-family:var(--font-display);white-space:nowrap;cursor:pointer;background:#242424;border:1px solid #0000;border-radius:4px;justify-content:center;align-items:center;gap:5px;padding:0 12px;font-size:12px;font-weight:600;line-height:1;text-decoration:none;transition:background-color .16s,color .16s,opacity .16s;display:inline-flex}a[data-astro-cid-ftq3vvlr]:focus-visible,button[data-astro-cid-ftq3vvlr]:focus-visible,summary[data-astro-cid-ftq3vvlr]:focus-visible{outline-offset:3px;outline:2px solid #fff}.empty[data-astro-cid-ftq3vvlr]{color:#aaa;padding:40px 0}.projects[data-astro-cid-ftq3vvlr]{overflow:clip}.projects[data-astro-cid-ftq3vvlr] .actions[data-astro-cid-ftq3vvlr]{align-self:flex-end}.description[data-astro-cid-ftq3vvlr]{min-height:3em}.projects[data-astro-cid-ftq3vvlr] .actions[data-astro-cid-ftq3vvlr]{justify-content:flex-end;align-self:flex-end;align-items:center;gap:8px;margin-top:12px;padding-top:0;display:flex}.description[data-astro-cid-ftq3vvlr]{-webkit-line-clamp:2;overflow-wrap:anywhere;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}@media (prefers-reduced-motion:reduce){.actions[data-astro-cid-ftq3vvlr] a[data-astro-cid-ftq3vvlr],.details-toggle[data-astro-cid-ftq3vvlr]{transition:none}}@media (width<=380px){.actions[data-astro-cid-ftq3vvlr] a[data-astro-cid-ftq3vvlr],.details-toggle[data-astro-cid-ftq3vvlr]{min-height:44px;padding-inline:10px}.stack[data-astro-cid-ftq3vvlr] li[data-astro-cid-ftq3vvlr]{flex-basis:20px;width:20px;height:28px}.stack[data-astro-cid-ftq3vvlr] img[data-astro-cid-ftq3vvlr],.stack[data-astro-cid-ftq3vvlr] svg[data-astro-cid-ftq3vvlr]{width:18px;height:18px}}.project-modal[data-astro-cid-ftq3vvlr] .actions[data-astro-cid-ftq3vvlr]{margin-top:24px}.education[data-astro-cid-ew4vagfh]{isolation:isolate;width:min(100%, var(--page-width));padding:clamp(24px, 4vw, 56px) var(--page-gutter);border:1px solid var(--rule);color:var(--foreground);margin:32px auto 0;position:relative;overflow:clip}.education-waves[data-astro-cid-ew4vagfh]{z-index:-1;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.education-heading[data-astro-cid-ew4vagfh]{z-index:1;justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:clamp(24px,4vw,48px);display:flex;position:relative}.education-heading[data-astro-cid-ew4vagfh] h2[data-astro-cid-ew4vagfh]{margin:0;font-size:clamp(1.75rem,2.8vw,2.5rem);font-weight:600;line-height:1.1}.level[data-astro-cid-ew4vagfh],.status[data-astro-cid-ew4vagfh]{color:var(--muted);letter-spacing:.12em;text-transform:uppercase;font-size:.7rem}.records[data-astro-cid-ew4vagfh]{z-index:1;gap:0;display:grid;position:relative}.record[data-astro-cid-ew4vagfh]{border-top:1px solid var(--rule);grid-template-columns:48px minmax(0,1fr) minmax(170px,auto);align-items:center;gap:clamp(16px,3vw,40px);min-width:0;padding:24px 0;display:grid;position:relative}.number[data-astro-cid-ew4vagfh]{color:#0af;font:500 12px var(--font-display)}.record-copy[data-astro-cid-ew4vagfh]{min-width:0}.level[data-astro-cid-ew4vagfh]{margin:0 0 8px}.record[data-astro-cid-ew4vagfh] h3[data-astro-cid-ew4vagfh]{letter-spacing:-.035em;overflow-wrap:anywhere;max-width:34ch;margin:0;font-size:clamp(1.1rem,2vw,1.6rem);line-height:1.18}.institution[data-astro-cid-ew4vagfh]{color:#bdbdbd;margin:8px 0 0;font-size:14px}.record-meta[data-astro-cid-ew4vagfh]{text-align:right;justify-items:end;gap:12px;display:grid}.period[data-astro-cid-ew4vagfh]{color:#aaa;margin:0;font-size:12px}.status[data-astro-cid-ew4vagfh]{letter-spacing:.06em;border:1px solid #363636;padding:5px 8px}.empty[data-astro-cid-ew4vagfh]{color:var(--muted)}.education--1[data-astro-cid-ew4vagfh] .record[data-astro-cid-ew4vagfh]{grid-template-columns:64px minmax(0,1fr) minmax(190px,auto);padding-block:28px}.education--1[data-astro-cid-ew4vagfh] .number[data-astro-cid-ew4vagfh]{align-self:start;padding-top:4px;font-size:16px}.education--1[data-astro-cid-ew4vagfh] .record-meta[data-astro-cid-ew4vagfh]{align-self:start;padding-top:4px}.education--2[data-astro-cid-ew4vagfh] .records[data-astro-cid-ew4vagfh]{border-left:1px solid #3d3d3d;padding-left:24px}.education--2[data-astro-cid-ew4vagfh] .record[data-astro-cid-ew4vagfh]{grid-template-columns:minmax(0,1fr) minmax(170px,auto);padding:24px 0 24px 28px}.education--2[data-astro-cid-ew4vagfh] .number[data-astro-cid-ew4vagfh]{background:#0af;border:3px solid #000;border-radius:50%;width:14px;height:14px;font-size:0;position:absolute;top:30px;left:-31px}.education--2[data-astro-cid-ew4vagfh] .record-meta[data-astro-cid-ew4vagfh]{grid-area:1/2}.education--3[data-astro-cid-ew4vagfh] .records[data-astro-cid-ew4vagfh]{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.education--3[data-astro-cid-ew4vagfh] .record[data-astro-cid-ew4vagfh]{border:1px solid var(--rule);background:#080808;grid-template-columns:1fr;align-content:space-between;gap:24px;min-height:230px;padding:22px}.education--3[data-astro-cid-ew4vagfh] .number[data-astro-cid-ew4vagfh]{font-size:13px;position:absolute;top:20px;right:22px}.education--3[data-astro-cid-ew4vagfh] .record-copy[data-astro-cid-ew4vagfh]{padding-top:28px}.education--3[data-astro-cid-ew4vagfh] .record-meta[data-astro-cid-ew4vagfh]{justify-content:space-between;align-items:center;justify-items:initial;text-align:left;flex-wrap:wrap;display:flex}.education--4[data-astro-cid-ew4vagfh] .record[data-astro-cid-ew4vagfh]{border-top:0;border-bottom:1px dashed #aaa;grid-template-columns:minmax(0,1fr) minmax(180px,auto);padding:20px 0}.education--4[data-astro-cid-ew4vagfh] .number[data-astro-cid-ew4vagfh]{color:#888;font-family:ui-monospace,monospace}.education--4[data-astro-cid-ew4vagfh] .record[data-astro-cid-ew4vagfh] h3[data-astro-cid-ew4vagfh]{font-size:clamp(1rem,1.6vw,1.25rem)}.education--4[data-astro-cid-ew4vagfh] .status[data-astro-cid-ew4vagfh]{color:#0af;border:0;padding:0}.education--5[data-astro-cid-ew4vagfh] .record[data-astro-cid-ew4vagfh]{grid-template-columns:minmax(0,1fr) minmax(190px,.65fr);gap:24px;padding-block:30px}.education--5[data-astro-cid-ew4vagfh] .number[data-astro-cid-ew4vagfh]{display:none}.education--5[data-astro-cid-ew4vagfh] .record-copy[data-astro-cid-ew4vagfh]{grid-area:1/1}.education--5[data-astro-cid-ew4vagfh] .record-meta[data-astro-cid-ew4vagfh]{text-align:left;grid-area:1/2;justify-items:start}.education--5[data-astro-cid-ew4vagfh] .period[data-astro-cid-ew4vagfh]{color:#f5f5f5;font:500 clamp(1rem, 2vw, 1.4rem) var(--font-display);letter-spacing:-.03em}.education--5[data-astro-cid-ew4vagfh] .status[data-astro-cid-ew4vagfh]{border:0;border-left:2px solid #0af;padding:2px 0 2px 10px}@media (width<=650px){.record[data-astro-cid-ew4vagfh],.education--1[data-astro-cid-ew4vagfh] .record[data-astro-cid-ew4vagfh]{grid-template-columns:32px minmax(0,1fr);gap:12px}.education--4[data-astro-cid-ew4vagfh] .record[data-astro-cid-ew4vagfh]{grid-template-columns:minmax(0,1fr);gap:12px}.record-meta[data-astro-cid-ew4vagfh],.education--2[data-astro-cid-ew4vagfh] .record-meta[data-astro-cid-ew4vagfh],.education--4[data-astro-cid-ew4vagfh] .record-meta[data-astro-cid-ew4vagfh]{text-align:left;grid-area:auto/2;justify-items:start}.education--4[data-astro-cid-ew4vagfh] .record-meta[data-astro-cid-ew4vagfh]{grid-column:1}.education--2[data-astro-cid-ew4vagfh] .record[data-astro-cid-ew4vagfh]{grid-template-columns:minmax(0,1fr)}.education--2[data-astro-cid-ew4vagfh] .record-meta[data-astro-cid-ew4vagfh]{grid-column:1}.education--3[data-astro-cid-ew4vagfh] .records[data-astro-cid-ew4vagfh]{grid-template-columns:1fr}.education--5[data-astro-cid-ew4vagfh] .record[data-astro-cid-ew4vagfh]{grid-template-columns:minmax(0,1fr)}.education--5[data-astro-cid-ew4vagfh] .record-copy[data-astro-cid-ew4vagfh],.education--5[data-astro-cid-ew4vagfh] .record-meta[data-astro-cid-ew4vagfh]{grid-area:auto/1}}.gradient-ascii-container{width:100%;height:100%;position:relative;overflow:hidden}.gradient-ascii-canvas{width:100%;height:100%;display:block;position:absolute;inset:0}.stack[data-astro-cid-u256hdza]{isolation:isolate;width:min(100%, var(--page-width));padding:clamp(24px, 4vw, 56px) var(--page-gutter);border:1px solid var(--rule);margin:clamp(32px,4vw,64px) auto 0;position:relative;overflow:hidden}.stack-bg[data-astro-cid-u256hdza]{z-index:-1;pointer-events:none;position:absolute;inset:0}.stack-bg[data-astro-cid-u256hdza]:after{content:"";background:linear-gradient(#0000,#00000073);position:absolute;inset:0}.stack-header[data-astro-cid-u256hdza]{margin-bottom:clamp(28px,4vw,56px)}h2[data-astro-cid-u256hdza]{margin:0;font-size:clamp(1.75rem,2.8vw,2.5rem);font-weight:600;line-height:1.1}.groups[data-astro-cid-u256hdza]{grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:clamp(32px,5vw,56px) clamp(32px,5vw,64px);display:grid}.group[data-astro-cid-u256hdza]{border-top:1px solid #ffffff1f;min-width:0;padding-top:16px}h3[data-astro-cid-u256hdza]{font:500 clamp(1.5rem, 3vw, 2.25rem) / 1.05 var(--font-display);letter-spacing:-.01em;margin:6px 0 16px}.skills[data-astro-cid-u256hdza]{flex-wrap:wrap;gap:10px 20px;margin:0;padding:0;list-style:none;display:flex}li[data-astro-cid-u256hdza]{color:#e5e5e5;align-items:center;gap:8px;font-size:15px;transition:color .2s;display:inline-flex}li[data-astro-cid-u256hdza]:hover{color:#ffcb5c}li[data-astro-cid-u256hdza] img[data-astro-cid-u256hdza]{object-fit:contain;flex:none;width:18px;height:18px;transition:transform .2s}li[data-astro-cid-u256hdza]:hover img[data-astro-cid-u256hdza]{transform:scale(1.15)}.empty[data-astro-cid-u256hdza]{color:var(--muted)}@media (prefers-reduced-motion:reduce){li[data-astro-cid-u256hdza],li[data-astro-cid-u256hdza] img[data-astro-cid-u256hdza]{transition:none}}.dot-grid-bg[data-astro-cid-iqjm6qdu]{z-index:-1;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.certificates[data-astro-cid-wrpykb3m]{isolation:isolate;box-sizing:border-box;min-width:0;width:min(100%, var(--page-width));padding:clamp(24px, 4vw, 56px) var(--page-gutter);border:1px solid var(--rule);margin:clamp(32px,4vw,64px) auto 0;position:relative;overflow:clip}.section-heading[data-astro-cid-wrpykb3m]{justify-content:space-between;align-items:end;gap:20px;margin-bottom:48px;display:flex}h2[data-astro-cid-wrpykb3m]{font:600 clamp(1.75rem, 2.8vw, 2.5rem)/1.1 var(--font-display);margin:0}.years[data-astro-cid-wrpykb3m]{gap:32px;display:grid}.year-group[data-astro-cid-wrpykb3m]{border-bottom:1px dashed #323232;grid-template-columns:minmax(110px,180px) minmax(0,1fr);align-items:start;gap:24px;padding-bottom:28px;display:grid}.year-group[data-astro-cid-wrpykb3m],.certificate[data-astro-cid-wrpykb3m],.copy[data-astro-cid-wrpykb3m]{min-width:0}.year[data-astro-cid-wrpykb3m]{color:#38bdf8;font:700 clamp(36px, 6vw, 72px) / 1 var(--font-display);letter-spacing:-.06em;margin:0}.items[data-astro-cid-wrpykb3m]{gap:20px;display:grid}.certificate[data-astro-cid-wrpykb3m]{justify-content:space-between;align-items:flex-end;gap:16px;display:flex}.copy[data-astro-cid-wrpykb3m]{flex:1}.issuer[data-astro-cid-wrpykb3m]{color:#a1a1a1;margin:0 0 4px;font-size:12px}h4[data-astro-cid-wrpykb3m]{color:#f1f1f1;font:600 clamp(15px, 1.4vw, 18px) / 1.35 var(--font-display);letter-spacing:-.025em;margin:0}h4[data-astro-cid-wrpykb3m] .cert-encrypted{color:#38bdf8}.pdf[data-astro-cid-wrpykb3m]{color:#ddd;min-height:44px;font:600 12px var(--font-display);white-space:nowrap;justify-content:center;align-items:center;gap:9px;text-decoration:none;display:inline-flex}.pdf[data-astro-cid-wrpykb3m]:hover{color:#38bdf8}.pdf[data-astro-cid-wrpykb3m]:focus-visible{outline-offset:4px;outline:2px solid #fff}.empty[data-astro-cid-wrpykb3m]{color:var(--muted)}.sr-only[data-astro-cid-wrpykb3m]{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width<=640px){.year-group[data-astro-cid-wrpykb3m]{grid-template-columns:1fr;gap:12px}}.skills[data-astro-cid-2zwc476k]{box-sizing:border-box;min-width:0;width:min(100%, var(--page-width));padding:clamp(24px, 4vw, 56px) var(--page-gutter);border:1px solid var(--rule);margin:clamp(32px,4vw,64px) auto 0;position:relative;overflow:clip}.heading[data-astro-cid-2zwc476k]{margin-bottom:clamp(24px,3vw,40px)}h2[data-astro-cid-2zwc476k]{font:600 clamp(1.75rem, 2.8vw, 2.5rem) / 1.1 var(--font-display);margin:0}.win[data-astro-cid-2zwc476k]{font-family:var(--font-display)}.body[data-astro-cid-2zwc476k]{font-size:14px;line-height:1.75}.prompt[data-astro-cid-2zwc476k],.root[data-astro-cid-2zwc476k]{color:#fafafa;margin:0 0 10px}.ps[data-astro-cid-2zwc476k]{color:#38bdf8}.note[data-astro-cid-2zwc476k]{color:#737373}.tree[data-astro-cid-2zwc476k],.files[data-astro-cid-2zwc476k]{margin:0;padding:0;list-style:none}.group[data-astro-cid-2zwc476k]{margin-top:8px}.line[data-astro-cid-2zwc476k]{grid-template-columns:auto minmax(0,1fr);align-items:start;display:grid}.pre[data-astro-cid-2zwc476k]{color:#525252;white-space:pre}.dir[data-astro-cid-2zwc476k]{color:#fafafa;min-width:0;font:inherit;overflow-wrap:anywhere;margin:0;font-weight:600}.text[data-astro-cid-2zwc476k]{color:#e5e5e5;overflow-wrap:anywhere;min-width:0}.num[data-astro-cid-2zwc476k]{color:#ffcb5c;font-weight:600}.text[data-astro-cid-2zwc476k] .skill-decrypt{display:inline!important}.text[data-astro-cid-2zwc476k] .skill-encrypted{color:#38bdf8}.empty[data-astro-cid-2zwc476k]{color:var(--muted)}@media (width<=720px){.body[data-astro-cid-2zwc476k]{font-size:12.5px;line-height:1.7}}.chat-fab[data-astro-cid-pmyxn7tj]{isolation:isolate;z-index:200;right:max(16px, env(safe-area-inset-right));bottom:max(16px, env(safe-area-inset-bottom));color:#fafafa;min-height:46px;font:600 13px var(--font-display);letter-spacing:-.02em;cursor:pointer;background:#0a0a0a;border:1px solid #444;border-radius:999px;align-items:center;gap:9px;padding:0 15px;transition:transform .16s cubic-bezier(.23,1,.32,1),border-color .16s,background-color .16s;animation:2.8s ease-in-out infinite pill-bob;display:inline-flex;position:fixed;box-shadow:0 8px 28px #0000006b}.chat-fab[data-astro-cid-pmyxn7tj] svg[data-astro-cid-pmyxn7tj]{animation:2.4s ease-in-out infinite icon-drift}.chat-fab[data-astro-cid-pmyxn7tj]:hover{background:#161616;border-color:#888}.chat-fab[data-astro-cid-pmyxn7tj]:active{animation:none;transform:scale(.97)}.chat-fab[data-astro-cid-pmyxn7tj]:focus-visible{outline-offset:4px;outline:2px solid #a9c8ff}.chat-fab[data-astro-cid-pmyxn7tj] .fab-x[data-astro-cid-pmyxn7tj]{display:none}.chat-fab[data-astro-cid-pmyxn7tj][aria-expanded=true]{color:#0a0a0a;background:#fafafa;border-color:#fafafa;border-radius:50%;justify-content:center;width:46px;padding:0;animation:none}.chat-fab[data-astro-cid-pmyxn7tj][aria-expanded=true]:hover{background:#e4e4e4}.chat-fab[data-astro-cid-pmyxn7tj][aria-expanded=true]>span[data-astro-cid-pmyxn7tj],.chat-fab[data-astro-cid-pmyxn7tj][aria-expanded=true]>svg[data-astro-cid-pmyxn7tj]:not(.fab-x){display:none}.chat-fab[data-astro-cid-pmyxn7tj][aria-expanded=true] .fab-x[data-astro-cid-pmyxn7tj]{animation:none;display:block}@keyframes icon-drift{50%{transform:translateY(-2px)}}@keyframes pill-bob{50%{transform:translateY(-2px)}}.chat-panel[data-astro-cid-pmyxn7tj] [data-astro-cid-pmyxn7tj]:focus-visible{border-color:#8a8a8a;outline:none}.chat-close[data-astro-cid-pmyxn7tj]:focus-visible{color:#fff;text-decoration:underline}.chat-panel[data-astro-cid-pmyxn7tj]{z-index:201;right:max(16px, env(safe-area-inset-right));bottom:calc(max(16px, env(safe-area-inset-bottom)) + 56px);color:#eee;width:min(360px,100vw - 32px);height:min(480px,100dvh - 120px);font:14px/1.45 var(--font-sans);opacity:0;clip-path:inset(100% 0 0 100% round 24px);will-change:clip-path, opacity;background:#0a0a0a;border:1px solid #444;flex-direction:column;transition:opacity .14s ease-in .18s,clip-path .32s cubic-bezier(.65,0,.35,1);display:flex;position:fixed}.chat-panel[data-astro-cid-pmyxn7tj][data-open]{opacity:1;clip-path:inset(0);transition:opacity .15s ease-out,clip-path .48s cubic-bezier(.16,1,.3,1)}.chat-panel[data-astro-cid-pmyxn7tj]>[data-astro-cid-pmyxn7tj]{opacity:0;transition:opacity .12s ease-out,transform .12s ease-out;transform:translateY(10px)}.chat-panel[data-astro-cid-pmyxn7tj][data-open]>[data-astro-cid-pmyxn7tj]{opacity:1;transition:opacity .26s ease-out,transform .38s cubic-bezier(.23,1,.32,1);transform:none}.chat-panel[data-astro-cid-pmyxn7tj][data-open]>[data-astro-cid-pmyxn7tj]:first-child{transition-delay:90ms}.chat-panel[data-astro-cid-pmyxn7tj][data-open]>[data-astro-cid-pmyxn7tj]:nth-child(2){transition-delay:.15s}.chat-panel[data-astro-cid-pmyxn7tj][data-open]>[data-astro-cid-pmyxn7tj]:nth-child(3){transition-delay:.21s}.chat-panel[data-astro-cid-pmyxn7tj][hidden]{display:none}.chat-panel[data-astro-cid-pmyxn7tj] header[data-astro-cid-pmyxn7tj]{font-family:var(--font-display);border-bottom:1px solid #333;justify-content:space-between;align-items:center;padding:10px 14px;display:flex}.chat-send[data-astro-cid-pmyxn7tj]:disabled{opacity:.4;pointer-events:none}.chat-close[data-astro-cid-pmyxn7tj]{color:inherit;cursor:pointer;background:0 0;border:0;font-size:22px;line-height:1}.chat-log[data-astro-cid-pmyxn7tj]{flex-direction:column;flex:1;gap:8px;padding:14px;display:flex;overflow-y:auto}.chat-log[data-astro-cid-pmyxn7tj] .msg{overflow-wrap:anywhere;border:1px solid #0000;border-radius:4px;max-width:85%;margin:0;padding:9px 12px;font-size:14px;line-height:1.5;animation:.26s cubic-bezier(.23,1,.32,1) both msg-in}.chat-log[data-astro-cid-pmyxn7tj] .msg.assistant{color:#ededed;background:#161616;border-color:#2c2c2c;align-self:flex-start}.chat-log[data-astro-cid-pmyxn7tj] .msg.user{color:#0a0a0a;background:#a9c8ff;align-self:flex-end}.chat-log[data-astro-cid-pmyxn7tj] .msg p{margin:0 0 6px}.chat-log[data-astro-cid-pmyxn7tj] .msg>:last-child{margin-bottom:0}.chat-log[data-astro-cid-pmyxn7tj] .msg ul,.chat-log[data-astro-cid-pmyxn7tj] .msg ol{margin:4px 0;padding-left:18px}.chat-log[data-astro-cid-pmyxn7tj] .msg li{margin-bottom:2px}.chat-log[data-astro-cid-pmyxn7tj] .msg strong{font-weight:600}.chat-log[data-astro-cid-pmyxn7tj] .msg a{color:#a9c8ff;text-underline-offset:2px;text-decoration:underline}.chat-log[data-astro-cid-pmyxn7tj] .msg.user a{color:inherit}.chat-log[data-astro-cid-pmyxn7tj] .msg code{background:#000;border-radius:3px;padding:1px 5px;font-size:12px}.chat-log[data-astro-cid-pmyxn7tj] .chat-cursor{vertical-align:text-bottom;background:currentColor;width:2px;height:1em;margin-left:2px;animation:.9s step-end infinite cursor-blink;display:inline-block}.chat-log[data-astro-cid-pmyxn7tj] .msg.typing{color:#ededed;align-items:center;min-height:26px;padding:6px 10px;display:flex}@keyframes msg-in{0%{opacity:0;transform:translateY(6px)}}@keyframes cursor-blink{50%{opacity:0}}form[data-astro-cid-pmyxn7tj]{border-top:1px solid #333;gap:8px;padding:10px;display:flex;position:relative}input[data-astro-cid-pmyxn7tj]{color:#fff;min-width:0;min-height:40px;font:inherit;background:#000;border:1px solid #444;flex:1;padding:0 46px 0 10px}.chat-send[data-astro-cid-pmyxn7tj]{color:#fff;cursor:pointer;background:#242424;border:0;border-radius:4px;place-items:center;width:32px;height:32px;padding:0;transition:transform .16s,background-color .16s,opacity .16s;display:grid;position:absolute;bottom:14px;right:14px}@media (hover:hover) and (pointer:fine){.chat-send[data-astro-cid-pmyxn7tj]:hover{background:#353535}}.chat-send[data-astro-cid-pmyxn7tj]:active{transform:scale(.92)}.chat-send[data-astro-cid-pmyxn7tj]:focus-visible{outline-offset:1px;outline:2px solid #fff}form[data-astro-cid-pmyxn7tj]:has(input:placeholder-shown) .chat-send[data-astro-cid-pmyxn7tj]{opacity:.4;pointer-events:none}@media (width<=480px){.chat-panel[data-astro-cid-pmyxn7tj]{bottom:calc(max(16px, env(safe-area-inset-bottom)) + 60px)}}@media (prefers-reduced-motion:reduce){.chat-fab[data-astro-cid-pmyxn7tj]{transition:none;animation:none}.chat-fab[data-astro-cid-pmyxn7tj] svg[data-astro-cid-pmyxn7tj]{animation:none}.chat-panel[data-astro-cid-pmyxn7tj]{clip-path:none;transition:opacity .1s}.chat-log[data-astro-cid-pmyxn7tj] .msg{animation:none}.chat-panel[data-astro-cid-pmyxn7tj]>[data-astro-cid-pmyxn7tj],.chat-panel[data-astro-cid-pmyxn7tj][data-open]>[data-astro-cid-pmyxn7tj]{opacity:1;transition:none;transform:none}}.lattice-loader{--ll-cell:3px;--ll-gap:1.5px;--ll-idle:.15;--ll-peak:1;--ll-cycle:.864s;align-items:center;gap:7px;font-size:11px;line-height:1;display:inline-flex}.lattice-loader__grid{grid-template-columns:repeat(3, var(--ll-cell));gap:var(--ll-gap);flex:none;display:grid}.lattice-loader__cell{width:var(--ll-cell);height:var(--ll-cell);opacity:var(--ll-idle);animation:lattice-on var(--ll-cycle) cubic-bezier(.77, 0, .175, 1) infinite;background:currentColor;border-radius:50%}.lattice-loader__cell[data-hole]{opacity:calc(var(--ll-idle) * .47);animation:none}.lattice-loader__label{font-weight:500}.lattice-loader__timer{font-variant-numeric:tabular-nums;opacity:.6;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10px}@keyframes lattice-on{0%,to{opacity:var(--ll-idle)}18%,42%{opacity:var(--ll-peak)}62%{opacity:var(--ll-idle)}}@media (prefers-reduced-motion:reduce){.lattice-loader{--ll-peak:.7}.lattice-loader__cell{animation-duration:1.4s!important;animation-delay:0s!important}}.site-bg[data-astro-cid-if6eu3cf]{z-index:-1;pointer-events:none;opacity:.15;position:fixed;inset:0}.portfolio-main>:is(section,#personal-data){background-color:var(--background)}.about-hero[data-astro-cid-lcdefpme]{min-height:calc(100dvh - clamp(88px,10dvh,112px) - 16px);width:min(100%, var(--page-width));flex:1;margin:0 auto;display:grid}.hero-panel[data-astro-cid-lcdefpme]{--text-frame-top:29%;--text-frame-height:42%;isolation:isolate;border:1px solid var(--rule);background-color:var(--background);display:grid;position:relative;overflow:clip}.hero-grid[data-astro-cid-lcdefpme]{z-index:0;pointer-events:none;width:100%;position:absolute;inset:0 auto 0 0;overflow:hidden}.hero-grid[data-astro-cid-lcdefpme]:before{content:"";background-image:var(--grid-lines);opacity:.45;background-repeat:no-repeat;background-size:100% 100%;animation:12s ease-in-out infinite alternate grid-move;position:absolute;inset:0}.hero-spot-layer[data-astro-cid-lcdefpme]{animation:12s ease-in-out infinite alternate grid-move;position:absolute;inset:0}.hero-spot[data-astro-cid-lcdefpme]{will-change:transform;filter:brightness(2.4)saturate(1.4);width:560px;height:560px;margin:-280px 0 0 -280px;position:absolute;top:0;left:0;overflow:hidden;transform:translate(-400px,-400px);-webkit-mask-image:radial-gradient(circle closest-side,#000 0%,#0009 45%,#0000 100%);mask-image:radial-gradient(circle closest-side,#000 0%,#0009 45%,#0000 100%)}.hero-spot-image[data-astro-cid-lcdefpme]{width:var(--grid-w,100%);height:var(--grid-h,100%);background-image:var(--grid-lines);will-change:transform;background-repeat:no-repeat;background-size:100% 100%;position:absolute;top:0;left:0}@keyframes grid-move{to{transform:translate(12px,8px)}}@media (prefers-reduced-motion:reduce){.hero-grid[data-astro-cid-lcdefpme]:before,.hero-spot-layer[data-astro-cid-lcdefpme]{animation:none}}.hero-copy[data-astro-cid-lcdefpme],.hero-title[data-astro-cid-lcdefpme],.hero-role[data-astro-cid-lcdefpme],.hero-bio[data-astro-cid-lcdefpme],.hero-error[data-astro-cid-lcdefpme]{z-index:1;position:relative}.hero-copy[data-astro-cid-lcdefpme]{padding:clamp(28px,5vw,72px);flex-direction:column;justify-content:center;align-self:stretch;align-items:flex-start;min-width:0;padding-block:clamp(28px,6svh,72px);display:flex}.hero-title[data-astro-cid-lcdefpme]{letter-spacing:-.055em;text-wrap:balance;overflow-wrap:anywhere;margin:0;font-size:clamp(2.6rem,4.7vw,4.5rem);font-weight:600;line-height:1.02}.hero-role[data-astro-cid-lcdefpme]{color:var(--foreground);font-family:var(--font-display);text-align:left;margin:15px 0 0;font-size:clamp(1.05rem,1.6vw,1.35rem);font-weight:600;line-height:1.4}.hero-bio[data-astro-cid-lcdefpme],.hero-error[data-astro-cid-lcdefpme]{color:var(--muted);margin:15px 0 0;font-size:1rem;line-height:1.7}@media (width<=600px){.hero-title[data-astro-cid-lcdefpme]{font-size:clamp(2rem,8vw,2.9rem)}.hero-role[data-astro-cid-lcdefpme]{font-size:.875rem}.hero-bio[data-astro-cid-lcdefpme],.hero-error[data-astro-cid-lcdefpme]{font-size:.875rem;line-height:1.55}}
