.scene-layer[data-astro-cid-w3ulfbjo]{position:fixed;inset:0;z-index:0;overflow:hidden;background:radial-gradient(circle at 22% 18%,rgba(220,232,255,.5),transparent 16%),radial-gradient(circle at 70% 70%,rgba(20,36,64,.6),transparent 42%),linear-gradient(180deg,#05070f,#0a1326 52%,#060912)}#portfolio-scene-canvas[data-astro-cid-w3ulfbjo],.scene-fallback[data-astro-cid-w3ulfbjo]{position:absolute;inset:0;width:100%;height:100%}.scene-fallback[data-astro-cid-w3ulfbjo]{background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.12),transparent 18%),linear-gradient(180deg,#ffffff2e,#10121833);mix-blend-mode:screen;opacity:.6}.chip-list[data-astro-cid-4qlufvhg]{list-style:none;display:flex;flex-wrap:wrap;gap:var(--space-2);padding:0;margin:var(--space-1) 0 0}.chip-list[data-astro-cid-4qlufvhg] li[data-astro-cid-4qlufvhg]{display:inline-flex;align-items:center;gap:.4375rem;flex:none;white-space:nowrap;border-radius:999px;padding:.4375rem .75rem .4375rem .5rem;border:1px solid rgba(15,18,23,.12);background:#ffffff75;font:var(--typography-label);color:#11141a}.chip-icon[data-astro-cid-4qlufvhg]{width:1rem;height:1rem;display:block;object-fit:contain}.chip-icon-emoji[data-astro-cid-4qlufvhg]{display:grid;place-items:center;font-size:.875rem;line-height:1}.portfolio-bottom-nav[data-astro-cid-hpwlolwf]{position:fixed;right:0;bottom:0;left:0;z-index:12;display:block;padding-bottom:env(safe-area-inset-bottom)}.bottom-nav-shell[data-astro-cid-hpwlolwf]{position:relative;height:var(--mobile-bottom-nav-height);width:100%}.bottom-nav-bar[data-astro-cid-hpwlolwf]{position:absolute;right:0;bottom:0;left:0;color:#f8f4ebd1;backdrop-filter:blur(1px);-webkit-backdrop-filter:blur(1px);filter:drop-shadow(0 14px 24px rgba(0,0,0,.24))}.bottom-nav-bar[data-astro-cid-hpwlolwf] svg[data-astro-cid-hpwlolwf]{display:block;width:100%;height:5.375rem}.bottom-nav-bar[data-astro-cid-hpwlolwf] path[data-astro-cid-hpwlolwf]{fill:currentColor}.bottom-nav-actions[data-astro-cid-hpwlolwf]{position:absolute;inset-inline:0;bottom:var(--space-2);z-index:1;display:flex;align-items:center;padding-inline:var(--space-3)}.bottom-nav-group[data-astro-cid-hpwlolwf]{display:flex;flex:1;align-items:center;justify-content:space-evenly;gap:var(--space-1)}.bottom-nav-center-label[data-astro-cid-hpwlolwf]{display:flex;width:5.875rem;min-height:3.875rem;flex:0 0 auto;align-items:center;justify-content:center;padding:var(--space-2) var(--space-1);padding-top:2rem;color:var(--fg-muted);text-align:center;transition:color .15s ease-in-out,transform .15s ease-in-out}.bottom-nav-group[data-astro-cid-hpwlolwf] a[data-astro-cid-hpwlolwf],.bottom-nav-center[data-astro-cid-hpwlolwf]{display:flex;min-width:0;flex:1 1 0;flex-direction:column;align-items:center;justify-content:center;gap:.3rem;color:var(--fg-muted);text-align:center;transition:color .15s ease-in-out,transform .15s ease-in-out}.bottom-nav-group[data-astro-cid-hpwlolwf] a[data-astro-cid-hpwlolwf]{min-height:3.875rem;padding:var(--space-2) var(--space-1);border-radius:1rem}.bottom-nav-group[data-astro-cid-hpwlolwf] a[data-astro-cid-hpwlolwf]:hover,.bottom-nav-center[data-astro-cid-hpwlolwf]:hover,.bottom-nav-center-label[data-astro-cid-hpwlolwf]:hover{color:var(--fg-bright)}.bottom-nav-group[data-astro-cid-hpwlolwf] a[data-astro-cid-hpwlolwf][data-active=true],.bottom-nav-center[data-astro-cid-hpwlolwf][data-active=true],.bottom-nav-center-label[data-astro-cid-hpwlolwf][data-active=true]{color:var(--accent)}.bottom-nav-group[data-astro-cid-hpwlolwf] span[data-astro-cid-hpwlolwf],.bottom-nav-center-label[data-astro-cid-hpwlolwf] span[data-astro-cid-hpwlolwf]{display:block;width:100%;overflow:hidden;font:var(--typography-caption);font-weight:600;line-height:1;text-overflow:ellipsis;white-space:nowrap}.bottom-nav-group[data-astro-cid-hpwlolwf] svg[data-astro-cid-hpwlolwf],.bottom-nav-center[data-astro-cid-hpwlolwf] svg[data-astro-cid-hpwlolwf]{width:2rem;height:2rem;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.bottom-nav-group[data-astro-cid-hpwlolwf] svg[data-astro-cid-hpwlolwf]{stroke:var(--icon-color, currentColor)}.bottom-nav-center[data-astro-cid-hpwlolwf]{position:absolute;top:-.35rem;left:50%;z-index:2;width:3.8125rem;height:3.8125rem;flex:none;transform:translate(-50%);border:3px solid rgba(248,244,235,.98);border-radius:50%;background:var(--icon-color);box-shadow:0 12px 22px #08081247;color:#fff}.bottom-nav-center[data-astro-cid-hpwlolwf] svg[data-astro-cid-hpwlolwf]{width:2.2rem;height:2.2rem;stroke:currentColor}.bottom-nav-center[data-astro-cid-hpwlolwf]:active,.bottom-nav-group[data-astro-cid-hpwlolwf] a[data-astro-cid-hpwlolwf]:active,.bottom-nav-center-label[data-astro-cid-hpwlolwf]:active{transform:translateY(1px)}.bottom-nav-center[data-astro-cid-hpwlolwf]:active{transform:translate(-50%) translateY(1px)}.bottom-nav-center-label[data-astro-cid-hpwlolwf] span[data-astro-cid-hpwlolwf]{font-size:.68rem;font-weight:700;line-height:1;letter-spacing:.01em;color:currentColor}@media(min-width:721px){.bottom-nav-shell[data-astro-cid-hpwlolwf]{height:8rem}.bottom-nav-group[data-astro-cid-hpwlolwf] a[data-astro-cid-hpwlolwf]{min-height:4.25rem;padding-inline:var(--space-3)}.bottom-nav-center-label[data-astro-cid-hpwlolwf]{min-height:4.25rem;padding-inline:var(--space-3);padding-top:2.15rem}.bottom-nav-group[data-astro-cid-hpwlolwf] span[data-astro-cid-hpwlolwf],.bottom-nav-center-label[data-astro-cid-hpwlolwf] span[data-astro-cid-hpwlolwf]{font-size:var(--text-sm)}.bottom-nav-group[data-astro-cid-hpwlolwf] svg[data-astro-cid-hpwlolwf]{width:2.2rem;height:2.2rem}.bottom-nav-center[data-astro-cid-hpwlolwf]{width:4.25rem;height:4.25rem;top:-.5rem}.bottom-nav-center[data-astro-cid-hpwlolwf] svg[data-astro-cid-hpwlolwf]{width:2.4rem;height:2.4rem}}.article-sheet[data-astro-cid-ahnwqab5]{position:fixed;inset:0;z-index:200}.article-sheet[data-astro-cid-ahnwqab5][hidden]{display:none}.article-sheet__backdrop[data-astro-cid-ahnwqab5]{position:absolute;inset:0;background:#0a0c1080;opacity:0;transition:opacity .45s var(--ease);cursor:pointer}.article-sheet[data-astro-cid-ahnwqab5][data-open=true] .article-sheet__backdrop[data-astro-cid-ahnwqab5]{opacity:1}.article-sheet__dialog[data-astro-cid-ahnwqab5]{position:absolute;inset:clamp(56px,10vh,120px) 0 0 0;display:grid;grid-template-rows:auto minmax(0,1fr);border-radius:28px 28px 0 0;border:1px solid rgba(15,18,23,.1);border-bottom:none;background:#f4f0e8f5;backdrop-filter:blur(22px);box-shadow:0 -24px 60px #08081247;transform:translateY(100%);transition:transform .45s var(--ease);overflow:hidden}.article-sheet[data-astro-cid-ahnwqab5][data-open=true] .article-sheet__dialog[data-astro-cid-ahnwqab5]{transform:translateY(0)}.article-sheet__topbar[data-astro-cid-ahnwqab5]{position:relative;display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-4) clamp(1.25rem,5vw,2rem);border-bottom:1px solid rgba(15,18,23,.08)}.article-sheet__handle[data-astro-cid-ahnwqab5]{position:absolute;top:.6rem;left:50%;width:2.75rem;height:.3rem;border-radius:999px;background:#0f12172e;transform:translate(-50%)}.article-sheet__close[data-astro-cid-ahnwqab5]{display:inline-flex;align-items:center;justify-content:center;width:2.75rem;height:2.75rem;border-radius:999px;border:1px solid rgba(15,18,23,.18);background:#fff9;color:#11141a;cursor:pointer}.article-sheet__close[data-astro-cid-ahnwqab5]:hover,.article-sheet__home[data-astro-cid-ahnwqab5]:hover{background:#0f1217eb;border-color:#0f1217eb;color:#f6f1e8;transform:translateY(-1px)}.sheet-icon[data-astro-cid-ahnwqab5]{width:1.15rem;height:1.15rem;flex:none;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.article-sheet__scroll[data-astro-cid-ahnwqab5]{overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:clamp(1.75rem,5vw,3rem) 0 clamp(3rem,8vw,5rem)}.article-sheet__panel[data-astro-cid-ahnwqab5][hidden]{display:none}.article-sheet__panel[data-astro-cid-ahnwqab5] h1[data-astro-cid-ahnwqab5]{font-size:clamp(2rem,4.2vw,3.1rem);line-height:1.08;letter-spacing:-.03em}.portfolio-home{position:relative;z-index:1;color:var(--fg)}.chapter{position:relative;min-height:100vh;padding:clamp(4.5rem,12vw,7rem) clamp(1.25rem,4vw,2.25rem) calc(var(--mobile-bottom-nav-height) + clamp(2.5rem,8vw,4rem));display:grid;align-items:center}.chapter-hero{min-height:112vh;align-items:start;padding-top:0;padding-bottom:clamp(2.5rem,8vw,4rem)}.chapter-copy.hero-copy{position:relative;overflow:hidden;display:flex;flex-direction:column;align-items:flex-start;max-width:none;width:auto;margin-top:40px;padding:clamp(1.75rem,4vw,2.75rem);padding-top:clamp(.4375rem,1vw,.6875rem);border-radius:0;border:0;background:transparent;backdrop-filter:none}.hero-intro-card{display:inline-flex;flex-direction:column;align-items:flex-start;max-width:min(64rem,100%);padding:clamp(1rem,2.4vw,1.5rem);border-radius:1.5rem;background:#000000b8;box-shadow:0 16px 34px #0003}.hero-copy h1,.hero-copy .hero-summary{position:relative;z-index:1}.hero-copy h1{color:#fff;white-space:nowrap;font-size:clamp(1.9rem,5.5vw,4.4rem);margin-top:0;line-height:.7;text-shadow:0 3px 18px rgba(0,0,0,.55)}.hero-copy h1:before{content:"";display:block;width:clamp(40px,6vw,72px);height:4px;margin-bottom:clamp(.75rem,1.6vw,1.1rem);border-radius:999px;background:linear-gradient(90deg,#fff,#ffffff1a)}.hero-copy .hero-summary{color:#ffffffeb;margin-top:var(--space-5);margin-bottom:0;text-shadow:0 2px 14px rgba(0,0,0,.6)}.hero-wave{position:absolute;left:0;bottom:-1px;z-index:0;width:100%;height:clamp(48px,7vw,84px);pointer-events:none}.hero-wave path{fill:transparent;stroke:transparent;stroke-width:1.5}.linkedin-float{position:fixed;right:clamp(.9rem,2vw,1.5rem);top:50%;z-index:11;display:inline-flex;flex-direction:column;gap:.2rem;align-items:center;justify-content:center;width:3.9rem;min-height:4.7rem;padding:.55rem .35rem .45rem;border:1px solid rgba(15,18,23,.12);border-radius:1rem 0 0 1rem;background:#f8f4ebeb;box-shadow:0 12px 28px #0f121729;transform:translateY(-50%);transition:transform .2s var(--ease),box-shadow .2s var(--ease),background .2s var(--ease);backdrop-filter:blur(12px)}.linkedin-float:hover,.linkedin-float:focus-visible{transform:translateY(-50%) translate(-4px);box-shadow:0 18px 34px #0f121738;background:#fffffffa}.linkedin-float-icon{width:1.75rem;height:1.75rem;fill:#0a66c2;flex:none}.linkedin-float-label{color:#0f1217;font:var(--typography-caption);font-weight:700;font-size:.58rem;line-height:1;letter-spacing:.03em}.chapter-copy,.chapter-surface,.track-panel,.experience-stack,.article-grid,.stack-columns,.contact-panel{opacity:0;transform:translateY(36px);transition:opacity .7s var(--ease),transform .8s var(--ease)}[data-revealed=true]{opacity:1;transform:translateY(0)}.chapter-copy{max-width:min(760px,100%);margin-inline:auto;text-align:center}.chapter-kicker,.story-period,.stack-title{font:var(--typography-kicker);letter-spacing:.08em;text-transform:uppercase;color:var(--fg-dim)}h1,h2,h3{color:#0f1217}h1{font-size:clamp(3.8rem,11vw,8.8rem);line-height:.92;font-weight:800;letter-spacing:-.04em}h2{font-size:clamp(2.5rem,6vw,5rem);line-height:.98;letter-spacing:-.03em}h3{font-size:clamp(1.5rem,2.2vw,2rem);line-height:1.12}.hero-summary,.surface-copy p,.story-card p,.article-card p,.contact-panel p{color:#0f1217d1;font:var(--typography-body)}.hero-summary{max-width:56rem;margin:var(--space-4) auto 0;font:var(--typography-body-large);text-align:justify}.hero-actions{display:flex;gap:var(--space-3);flex-wrap:wrap;justify-content:center;margin-top:var(--space-5)}.chapter-slice{grid-template-columns:minmax(0,1.05fr) minmax(280px,440px);gap:clamp(1.5rem,5vw,3.25rem)}.chapter-slice-left{grid-template-columns:minmax(280px,440px) minmax(0,1.05fr)}.chapter-surface{position:relative;padding:clamp(2.375rem,5vw,3.5rem);background:#f6f1e8d1;backdrop-filter:blur(18px);border:1px solid rgba(15,18,23,.08);clip-path:polygon(0 14%,85% 0,100% 18%,100% 100%,0 100%)}.chapter-slice-left .chapter-surface{clip-path:polygon(0 0,100% 12%,100% 100%,16% 100%,0 78%)}.chapter-surface-notes{clip-path:polygon(0 8%,88% 0,100% 14%,100% 82%,84% 100%,0 100%)}.surface-copy{display:grid;gap:var(--space-4);max-width:38rem}.track-panel,.contact-panel,.stack-card,.story-card,.article-card{border:1px solid rgba(15,18,23,.1);background:#f8f4ebb8;backdrop-filter:blur(18px)}.surface-copy-about{max-width:42rem}.about-title{margin-top:clamp(.75rem,2vw,1.5rem);font-size:clamp(1.75rem,3.4vw,2.5rem);line-height:1.1;letter-spacing:-.02em;font-weight:700}.about-lead{font:var(--typography-section-title);font-size:var(--text-xl);color:#11141a}.about-text{font:var(--typography-body);color:#0f1217d1}.about-block{display:grid;gap:var(--space-3)}.about-block-title{font:var(--typography-kicker);letter-spacing:.08em;text-transform:uppercase;color:var(--fg-dim)}.icon-chips,.lang-list{list-style:none;display:flex;flex-wrap:wrap;gap:var(--space-2);padding:0;margin:0}.icon-chips li,.lang-list li{display:inline-flex;align-items:center;gap:.5rem;border-radius:999px;padding:.4375rem .8125rem;border:1px solid rgba(15,18,23,.12);background:#ffffff85;font:var(--typography-label);color:#11141a}.domain-icon{font-size:1rem;line-height:1}.lang-icon{width:2.25rem;height:2.25rem;display:block;object-fit:contain}.lang-icon-php{width:3rem;object-fit:cover}.lang-icon-dart{width:2.5rem}.lang-list li{border-color:color-mix(in srgb,var(--lang-color, #11141a) 35%,rgba(15,18,23,.12));background:color-mix(in srgb,var(--lang-color, #11141a) 8%,rgba(255,255,255,.52))}.track-panel{padding:var(--space-5);align-self:center;display:grid;gap:var(--space-4)}.track-countries{display:flex;flex-wrap:wrap;gap:var(--space-2)}.track-flag{display:inline-flex;align-items:center;gap:.5rem;border-radius:999px;padding:.375rem .75rem;border:1px solid rgba(15,18,23,.12);background:#ffffff85;font:var(--typography-label);color:#11141a}.track-flag span{font-size:1.05rem;line-height:1}.track-subtitle{font:var(--typography-kicker);letter-spacing:.08em;text-transform:uppercase;color:var(--fg-dim);margin:0}.track-list{list-style:none;padding:0;margin:0;display:grid;gap:var(--space-4)}.track-list li{display:grid;gap:.25rem;padding-left:var(--space-4);border-left:2px solid rgba(15,18,23,.16)}.track-list strong{color:#11141a;font-size:var(--text-base);line-height:1.2}.track-list span{color:#0f1217a8;font:var(--typography-body-small)}.experience-stack,.article-grid,.stack-columns{display:grid;gap:var(--space-4)}.experience-stack,.article-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.story-card,.article-card,.stack-card,.contact-panel{padding:var(--space-5)}.story-card{transform:translateY(calc((.5 - var(--section-progress, .5)) * 26px))}.story-card,.article-card{display:grid;gap:var(--space-3)}.article-card{align-content:start;color:inherit;text-decoration:none;cursor:pointer;transition:transform .25s var(--ease),box-shadow .25s var(--ease),border-color .25s var(--ease)}.article-card:hover,.article-card:focus-visible{transform:translateY(-4px);border-color:#0f121747;box-shadow:0 18px 40px #0f121729}.article-cta{display:inline-flex;align-items:center;gap:.4rem;margin-top:var(--space-2);font:var(--typography-label);font-weight:600;color:#0f1217}.article-cta__arrow{transition:transform .25s var(--ease)}.article-card:hover .article-cta__arrow,.article-card:focus-visible .article-cta__arrow{transform:translate(4px)}.story-company{font-weight:600}.story-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.story-icon{display:grid;place-items:center;width:2.75rem;height:2.75rem;border-radius:14px;font-size:1.5rem;line-height:1;background:#ffffff80;border:1px solid rgba(15,18,23,.12)}.story-meta{display:flex;align-items:center;gap:var(--space-2)}.story-badge{display:inline-flex;align-items:center;gap:.375rem;padding:.25rem .625rem;border-radius:999px;background:#0f1217eb;color:#f6f1e8;font:var(--typography-caption);font-weight:600;letter-spacing:.04em;text-transform:uppercase}.story-badge:before{content:"";width:.4375rem;height:.4375rem;border-radius:50%;background:#4ade80;box-shadow:0 0 0 3px #4ade8047}.story-card-current{border-color:#0f121747;box-shadow:0 1px #0f12170f}.story-highlights{list-style:none;display:grid;gap:var(--space-2);padding:0;margin:0}.story-highlights li{position:relative;padding-left:1.5rem;color:#0f1217d1;font:var(--typography-body-small)}.story-highlights li:before{content:"";position:absolute;left:0;top:.5em;width:.5rem;height:.5rem;border-right:2px solid rgba(15,18,23,.55);border-bottom:2px solid rgba(15,18,23,.55);transform:rotate(-45deg)}.stack-columns{grid-template-columns:repeat(2,minmax(0,1fr));align-self:center}.stack-card{display:grid;gap:var(--space-3);align-content:start}.contact-panel{align-self:center;align-content:start;display:grid;gap:var(--space-4)}.contact-links{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-2)}.contact-pill{width:250px;flex:none;justify-content:flex-start;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.contact-icon{width:1.15rem;height:1.15rem;flex:none;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.contact-icon-brand{fill:currentColor;stroke:none}@media(max-width:1100px){.chapter-slice,.chapter-slice-left,.experience-stack,.article-grid,.stack-columns{grid-template-columns:1fr}}@media(max-width:720px){.chapter{padding-bottom:calc(var(--mobile-bottom-nav-height) + var(--space-5))}.chapter-surface,.chapter-slice-left .chapter-surface{clip-path:none}h1{font-size:clamp(3rem,19vw,5.5rem)}.hero-copy h1{white-space:normal}.chapter-copy.hero-copy{margin-top:4px}.hero-intro-card{width:100%;border-radius:1.2rem}h2{font-size:clamp(2.1rem,12vw,3.25rem)}.linkedin-float{right:0;width:3.7rem;min-height:4.45rem;padding:.5rem .3rem .4rem;border-radius:.9rem 0 0 .9rem}}
