/*! tailwindcss v4.1.13 | MIT License | https://tailwindcss.com */@layer properties{@supports ((-webkit-hyphens:none) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-border-style:solid;--tw-duration:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}.pointer-events-none{pointer-events:none}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden}.absolute,.sr-only{position:absolute}.relative{position:relative}.static{position:static}.left-1\/2{left:50%}.container{width:100%}.contents{display:contents}.flex{display:flex}.grid{display:grid}.h-full{height:100%}.-translate-x-1\/2{--tw-translate-x:calc(calc(1/2*100%)*-1)}.-translate-x-1\/2,.-translate-y-full{translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-full{--tw-translate-y:-100%}.resize{resize:both}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.border{border-style:var(--tw-border-style);border-width:1px}.whitespace-nowrap{white-space:nowrap}.opacity-0{opacity:0}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}@media (hover:hover){.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}}:root{--bg:#0b0f12;--panel:#0f151a;--text:#e6f0f3;--muted:#aac1c9;--teal:#14b8a6;--blue:#60a5fa;--lightblue:#93c5fd;--header-h:68px}*{box-sizing:border-box}body,html{background:var(--bg);color:var(--text);scroll-behavior:smooth;margin:0;padding:0;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,Helvetica Neue,Arial,Apple Color Emoji,Segoe UI Emoji}#ripple-overlay{z-index:0;pointer-events:none;--rx:60%;--ry:20%;background:radial-gradient(0 0 at var(--rx)var(--ry),#14b8a633,#14b8a600 60%);animation:ripples cubic-bezier(.75,0,.25,1) infinite;position:fixed;inset:0}@keyframes ripples{0%{background:radial-gradient(0 0 at var(--rx)var(--ry),#14b8a638,#14b8a600 60%);opacity:.7}50%{background:radial-gradient(900px 900px at var(--rx)var(--ry),#14b8a61f,#14b8a600 70%);opacity:.55}to{background:radial-gradient(1600px 1600px at var(--rx)var(--ry),#14b8a60f,#14b8a600 80%);opacity:.4}}a{color:inherit;text-decoration:none}.container{width:min(1200px,92vw);margin:0 auto}header.site-header{z-index:100;backdrop-filter:blur(10px);background:linear-gradient(#0b0f12d9,#0b0f12b3 60%,#0b0f1200);border-bottom:1px solid #ffffff0f;transition:background .2s,border-color .2s,box-shadow .2s;position:fixed;top:0;left:0;right:0}header.site-header.scrolled{backdrop-filter:blur(12px);background:#0b0f12e6;border-bottom-color:#ffffff1f;box-shadow:0 6px 20px #00000059}.nav-bar{justify-content:space-between;padding:12px 0}.nav-bar,.nav-left{align-items:center;display:flex}.nav-left{flex-wrap:wrap;gap:18px}.nav-right{align-items:center;gap:14px;display:flex}.nav-links .nav-link{color:var(--muted);letter-spacing:.06em;align-items:center;gap:8px;font-size:13px;line-height:1;display:inline-flex}.nav-links .nav-link:hover{color:var(--text)}.icon-link{color:var(--muted);display:inline-flex}.icon-link:hover{color:var(--text)}.icon-link{position:relative}.icon-link:after{content:attr(aria-label);color:var(--text);white-space:nowrap;opacity:0;visibility:hidden;pointer-events:none;z-index:60;background:#ffffff14;border:1px solid #ffffff24;border-radius:8px;padding:6px 8px;font-size:12px;line-height:1;transition:opacity .18s,transform .18s,visibility .18s;position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%)translateY(6px);box-shadow:0 6px 18px #00000059}.icon-link:hover:after{opacity:1;visibility:visible;transform:translate(-50%)translateY(0)}.social-link{color:var(--muted);opacity:.9}.social-link:hover{color:var(--text);opacity:1}.btn{color:var(--text);background:linear-gradient(#ffffff0f,#ffffff05);border:1px solid #ffffff1a;border-radius:999px;padding:8px 14px}.btn:hover{border-color:#fff3}.btn-primary{border-color:#14b8a666;box-shadow:inset 0 0 0 2px #14b8a626}main{z-index:1;padding-top:var(--header-h);position:relative;overflow-x:hidden}.section{scroll-margin-top:var(--header-h);padding-block:clamp(4rem,10vh,8rem)}.section+.section{border-top:1px dashed #ffffff14;margin-block-start:clamp(5rem,15vh,10rem)}section.section:nth-of-type(odd){background:linear-gradient(#ffffff05,#ffffff03)}section.section:nth-of-type(2n){background:linear-gradient(#00000014,#0000000a)}.reveal{opacity:0;transition:all .6s;transform:translateY(18px)}.reveal.show{opacity:1;transform:translateY(0)}.hero,.hero-stack{text-align:center;place-items:center;display:grid}.hero-stack{gap:12px}.hero-grid{grid-template-columns:1.2fr 1fr;align-items:center;gap:36px;display:grid}.content-grid{grid-template-columns:2fr 1fr;gap:36px;display:grid}@media (max-width:900px){.hero-grid{text-align:center;grid-template-columns:1fr}.hero-left{place-items:center;display:grid}.content-grid{grid-template-columns:1fr}}@media (max-width:600px){:root{--header-h:56px}.nav-left{gap:12px}.nav-right{gap:10px}.nav-links .nav-link{font-size:12px}}.hero-cta{flex-wrap:wrap;gap:12px;margin-top:18px;display:flex}.hero-right{place-items:center;display:grid;position:relative}.avatar-circle{aspect-ratio:1;border:2px solid var(--teal);border-radius:50%;width:min(420px,72vw)}@supports (color:color-mix(in lab,red,red)){.avatar-circle{border:2px solid color-mix(in oklab,var(--teal)70%,transparent)}}.avatar-circle{position:relative;overflow:hidden;box-shadow:inset 0 0 0 6px #14b8a614,0 10px 30px #00000059,0 0 15px 5px #14b8a633}.hero-right:after,.hero-right:before{content:"";pointer-events:none;z-index:0;border:2px solid #ffffff1a;border-radius:50%;width:clamp(300px,36vw,560px);height:clamp(300px,36vw,560px);animation:ripple-pulse 4s ease-out infinite;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)scale(.6)}.hero-right:after{opacity:.9;animation-delay:2s}@keyframes ripple-pulse{0%{opacity:.35;transform:translate(-50%,-50%)scale(.6)}70%{opacity:.08}to{opacity:0;transform:translate(-50%,-50%)scale(1.6)}}.hero-title{color:var(--muted);letter-spacing:.02em;font-size:clamp(22px,4vw,28px)}.hero-name{background:linear-gradient(90deg,var(--blue),var(--teal));color:#0000;-webkit-background-clip:text;background-clip:text;margin-top:10px;font-size:clamp(36px,7vw,58px);font-weight:700}.hero-nav{flex-wrap:wrap;gap:20px;display:flex;position:absolute;bottom:24px;left:50%;transform:translate(-50%)}.hero-nav a{color:var(--muted)}.hero-nav a:hover{color:var(--text)}.section-title{color:var(--lightblue);margin-bottom:18px;font-size:clamp(26px,4vw,32px)}.about-name{background:0 0;-webkit-background-clip:initial;background-clip:initial;color:var(--lightblue);font-size:clamp(28px,5.5vw,44px);font-weight:800;line-height:1.08}.about-titles{color:var(--muted);margin-top:8px;font-size:clamp(16px,2.7vw,18px)}.about-summary{color:var(--muted);width:100%;max-width:none;margin-top:18px;font-family:Calibri;font-size:clamp(16px,2.2vw,18px);line-height:1.75}.about-card{grid-column:1/2}.about-card,.skills-card{align-self:start}.skills-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}@media (min-width:600px){.skills-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width:1000px){.skills-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.skill-ico{aspect-ratio:1;color:var(--text);letter-spacing:.02em;background:linear-gradient(#ffffff08,#ffffff05);border:1px solid #ffffff14;border-radius:12px;place-items:center;font-weight:600;display:grid;position:relative}.skill-ico .lbl{opacity:.9;font-size:14px}.skill-ico:hover{border-color:#ffffff2e}.skill-ico:after{content:attr(aria-label);color:var(--text);white-space:nowrap;opacity:0;visibility:hidden;pointer-events:none;z-index:5;background:#ffffff14;border:1px solid #ffffff24;border-radius:8px;padding:6px 8px;font-size:12px;line-height:1;transition:opacity .18s,transform .18s,visibility .18s;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%)translateY(6px);box-shadow:0 6px 18px #00000059}.skill-ico:hover:after{opacity:1;visibility:visible;transform:translate(-50%)translateY(0)}.skill-ico.pytorch{box-shadow:inset 0 0 0 2px #ef44441f}.skill-ico.sklearn{box-shadow:inset 0 0 0 2px #f59e0b1f}.skill-ico.scipy{box-shadow:inset 0 0 0 2px #3b82f61f}.skill-ico.pandas{box-shadow:inset 0 0 0 2px #6366f11f}.skill-ico.numpy{box-shadow:inset 0 0 0 2px #3b82f61f}.skill-ico.fea{box-shadow:inset 0 0 0 2px #14b8a61f}.skill-ico.python{box-shadow:inset 0 0 0 2px #eab3081f}.skill-ico.open3d{box-shadow:inset 0 0 0 2px #0284c71f}.skill-ico.trimesh{box-shadow:inset 0 0 0 2px #a855f71f}.grid-two{grid-template-columns:1fr;gap:28px;display:grid}@media (min-width:900px){.grid-two{grid-template-columns:1fr 1fr}}.card{background:linear-gradient(#ffffff08,#ffffff03);border:1px solid #ffffff0f;border-radius:16px;padding:18px}.pop-card{background:radial-gradient(900px 200px at 0 0,#60a5fa0f,#60a5fa00 60%),linear-gradient(#ffffff09,#ffffff05);transition:border-color .2s,box-shadow .25s,transform .2s,background .25s;position:relative;overflow:hidden}.pop-card:after{content:"";opacity:0;pointer-events:none;background:radial-gradient(600px 200px at 20% 0,#14b8a61f,#14b8a600);transition:opacity .25s;position:absolute;inset:-20% -30% -30% -20%}.pop-card:hover{background:radial-gradient(900px 200px at 0 0,#14b8a614,#14b8a600 60%),linear-gradient(#ffffff0d,#ffffff08);border-color:#14b8a659;box-shadow:0 16px 40px #00000059,inset 0 0 0 2px #14b8a62e}.pop-card:hover:after{opacity:1}.box-title{color:var(--lightblue);align-items:center;gap:10px;margin-bottom:12px;font-size:clamp(18px,3.2vw,22px);font-weight:700;display:inline-flex}.box-title .ico{color:var(--teal);opacity:.95}.list{gap:10px;display:grid}.muted,footer{color:var(--muted)}footer{text-align:center;padding:24px 0 40px}.featured-projects{position:relative}.fp-list{gap:18px;display:grid}.fp-item{background:radial-gradient(1200px 300px at 0 0,#60a5fa0f,#60a5fa00 60%),linear-gradient(#ffffff09,#ffffff04);border:1px solid #ffffff0f;border-radius:16px;grid-template-columns:1fr min(42%,520px);gap:22px;padding:18px;transition:border-color .2s,background .2s,transform .2s;display:grid;position:relative;overflow:hidden}.fp-item:hover{background:radial-gradient(1000px 260px at 0 0,#14b8a614,#14b8a600 60%),linear-gradient(#ffffff0d,#ffffff05);border-color:#14b8a659}.fp-content{z-index:2;position:relative}.fp-meta{align-items:center;gap:10px;margin-bottom:6px;display:flex}.badge{letter-spacing:.06em;text-transform:uppercase;color:var(--lightblue);background:#60a5fa24;border:1px solid #60a5fa59;border-radius:999px;padding:4px 8px;font-size:11px}.fp-title{margin:4px 0 8px;font-size:clamp(20px,3.6vw,26px);font-weight:700}.fp-desc{line-height:1.7}.fp-tags{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.chip{color:var(--text);background:#ffffff0f;border:1px solid #ffffff1f;border-radius:999px;padding:6px 10px;font-size:12px}.chip:hover{border-color:#14b8a659}.fp-preview{background:conic-gradient(#14b8a614,#60a5fa14,#14b8a614),radial-gradient(220px 160px at 60% 40%,#14b8a62e,#14b8a600 60%),radial-gradient(260px 200px at 40% 60%,#60a5fa2e,#60a5fa00 60%),linear-gradient(#ffffff05,#ffffff03);border:1px solid #ffffff0f;border-radius:12px;position:relative;overflow:hidden}.fp-item:hover .fp-preview{box-shadow:0 12px 28px #00000059,inset 0 0 0 2px #14b8a62e}.fp-preview:after{content:"";mix-blend-mode:screen;opacity:0;background:radial-gradient(1200px 160px at 10% 10%,#14b8a61a,#14b8a600);transition:opacity .25s;position:absolute;inset:0}.fp-item:hover .fp-preview:after{opacity:1}@media (max-width:900px){.fp-item{grid-template-columns:1fr}}.nav-links .nav-link{border-radius:8px;padding:6px 8px;position:relative}.nav-links .nav-link:after{content:"";opacity:0;pointer-events:none;background:radial-gradient(120px 120px at 50% 100%,#14b8a626,#14b8a600);border-radius:8px;transition:opacity .25s;position:absolute;inset:0}.nav-links .nav-link:hover:after{opacity:1}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-duration{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}