*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0a0908;--bg-hover: #141210;--text: #ede8e0;--muted: #a8a098;--dim: #6b6358;--line: rgba(237, 232, 224, .1);--accent: #f59e0b}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,sans-serif;color:var(--text);background-color:var(--bg);-webkit-font-smoothing:antialiased}body{min-height:100vh}a{color:inherit;text-decoration:none}.page-shell{width:min(1160px,calc(100vw - 2.5rem));margin:0 auto;padding:4rem 0 8rem}.hero{padding:5rem 0;border-bottom:1px solid var(--line);margin-bottom:5rem;display:flex;align-items:center;justify-content:space-between;gap:3rem}.hero-left{flex:1;min-width:0}.hero-right{flex-shrink:0;display:flex;flex-direction:column;gap:1rem}.stat-card{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.4rem;padding:2rem 2.5rem;border:1px solid rgba(245,158,11,.25);border-radius:12px;text-decoration:none;background:#f59e0b0a;box-shadow:0 0 40px #f59e0b1f,0 0 80px #f59e0b0d;transition:box-shadow .2s ease,background .2s ease}.stat-card:hover{background:#f59e0b14;box-shadow:0 0 60px #f59e0b33,0 0 120px #f59e0b14}.stat-card--project{border-color:#ede8e01a;background:#ede8e005;box-shadow:none}.stat-card--project:hover{background:#ede8e00a;box-shadow:none}.stat-card--project .stat-pkg{color:var(--text)}.stat-card--project .stat-label,.stat-card--project .stat-number{color:var(--muted)}.stat-pkg{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:.95rem;font-weight:600;letter-spacing:-.01em;color:var(--accent);word-break:break-all}.stat-number{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:1rem;font-weight:400;color:var(--muted)}.stat-label{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}.eyebrow{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:.8rem;letter-spacing:.18em;text-transform:uppercase;color:var(--accent);margin-bottom:1.75rem}.hero h1{font-family:Syne,system-ui,sans-serif;font-size:clamp(4rem,10.5vw,9.5rem);font-weight:800;line-height:.88;letter-spacing:-.04em;color:var(--text);margin-bottom:3rem}.lead{max-width:38rem;font-size:1.1rem;line-height:1.8;color:var(--muted);margin-bottom:2.5rem}.hero-links a,.card-links a,.star-count{display:inline-flex;align-items:center;gap:.4rem}.star-count{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:.85rem;letter-spacing:.04em;color:var(--dim)}.hero-links a{font-family:Syne,system-ui,sans-serif;font-size:1rem;font-weight:700;letter-spacing:.02em;color:#0a0908;background:var(--accent);padding:.75rem 1.75rem;border-radius:4px;transition:opacity .15s}.hero-links a:hover{opacity:.85}.exp-timeline{border-left:1px solid var(--line);margin-top:0}.exp-row{display:grid;grid-template-columns:14rem 1fr;gap:0 2.5rem;padding:2rem 0 2rem 2.5rem;border-bottom:1px solid var(--line);position:relative;transition:background .18s}.exp-row:before{content:"";position:absolute;left:-5px;top:2.4rem;width:9px;height:9px;border-radius:50%;background:var(--dim);border:2px solid var(--bg)}.exp-row--current:before{background:var(--accent);box-shadow:0 0 10px #f59e0b99}.exp-row--current{background:#f59e0b08}.exp-period{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:.88rem;color:var(--muted);line-height:1.5;padding-top:.15rem;display:flex;flex-direction:column;gap:.35rem}.exp-now{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:.65rem;letter-spacing:.15em;color:var(--accent);background:#f59e0b1f;border:1px solid rgba(245,158,11,.3);padding:.15rem .45rem;border-radius:3px;width:fit-content}.exp-body{display:flex;flex-direction:column;gap:.6rem}.exp-header{display:flex;flex-direction:column;gap:.2rem}.exp-company{font-family:Syne,system-ui,sans-serif;font-size:1.25rem;font-weight:700;letter-spacing:-.02em;color:var(--text)}.exp-company a{color:var(--text);border-bottom:1px solid var(--dim);transition:color .15s,border-color .15s}.exp-company a:hover{color:var(--accent);border-color:var(--accent)}.exp-row--current .exp-company,.exp-row--current .exp-company a{color:var(--accent)}.exp-role{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:.78rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.exp-desc{font-size:.95rem;line-height:1.75;color:var(--muted);max-width:52rem}.edu-certs-grid{display:grid;grid-template-columns:1fr 1fr;gap:0;border-left:1px solid var(--line);margin-top:0}.exp-sub-label{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:.82rem;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);padding:1.25rem 0 1rem 2.5rem;border-bottom:1px solid var(--line);border-right:1px solid var(--line)}.cert-block .exp-sub-label{border-right:none}.edu-block{border-right:1px solid var(--line)}.edu-row{display:flex;gap:1.5rem;padding:1.25rem 1.5rem 1.25rem 2.5rem;border-bottom:1px solid var(--line);align-items:flex-start}.edu-period{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:.82rem;color:var(--muted);flex-shrink:0;padding-top:.1rem;min-width:6rem}.edu-body{display:flex;flex-direction:column;gap:.2rem}.edu-institution{font-family:Syne,system-ui,sans-serif;font-size:1.1rem;font-weight:700;letter-spacing:-.01em;color:var(--text)}.edu-field{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:.85rem;letter-spacing:.02em;color:var(--text)}.cert-block{padding-bottom:0}.cert-grid{display:grid;grid-template-columns:1fr 1fr;border-bottom:1px solid var(--line)}.cert-card{display:flex;flex-direction:column;gap:.4rem;padding:1.25rem 1.5rem;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.cert-card:nth-child(2n){border-right:none}.cert-card:nth-last-child(-n+2){border-bottom:none}.cert-name{font-size:1rem;font-weight:600;color:var(--text);line-height:1.4}.cert-id{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:.85rem;letter-spacing:.06em;color:var(--text)}@media(max-width:768px){.exp-row{grid-template-columns:1fr;gap:.5rem;padding-left:2rem}.edu-certs-grid{grid-template-columns:1fr}.edu-block{border-right:none;border-bottom:1px solid var(--line)}.exp-sub-label{border-right:none}.edu-row{padding-left:2rem}}@media(max-width:500px){.cert-grid{grid-template-columns:1fr}.cert-card{border-right:none;border-bottom:1px solid var(--line)}.cert-card:nth-last-child(-n+2){border-bottom:1px solid var(--line)}.cert-card:last-child{border-bottom:none}}.section-block{margin-top:4rem;scroll-margin-top:68px}.section-heading{margin-bottom:0}.section-heading h2{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:.78rem;font-weight:400;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);padding-bottom:1.25rem;border-bottom:1px solid var(--line)}.project-grid{display:grid;grid-template-columns:repeat(2,1fr);border-left:1px solid var(--line)}.project-card{display:flex;flex-direction:column;gap:1rem;padding:2.25rem 2rem;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--bg);transition:background .18s ease}.project-card:hover{background:var(--bg-hover)}.project-image{width:100%;aspect-ratio:16 / 9;object-fit:cover;border:1px solid var(--line)}.card-topline{display:flex;justify-content:space-between;align-items:center;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:.85rem;letter-spacing:.06em;text-transform:uppercase;color:var(--dim)}.project-card h3{font-family:Syne,system-ui,sans-serif;font-size:1.6rem;font-weight:700;line-height:1.05;letter-spacing:-.025em;color:var(--text)}.subtitle{font-size:.875rem;color:var(--accent)}.project-card>p{font-size:1rem;line-height:1.75;color:var(--muted);flex:1}.tag-row{display:flex;gap:.4rem;flex-wrap:wrap}.tag{padding:.25rem .6rem;border:1px solid var(--dim);border-radius:3px;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:.85rem;letter-spacing:.03em;color:var(--muted)}.card-links{display:flex;gap:1.25rem}.card-links a{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:.9rem;letter-spacing:.04em;color:var(--muted);border-bottom:1px solid var(--dim);padding-bottom:.1rem;transition:color .15s,border-color .15s}.card-links a:hover{color:var(--text);border-color:var(--muted)}.skill-group{margin-bottom:3rem;display:grid;grid-template-columns:1fr 1fr;column-gap:0}.skill-category{grid-column:1 / -1}.skill-category{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:.75rem;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);padding:1.5rem 0 .75rem;border-top:1px solid var(--line)}.skill-row{display:flex;align-items:center;gap:1.5rem;padding:.6rem 1rem;margin:0 -1rem;border-bottom:1px solid var(--line);cursor:default;transition:background .15s,padding-left .15s}.skill-row:hover{background:var(--accent);padding-left:1.5rem}.skill-index{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:.75rem;color:var(--dim);min-width:1.5rem;transition:color .15s}.skill-name{font-family:system-ui,-apple-system,BlinkMacSystemFont,sans-serif;font-size:clamp(1.1rem,1.8vw,1.6rem);font-weight:600;letter-spacing:-.01em;line-height:1.1;color:var(--text);transition:color .15s}.skill-row:hover .skill-index,.skill-row:hover .skill-name{color:#0a0908}@media(max-width:640px){.skill-group{grid-template-columns:1fr}}.pkg-grid{display:grid;grid-template-columns:repeat(3,1fr);border-left:1px solid var(--line)}.pkg-card{display:flex;flex-direction:column;gap:.6rem;padding:1.5rem;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--bg);transition:background .18s ease}.pkg-card:hover{background:var(--bg-hover)}.pkg-topline{display:flex;justify-content:space-between;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:.76rem;letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}.pkg-card h3{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:.95rem;font-weight:600;color:var(--accent);letter-spacing:-.01em}.pkg-card>p{font-size:.9rem;line-height:1.65;color:var(--muted);flex:1}.pkg-footer{display:flex;align-items:center;justify-content:space-between;margin-top:.25rem}.pkg-version{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:.76rem;color:var(--dim)}@media(max-width:800px){.pkg-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:500px){.pkg-grid{grid-template-columns:1fr}}.contact-list{border-left:1px solid var(--line)}.contact-row{display:flex;align-items:center;gap:2rem;padding:1.5rem 1.5rem 1.5rem 2.5rem;border-bottom:1px solid var(--line);text-decoration:none;transition:background .15s,padding-left .15s}.contact-row:hover{background:var(--bg-hover);padding-left:3rem}.contact-label{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:.75rem;letter-spacing:.14em;text-transform:uppercase;color:var(--dim);min-width:5rem}.contact-value{font-family:Syne,system-ui,sans-serif;font-size:clamp(1.1rem,2.5vw,1.6rem);font-weight:700;letter-spacing:-.02em;color:var(--text);flex:1;transition:color .15s}.contact-arrow{font-size:1.2rem;color:var(--dim);transition:color .15s,transform .15s}.contact-row:hover .contact-value{color:var(--accent)}.contact-row:hover .contact-arrow{color:var(--accent);transform:translate(3px,-3px)}@media(max-width:640px){.contact-row{gap:1rem;padding-left:1.5rem}.contact-row:hover{padding-left:2rem}.contact-label{display:none}}#lightbox{display:none;position:fixed;inset:0;z-index:999;background:#000000e0;align-items:center;justify-content:center;cursor:zoom-out}#lightbox.open{display:flex}#lightbox-img{max-width:min(92vw,1200px);max-height:90vh;object-fit:contain;border-radius:4px;box-shadow:0 32px 80px #0009}@media(max-width:800px){.project-grid{grid-template-columns:1fr}}@media(max-width:768px){.hero{flex-direction:column;align-items:flex-start}.hero-right{align-self:stretch;flex-direction:row}.stat-card{flex:1;min-width:0;padding:1rem;gap:.25rem}.stat-label,.stat-number,.stat-pkg{font-size:.72rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;word-break:normal}}@media(max-width:640px){.page-shell{width:calc(100vw - 2rem);padding:2.5rem 0 5rem}.hero{padding:3rem 0;margin-bottom:3rem}.hero h1{font-size:clamp(3.25rem,14vw,5rem);margin-bottom:2rem}.project-card{padding:1.75rem 1.25rem}}.project-splide[data-astro-cid-fbnxtyi4] .splide__slide[data-astro-cid-fbnxtyi4] img[data-astro-cid-fbnxtyi4]{width:100%;aspect-ratio:16 / 9;object-fit:cover;cursor:zoom-in;display:block}.project-splide[data-astro-cid-fbnxtyi4] .splide__arrow[data-astro-cid-fbnxtyi4]{background:var(--bg-hover);border:1px solid var(--dim);opacity:1;width:2rem;height:2rem}.project-splide[data-astro-cid-fbnxtyi4] .splide__arrow[data-astro-cid-fbnxtyi4] svg[data-astro-cid-fbnxtyi4]{fill:var(--muted);width:.85em;height:.85em}.project-splide[data-astro-cid-fbnxtyi4] .splide__arrow[data-astro-cid-fbnxtyi4]:hover{background:var(--bg-hover);border-color:var(--muted)}.project-splide[data-astro-cid-fbnxtyi4] .splide__arrow[data-astro-cid-fbnxtyi4]:hover svg[data-astro-cid-fbnxtyi4]{fill:var(--text)}.project-splide[data-astro-cid-fbnxtyi4] .splide__pagination__page[data-astro-cid-fbnxtyi4]{background:var(--dim)}.project-splide[data-astro-cid-fbnxtyi4] .splide__pagination__page[data-astro-cid-fbnxtyi4].is-active{background:var(--accent);transform:scale(1)}.nav[data-astro-cid-dmqpwcec]{position:sticky;top:0;z-index:100;display:flex;align-items:center;justify-content:space-between;padding:0 2rem;height:52px;background:#0a0908d9;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}.nav-name[data-astro-cid-dmqpwcec]{font-family:Syne,system-ui,sans-serif;font-size:.95rem;font-weight:700;letter-spacing:-.01em;color:var(--text)}.nav-links[data-astro-cid-dmqpwcec]{display:flex;align-items:center;gap:2rem}.nav-links[data-astro-cid-dmqpwcec] a[data-astro-cid-dmqpwcec]{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:.78rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);transition:color .15s}.nav-links[data-astro-cid-dmqpwcec] a[data-astro-cid-dmqpwcec]:hover{color:var(--text)}.nav-github[data-astro-cid-dmqpwcec]{color:var(--accent)!important}@media(max-width:640px){.nav[data-astro-cid-dmqpwcec]{padding:0 1rem}.nav-links[data-astro-cid-dmqpwcec]{gap:1.25rem}.nav-links[data-astro-cid-dmqpwcec] a[data-astro-cid-dmqpwcec]:not(.nav-github){display:none}}
