:root{--ground:#fff;--surface:#fff;--sunk:#f4f4f6;--ink:#0a0a0b;--ink-2:#52525b;--ink-3:#8a8a93;--line:#eaeaec;--line-strong:#dcdce0;--line-interactive:#c4c4cc;--btn-bg:var(--ink);--btn-fg:#fff;--hero-glow:radial-gradient(60% 60% at 50% 0%, #4f46e51a, transparent 70%);--accent:#4f46e5;--accent-ink:#fff;--accent-soft:#eef0fe;--grad-1:var(--accent);--grad-2:var(--accent);--grad-cool:var(--accent);--grad-warm:var(--accent);--c-indigo:var(--accent);--c-violet:var(--accent);--c-pink:var(--accent);--c-cyan:var(--accent);--c-emerald:var(--accent);--c-amber:var(--accent);--ok:#0e9f6e;--warn:#c27803;--err:#e02424;--shadow-sm:0 1px 2px #0a0a0b0a;--shadow-raised:0 1px 2px #0a0a0b0d, 0 6px 16px #0a0a0b0a;--shadow-lg:0 12px 40px #0a0a0b1a;--shadow-glow:none;--glass:var(--surface);--glass-2:var(--surface);--glass-brd:var(--line);--glass-brd-hi:var(--line-interactive);--glass-blur:0px;--aurora-1:transparent;--aurora-2:transparent;--aurora-3:transparent;--aurora-4:transparent;--font-sans:"Inter", "Sora", system-ui, sans-serif;--font-display:"Cormorant Garamond", Georgia, serif;--font-mono:"JetBrains Mono", ui-monospace, monospace;--step--1:.813rem;--step-0:1rem;--step-1:1.25rem;--step-2:1.625rem;--step-3:2.15rem;--step-4:3.25rem;--radius-sm:5px;--radius-md:8px;--radius-lg:10px;--radius-xl:12px;--radius-2xl:16px;--radius-full:9999px;--ease:cubic-bezier(.4, 0, .2, 1);--transition:.18s var(--ease);--text-primary:var(--ink);--text-secondary:var(--ink-2);--text-muted:var(--ink-3);--text-accent:var(--accent);--accent-1:var(--c-indigo);--accent-2:var(--c-violet);--accent-3:var(--c-pink);--accent-grad:var(--grad-1);--glass-bg:var(--surface);--glass-bg-md:var(--sunk);--glass-bg-strong:var(--sunk);--glass-border:var(--line);--glass-border-hover:var(--line-strong);--glass-shadow:var(--shadow-raised);--grad-start:var(--ground);--grad-mid:var(--ground);--grad-end:var(--ground);--bg-page:var(--ground);--bg-card:var(--surface);--bg-input:var(--sunk);--border-default:var(--line);--bs-body-bg:var(--ground);--bs-body-color:var(--ink-2);--bs-heading-color:var(--ink);--bs-emphasis-color:var(--ink);--bs-secondary-color:var(--ink-3);--bs-border-color:var(--line);--bs-link-color:var(--accent);--bs-link-hover-color:var(--accent);--bs-code-color:var(--accent)}[data-theme=dark]{--ground:#08080a;--surface:#101013;--sunk:#0c0c0f;--ink:#f4f4f5;--ink-2:#a1a1aa;--ink-3:#6e6e78;--line:#ffffff17;--line-strong:#ffffff26;--line-interactive:#ffffff42;--accent:#8b8bff;--accent-ink:#0a0a0f;--accent-soft:#8b8bff1f;--btn-bg:#fafafa;--btn-fg:#0a0a0b;--hero-glow:radial-gradient(55% 55% at 50% 0%, #8b8bff24, transparent 70%);--grad-1:var(--accent);--grad-2:var(--accent);--grad-cool:var(--accent);--grad-warm:var(--accent);--c-indigo:var(--accent);--c-violet:var(--accent);--c-pink:var(--accent);--c-cyan:var(--accent);--c-emerald:var(--accent);--c-amber:var(--accent);--ok:#3dd68c;--warn:#fbbf24;--err:#f87171;--shadow-sm:0 1px 2px #00000080;--shadow-raised:0 1px 2px #0009, 0 8px 24px #0006;--shadow-lg:0 20px 60px #0000008c;--shadow-glow:none;--glass:var(--surface);--glass-2:var(--surface);--glass-brd:var(--line);--glass-brd-hi:var(--line-interactive);--aurora-1:transparent;--aurora-2:transparent;--aurora-3:transparent;--aurora-4:transparent}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scroll-padding-top:90px;font-size:16px}html,body{min-height:100%}html body{font-family:var(--font-sans);background:var(--ground);color:var(--ink-2);font-size:var(--step-0);-webkit-font-smoothing:antialiased;isolation:isolate;line-height:1.65;overflow-x:hidden}html{background:var(--ground)}.portfolio-root{position:relative}img{max-width:100%;display:block}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:var(--radius-sm)}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent);outline-offset:3px}h1,h2,h3,h4{color:var(--ink);text-wrap:balance;font-weight:700;line-height:1.2}h2{font-size:var(--step-3);letter-spacing:-.015em}h3{font-size:var(--step-2);letter-spacing:-.01em}h4{font-size:var(--step-1)}a{color:var(--accent);transition:color var(--transition);text-decoration:none}html body a{text-decoration:none}.bp-content a{text-underline-offset:2px;text-decoration:underline}.post-card:hover .post-card-title,.post-card:hover .post-card-more,.cert-card:hover .cert-title,.contact-row:hover .contact-row-value,.social-link:hover{text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px}.mono{font-family:var(--font-mono)}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{background:var(--ground)}::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:var(--radius-full);border:3px solid var(--ground)}.navbar{z-index:1000;transition:background var(--transition), border-color var(--transition);background:0 0;border-bottom:1px solid #0000;padding:1.1rem 0}.navbar-scrolled{background:color-mix(in srgb, var(--ground) 97%, transparent);-webkit-backdrop-filter:blur(20px)saturate(1.3);border-bottom-color:var(--line);box-shadow:0 6px 24px #0000000f}.navbar-brand{font-family:var(--font-mono);letter-spacing:-.01em;font-size:.95rem;font-weight:700;color:var(--ink)!important}.brand-bracket{background:var(--grad-2);-webkit-text-fill-color:transparent;color:var(--c-violet);-webkit-background-clip:text;background-clip:text}.navbar .nav-link{border-radius:var(--radius-sm);transition:color var(--transition), background var(--transition);font-size:.875rem;font-weight:500;color:var(--ink-2)!important;padding:.4rem .75rem!important}.navbar .nav-link:hover{background:var(--sunk);color:var(--ink)!important}.navbar .nav-link.active{color:var(--accent)!important}.navbar-toggler{border:1px solid var(--line-interactive);border-radius:var(--radius-sm);padding:.35rem .55rem}.navbar-toggler:focus{box-shadow:none;outline:2px solid var(--accent);outline-offset:2px}.navbar-toggler-icon{background-image:none;width:20px;height:14px;position:relative}.navbar-toggler-icon:before,.navbar-toggler-icon:after{content:"";background:var(--ink);border-radius:2px;width:100%;height:1.5px;position:absolute;left:0}.navbar-toggler-icon:before{box-shadow:0 6px 0 var(--ink);top:0}.navbar-toggler-icon:after{bottom:0}.theme-toggle-btn{border-radius:var(--radius-sm);border:1px solid var(--line-interactive);background:var(--surface);width:34px;height:34px;color:var(--ink-2);cursor:pointer;transition:all var(--transition);justify-content:center;align-items:center;font-size:.8rem;display:inline-flex}.theme-toggle-btn:hover{border-color:var(--line-interactive);color:var(--ink)}.availability-badge{font-family:var(--font-mono);border-radius:var(--radius-full);border:1px solid var(--line);background:var(--surface);color:var(--ink-2);white-space:nowrap;align-items:center;gap:6px;padding:4px 10px;font-size:.7rem;font-weight:500;display:inline-flex}.avail-dot{background:var(--ink-3);border-radius:50%;flex-shrink:0;width:6px;height:6px}.avail-available .avail-dot{background:var(--ok)}.avail-busy .avail-dot{background:var(--err)}.avail-open .avail-dot{background:var(--warn)}.nav-mobile-extras{border-top:1px solid var(--line);margin-top:.6rem;padding:.9rem 0 .4rem}@media (max-width:991.98px){.navbar-collapse{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-raised);margin-top:.75rem;padding:.75rem 1rem}.navbar .nav-link{padding:.55rem .5rem!important}}.section{border-top:1px solid var(--line);padding:88px 0}.section:first-of-type{border-top:none}.section-heading-wrap{max-width:46rem;margin-bottom:2.75rem}.section-eyebrow{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);align-items:center;gap:8px;margin-bottom:.8rem;font-size:.72rem;font-weight:500;display:inline-flex}.section-eyebrow:before{content:"";background:var(--accent);width:14px;height:1px}.section-title{font-family:var(--font-display);color:var(--ink);letter-spacing:-.01em;margin-bottom:.6rem;font-size:clamp(2.2rem,4vw,3rem);font-weight:600;line-height:1.05}.section-subtitle{font-size:var(--step-0);color:var(--ink-3);max-width:60ch}.surface-card,.glass-card{background:var(--glass);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(1.4);backdrop-filter:blur(var(--glass-blur)) saturate(1.4);border:1px solid var(--glass-brd);border-radius:var(--radius-xl);box-shadow:var(--shadow-raised);transition:transform var(--transition), box-shadow var(--transition), border-color var(--transition);position:relative}.surface-card:hover,.glass-card:hover{border-color:var(--line-strong);box-shadow:var(--shadow-raised)}.card-raised{box-shadow:var(--shadow-raised)}.card-raised:hover{box-shadow:var(--shadow-lg)}.hero{isolation:isolate;padding:160px 0 100px;position:relative}.hero:before{content:"";z-index:-1;background:var(--hero-glow);pointer-events:none;height:640px;position:absolute;inset:-160px 0 auto}.hero-tag{font-family:var(--font-mono);letter-spacing:.02em;color:var(--ink-2);border:1px solid var(--line);background:var(--surface);border-radius:var(--radius-full);align-items:center;gap:8px;margin-bottom:1.75rem;padding:6px 13px;font-size:.74rem;display:inline-flex}.hero-tag:before{content:"";background:var(--accent);width:6px;height:6px;box-shadow:0 0 8px var(--accent);border-radius:50%}.hero-name{font-family:var(--font-display);color:var(--ink);letter-spacing:-.015em;margin-bottom:1.1rem;font-size:clamp(3rem,7.5vw,4.75rem);font-weight:600;line-height:1}.hero-name .grad-text{color:var(--ink);font-style:italic;font-weight:500}.hero-lead{font-size:var(--step-1);color:var(--ink-2);max-width:36ch;margin-bottom:1.75rem;line-height:1.55}.hero-proof{border-left:2px solid var(--accent);flex-direction:column;gap:.55rem;margin-bottom:2rem;padding-left:1rem;display:flex}.hero-proof li{font-family:var(--font-mono);font-size:var(--step--1);color:var(--ink-2);line-height:1.5;list-style:none}.hero-proof strong{color:var(--ink);font-weight:700}.hero-actions{flex-wrap:wrap;gap:.6rem;display:flex}.hero-code-card{background:var(--glass);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(1.4);backdrop-filter:blur(var(--glass-blur)) saturate(1.4);border:1px solid var(--glass-brd);border-radius:var(--radius-lg);box-shadow:var(--shadow-raised);overflow:hidden}.hero-code-head{border-bottom:1px solid var(--glass-brd);font-family:var(--font-mono);color:var(--ink-3);align-items:center;gap:8px;padding:.65rem .95rem;font-size:.7rem;display:flex}.hero-code-block{font-family:var(--font-mono);color:var(--ink-2);padding:1.1rem 1.2rem;font-size:.76rem;line-height:1.75;overflow-x:auto}.code-comment{color:var(--ink-3)}.code-keyword{color:var(--c-violet);font-weight:600}.code-type{color:var(--ink);font-weight:500}.code-string{color:var(--ok)}.btn-grad{background:var(--btn-bg);border:1px solid var(--btn-bg);border-radius:var(--radius-md);letter-spacing:-.005em;transition:opacity var(--transition), transform var(--transition);cursor:pointer;align-items:center;gap:8px;padding:10px 20px;font-size:.875rem;font-weight:600;text-decoration:none;display:inline-flex;color:var(--btn-fg)!important}.btn-grad:hover{opacity:.88;color:var(--btn-fg)!important}.btn-glass{border:1px solid var(--line-strong);border-radius:var(--radius-md);transition:background var(--transition), border-color var(--transition);cursor:pointer;background:0 0;align-items:center;gap:8px;padding:10px 20px;font-size:.875rem;font-weight:500;text-decoration:none;display:inline-flex;color:var(--ink)!important}.btn-glass:hover{background:var(--sunk);border-color:var(--line-interactive);color:var(--ink)!important}.about-grid{grid-template-columns:1fr;align-items:start;gap:2rem;margin-bottom:3.75rem;display:grid}.about-portrait{border-radius:var(--radius-lg);border:1px solid var(--line);max-width:260px;margin:0;overflow:hidden}.about-portrait img{aspect-ratio:4/5;object-fit:cover;filter:grayscale()contrast(1.03);width:100%;transition:filter .45s var(--ease), transform .45s var(--ease)}.about-portrait:hover img{filter:none;transform:scale(1.02)}.about-bio{flex-direction:column;gap:1rem;max-width:60ch;display:flex}.about-bio p{color:var(--ink-2);text-align:justify;text-justify:inter-word;-webkit-hyphens:auto;hyphens:auto;line-height:1.75}.about-lead{color:var(--ink);font-size:1.06rem}.about-facts{flex-direction:column;gap:1.15rem;margin:0;display:flex}.about-facts>div{flex-direction:column;gap:.25rem;display:flex}.about-facts dt{font-family:var(--font-mono);letter-spacing:.13em;text-transform:uppercase;color:var(--ink-3);font-size:.66rem}.about-facts dd{color:var(--ink);margin:0;font-size:.92rem;font-weight:500}.about-facts-live{align-items:center;gap:8px;display:inline-flex}.about-facts-live:before{content:"";background:var(--ok);width:7px;height:7px;box-shadow:0 0 8px var(--ok);border-radius:50%}@media (min-width:640px){.about-grid{grid-template-columns:200px 1fr;gap:2.5rem 2.75rem}.about-portrait{max-width:none}.about-facts{border-top:1px solid var(--line);flex-flow:wrap;grid-column:1/-1;gap:1.5rem 3rem;padding-top:1.75rem}}@media (min-width:1080px){.about-grid{grid-template-columns:240px minmax(0,1fr) 260px;column-gap:3.25rem}.about-facts{border-top:none;border-left:1px solid var(--line);flex-direction:column;grid-column:auto;gap:1.25rem;padding-top:0;padding-left:2rem}}.career-path{scrollbar-width:none;margin:0 0 2.75rem;padding:30px 0 8px;list-style:none;display:flex;overflow-x:auto}.career-path::-webkit-scrollbar{display:none}.career-step{text-align:center;transition:transform .2s var(--ease);flex-direction:column;flex:1 0 120px;align-items:center;gap:4px;padding-top:30px;display:flex;position:relative}.career-step:before{content:"";background:var(--accent);z-index:0;width:100%;height:2px;position:absolute;top:7px;left:-50%}.career-step:first-child:before{display:none}.career-step.is-future:before,.career-step.is-continuous:before{border-top:2px dashed var(--line-strong);background:0 0;height:0}.career-node{z-index:1;background:var(--ground);border:2px solid var(--accent);width:16px;height:16px;transition:transform .2s var(--ease);border-radius:50%;position:absolute;top:0;left:50%;transform:translate(-50%)}.is-done .career-node{background:var(--accent)}.is-current .career-node{background:var(--accent);box-shadow:0 0 0 4px var(--accent-soft), 0 0 12px var(--accent)}.is-current .career-node:after{content:"";border:2px solid var(--accent);border-radius:50%;animation:2.2s ease-out infinite career-pulse;position:absolute;inset:-2px}.is-future .career-node{border-color:var(--line-strong);border-style:dashed}.is-continuous .career-node{width:22px;height:22px;font-family:var(--font-mono);color:var(--accent);background:0 0;border:none;justify-content:center;align-items:center;font-size:16px;font-weight:700;display:flex;top:-3px}.is-continuous .career-role{color:var(--ink-2);font-weight:600}.career-role{color:var(--ink);font-size:.82rem;font-weight:600;line-height:1.25}.career-when{font-family:var(--font-mono);letter-spacing:.04em;color:var(--ink-3);font-size:.62rem}.is-current .career-role{color:var(--accent)}.is-future .career-role{color:var(--ink-3);font-weight:500}.career-step:hover{transform:translateY(-3px)}.career-step:hover .career-node{transform:translate(-50%)scale(1.18)}@keyframes career-pulse{0%{opacity:.7;transform:scale(1)}to{opacity:0;transform:scale(2.6)}}@media (max-width:480px){.career-role{font-size:.72rem}.career-when{font-size:.56rem}}.timeline{flex-direction:column;gap:0;display:flex}.timeline-item{border-left:1px solid var(--line);padding:0 0 2.25rem 1.75rem;position:relative}.timeline-item:last-child{border-left-color:#0000;padding-bottom:0}.timeline-dot{background:var(--line-interactive);border-radius:50%;width:8px;height:8px;position:absolute;top:6px;left:-4.5px}.timeline-item:first-child .timeline-dot{background:var(--accent)}.timeline-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.4rem 1rem;margin-bottom:.15rem;display:flex}.timeline-title{font-size:var(--step-1);color:var(--ink);flex-wrap:wrap;align-items:center;gap:.6rem;font-weight:700;display:inline-flex}.timeline-org{color:var(--ink-2);margin-bottom:.75rem;font-size:.9rem}.timeline-badge{font-family:var(--font-mono);color:var(--ink-3);white-space:nowrap;font-size:.72rem}.current-badge{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent);border-radius:var(--radius-full);padding:1px 7px;font-size:.62rem;font-weight:700}.timeline-bullets{flex-direction:column;gap:.4rem;max-width:68ch;padding-left:1.05rem;display:flex}.timeline-bullets li{color:var(--ink-2);font-size:.9rem;line-height:1.6}.timeline-bullets li::marker{color:var(--ink-3)}.subsection-label{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);border-top:1px solid var(--line);margin:3rem 0 1.5rem;padding-top:1.75rem;font-size:.72rem;font-weight:600}.edu-list{flex-direction:column;gap:1.5rem;display:flex}.edu-item{flex-direction:column;gap:.25rem;display:flex}.edu-item-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.edu-degree{color:var(--ink);letter-spacing:-.01em;font-size:1.02rem;font-weight:700}.edu-period{font-family:var(--font-mono);color:var(--ink-3);white-space:nowrap;font-size:.75rem}.edu-inst{color:var(--ink-2);font-size:.9rem}.edu-desc{color:var(--ink-3);max-width:70ch;margin:.2rem 0 0;font-size:.85rem;line-height:1.55}.featured-label{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:.6rem;font-size:.68rem}.project-title{font-family:var(--font-display);color:var(--ink);letter-spacing:0;margin-bottom:.6rem;font-size:clamp(1.55rem,2.5vw,2rem);font-weight:600;line-height:1.1}.project-desc{color:var(--ink-2);text-align:justify;text-justify:inter-word;-webkit-hyphens:auto;hyphens:auto;max-width:62ch;line-height:1.7}.project-img-wrap{border-radius:var(--radius-md);border:1px solid var(--line);position:relative;overflow:hidden}.project-placeholder{aspect-ratio:16/10;color:var(--accent);background:radial-gradient(130% 130% at 0% 0%, var(--accent-soft), transparent 55%), linear-gradient(135deg, var(--sunk), var(--surface));justify-content:center;align-items:center;font-size:2rem;display:flex;position:relative;overflow:hidden}.project-placeholder:before{content:"";background-image:radial-gradient(circle at 1px 1px, var(--line) 1px, transparent 0);opacity:.6;background-size:16px 16px;position:absolute;inset:0}.project-placeholder i{opacity:.85;position:relative}.tech-tags{flex-wrap:wrap;gap:6px;display:flex}.tech-tag{font-family:var(--font-mono);color:var(--ink-2);background:var(--sunk);border:1px solid var(--line);border-radius:var(--radius-sm);transition:border-color var(--transition), color var(--transition);padding:3px 9px;font-size:.7rem;font-weight:500}.tech-tag:hover{border-color:var(--line-interactive);color:var(--ink)}.project-links{flex-wrap:wrap;gap:.5rem;display:flex}.project-link-btn{color:var(--ink-2);border:1px solid var(--line-interactive);background:var(--surface);border-radius:var(--radius-md);transition:background var(--transition), color var(--transition);align-items:center;gap:6px;padding:7px 14px;font-size:.82rem;font-weight:500;display:inline-flex}.project-link-btn:hover{background:var(--sunk);color:var(--ink)}.project-link-btn--case{background:var(--grad-2);color:#fff;box-shadow:var(--shadow-sm);border:none}.project-link-btn--case:hover{filter:brightness(1.05);color:#fff}.project-card{background:var(--glass);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(1.4);backdrop-filter:blur(var(--glass-blur)) saturate(1.4);border:1px solid var(--glass-brd);border-radius:var(--radius-xl);height:100%;box-shadow:var(--shadow-raised);transition:transform var(--transition), box-shadow var(--transition), border-color var(--transition);flex-direction:column;padding:1.5rem;display:flex;position:relative;overflow:hidden}.project-card:before{content:"";background:var(--grad-1);opacity:0;height:3px;transition:opacity var(--transition);position:absolute;inset:0 0 auto}.project-card:hover{border-color:var(--line-strong);box-shadow:var(--shadow-raised);transform:translateY(-2px)}.project-card:hover:before{opacity:1}.project-card-head{justify-content:space-between;align-items:center;margin-bottom:1rem;display:flex}.project-folder-icon{background:var(--grad-2);-webkit-text-fill-color:transparent;color:var(--c-violet);-webkit-background-clip:text;background-clip:text;font-size:1.35rem}.card-link{color:var(--ink-3);transition:color var(--transition);font-size:.95rem}.card-link:hover{color:var(--accent)}.project-card .project-title{font-size:var(--step-1)}.project-card-desc{color:var(--ink-2);text-align:justify;text-justify:inter-word;-webkit-hyphens:auto;hyphens:auto;flex:1;margin-bottom:1rem;font-size:.88rem;line-height:1.65}.cs-card-link{font-family:var(--font-mono);color:var(--accent);transition:gap var(--transition);align-items:center;gap:5px;margin-top:1rem;font-size:.73rem;display:inline-flex}.cs-card-link:hover{color:var(--accent);gap:9px}.pub-group-label{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);align-items:center;gap:10px;margin-bottom:1.1rem;font-size:.7rem;display:flex}.pub-group-label:after{content:"";background:var(--line);flex:1;height:1px}.pub-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);transition:border-color var(--transition);padding:1.4rem}.pub-card:hover{border-color:var(--line-strong)}.pub-badges{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:.7rem;display:flex}.pub-status{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;border-radius:var(--radius-full);border:1px solid;padding:2px 8px;font-size:.63rem;font-weight:700}.pub-status.is-published{color:var(--ok)}.pub-status.is-accepted{color:var(--accent)}.pub-status.is-review{color:var(--warn)}.pub-year{font-family:var(--font-mono);color:var(--ink-3);font-size:.72rem}.pub-title{font-size:var(--step-1);color:var(--ink);margin-bottom:.45rem;font-weight:700;line-height:1.35}.pub-authors{color:var(--ink-3);margin-bottom:.3rem;font-size:.85rem}.pub-venue{color:var(--ink-2);margin-bottom:.85rem;font-size:.88rem;font-style:italic}.pub-toggle{font-family:var(--font-mono);color:var(--accent);cursor:pointer;background:0 0;border:none;align-items:center;gap:6px;padding:0;font-size:.73rem;display:inline-flex}.pub-abstract{color:var(--ink-2);background:var(--sunk);border:1px solid var(--line);border-radius:var(--radius-md);max-width:72ch;margin-top:.75rem;padding:1rem;font-size:.88rem;line-height:1.75}.pub-actions{flex-wrap:wrap;flex-shrink:0;gap:8px;display:flex}.skill-group{margin-bottom:2rem}.skill-category-header{align-items:center;gap:10px;margin-bottom:.85rem;display:flex}.skill-category-label{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);white-space:nowrap;align-items:center;gap:8px;font-size:.7rem;display:inline-flex}.skill-category-label:before{content:"";background:var(--accent);width:12px;height:1px}.skill-category-line{background:var(--line);flex:1;height:1px}.skill-list{flex-wrap:wrap;gap:9px;display:flex}.skill-badge{color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-full);box-shadow:var(--shadow-sm);cursor:default;transition:transform .18s var(--ease), border-color .18s var(--ease), box-shadow .18s var(--ease), background-color .18s var(--ease);align-items:center;gap:8px;padding:8px 15px;font-size:.83rem;font-weight:500;display:inline-flex}.skill-badge:hover{border-color:color-mix(in srgb, var(--accent) 50%, var(--line));background:var(--accent-soft);box-shadow:var(--shadow-raised);transform:translateY(-2px)}.skill-badge i{color:var(--ink-3);transition:color .18s var(--ease);font-size:.85rem}.skill-badge:hover i{color:var(--accent)}.cert-strip{border-top:1px solid var(--line);margin-top:2.75rem;padding-top:1.75rem}.cert-list{flex-direction:column;gap:.5rem;margin-top:1rem;display:flex}.cert-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);transition:border-color var(--transition);align-items:center;gap:.85rem;padding:.75rem 1rem;display:flex}.cert-card:hover{border-color:var(--line-strong)}.cert-icon{color:var(--ink-3);flex-shrink:0;font-size:.9rem}.cert-title{color:var(--ink);font-size:.88rem;font-weight:500}.cert-org{font-family:var(--font-mono);color:var(--ink-3);font-size:.72rem}.cert-arrow{color:var(--ink-3);flex-shrink:0;margin-left:auto;font-size:.75rem}.post-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-xl);height:100%;box-shadow:var(--shadow-sm);transition:transform .2s var(--ease), border-color .2s var(--ease), box-shadow .2s var(--ease);flex-direction:column;display:flex;position:relative;overflow:hidden}.post-card:hover{border-color:var(--line-strong);box-shadow:var(--shadow-raised);transform:translateY(-4px)}.post-card-media{border-bottom:1px solid var(--line);height:172px;overflow:hidden}.post-card-img{object-fit:cover;width:100%;height:100%;transition:transform .5s var(--ease)}.post-card:hover .post-card-img{transform:scale(1.05)}.post-card-body{flex-direction:column;flex:1;gap:.5rem;padding:1.25rem 1.35rem 1.4rem;display:flex}.post-card-date{font-family:var(--font-mono);letter-spacing:.05em;text-transform:uppercase;color:var(--ink-3);font-size:.68rem}.post-card-title{font-family:var(--font-display);color:var(--ink);letter-spacing:-.01em;font-size:1.4rem;font-weight:600;line-height:1.2}.post-card-excerpt{color:var(--ink-2);flex:1;font-size:.86rem;line-height:1.6}.post-card-more{font-family:var(--font-mono);color:var(--accent);align-items:center;gap:7px;margin-top:.5rem;font-size:.72rem;display:inline-flex}.post-card-more i{transition:transform .2s var(--ease)}.post-card:hover .post-card-more i{transform:translate(4px)}.empty-state{color:var(--ink-3);padding:2.5rem 0;font-size:.9rem}.custom-input{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:var(--radius-md);width:100%;font-size:.9rem;font-family:var(--font-sans);transition:border-color var(--transition), box-shadow var(--transition);padding:11px 14px;background:var(--glass-2)!important;border:1px solid var(--glass-brd)!important;color:var(--ink)!important}.custom-input::placeholder{color:var(--ink-3);opacity:1}.custom-input:focus{outline:none;border-color:var(--glass-brd-hi)!important;box-shadow:0 0 0 3px color-mix(in srgb, var(--c-violet) 25%, transparent)!important}.contact-status{min-height:1.2rem;font-size:.85rem}.contact-status.success{color:var(--ok)}.contact-status.error{color:var(--err)}.contact-list{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-xl);height:100%;box-shadow:var(--shadow-raised);flex-direction:column;display:flex;overflow:hidden}.contact-row{border:none;border-bottom:1px solid var(--line);transition:background var(--transition);background:0 0;flex:1;align-items:center;gap:.9rem;padding:1.1rem 1.25rem;display:flex}.contact-row:last-child{border-bottom:none}.contact-row:hover{background:var(--sunk)}.contact-row-icon{border-radius:var(--radius-sm);background:var(--sunk);width:32px;height:32px;color:var(--ink-2);flex-shrink:0;justify-content:center;align-items:center;font-size:.85rem;display:flex}.contact-row-label{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);font-size:.66rem}.contact-row-value{color:var(--ink);word-break:break-word;font-size:.87rem;font-weight:500}.footer{border-top:1px solid var(--line);margin-top:2rem;padding:2.5rem 0}.footer-inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.social-links{gap:.35rem;display:flex}.social-link{border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--surface);width:34px;height:34px;color:var(--ink-2);transition:all var(--transition);justify-content:center;align-items:center;font-size:.85rem;display:flex}.social-link:hover{border-color:var(--line-interactive);color:var(--ink)}.footer-copy{font-family:var(--font-mono);color:var(--ink-3);font-size:.73rem}#chat-icon{border-radius:var(--radius-lg);background:var(--accent);width:48px;height:48px;color:var(--accent-ink);cursor:pointer;z-index:999;box-shadow:var(--shadow-raised);transition:opacity var(--transition);border:none;justify-content:center;align-items:center;font-size:1.1rem;display:flex;position:fixed;bottom:22px;right:22px}#chat-icon:hover{opacity:.9}.chat-tooltip{display:none}#chat-window{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);width:min(370px,100vw - 44px);height:min(500px,100vh - 130px);box-shadow:var(--shadow-raised);z-index:1000;flex-direction:column;display:none;position:fixed;bottom:82px;right:22px;overflow:hidden}#chat-window.open{display:flex}#chat-header{border-bottom:1px solid var(--line);background:var(--sunk);justify-content:space-between;align-items:center;padding:.8rem 1rem;display:flex}.chat-header-info{align-items:center;gap:.65rem;display:flex}.chat-avatar{border-radius:var(--radius-sm);background:var(--accent);width:30px;height:30px;color:var(--accent-ink);justify-content:center;align-items:center;font-size:.78rem;display:flex}.chat-header-name{color:var(--ink);font-size:.87rem;font-weight:600}.chat-header-status{font-family:var(--font-mono);color:var(--ink-3);align-items:center;gap:5px;font-size:.66rem;display:flex}.status-dot{background:var(--ok);border-radius:50%;width:5px;height:5px}.chat-close{color:var(--ink-3);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;padding:4px;font-size:.9rem}.chat-close:hover{color:var(--ink)}#chat-body{flex-direction:column;flex:1;gap:.65rem;padding:1rem;display:flex;overflow-y:auto}.chat-message{border-radius:var(--radius-md);white-space:pre-wrap;word-break:break-word;max-width:85%;padding:.6rem .85rem;font-size:.85rem;line-height:1.55}.bot-message{background:var(--sunk);border:1px solid var(--line);color:var(--ink-2);align-self:flex-start}.user-message{background:var(--accent);color:var(--accent-ink);align-self:flex-end}.bot-message a{color:var(--accent);text-underline-offset:2px;word-break:break-all;text-decoration:underline}.bot-message strong{color:var(--ink);font-weight:600}.bot-message code{font-family:var(--font-mono);background:var(--surface);border:1px solid var(--line);border-radius:5px;padding:1px 5px;font-size:.82em}.chat-suggestions{flex-wrap:wrap;gap:6px;padding:2px 2px 4px;display:flex}.chat-chip{background:var(--surface);color:var(--ink-2);border:1px solid var(--line);border-radius:var(--radius-full);cursor:pointer;transition:color var(--transition), border-color var(--transition), background var(--transition), transform var(--transition);padding:6px 11px;font-size:.76rem;font-weight:500}.chat-chip:hover{color:var(--accent);border-color:color-mix(in srgb, var(--accent) 50%, var(--line));background:var(--accent-soft);transform:translateY(-1px)}.loading-indicator{align-self:flex-start;gap:4px;padding:.7rem .85rem;display:flex}.loading-indicator span{background:var(--ink-3);border-radius:50%;width:6px;height:6px;animation:1.2s infinite both chat-blink}.loading-indicator span:nth-child(2){animation-delay:.2s}.loading-indicator span:nth-child(3){animation-delay:.4s}@keyframes chat-blink{0%,80%,to{opacity:.25}40%{opacity:1}}#chat-input{border-top:1px solid var(--line);align-items:center;gap:.4rem;padding:.7rem;display:flex}#chat-input input{background:var(--sunk);border:1px solid var(--line-interactive);border-radius:var(--radius-md);color:var(--ink);font-size:.85rem;font-family:var(--font-sans);flex:1;padding:8px 11px}#chat-input input::placeholder{color:var(--ink-3)}#chat-input input:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}.voice-btn,.chat-send-btn{border-radius:var(--radius-md);border:1px solid var(--line);background:var(--surface);width:34px;height:34px;color:var(--ink-2);cursor:pointer;transition:all var(--transition);flex-shrink:0;justify-content:center;align-items:center;font-size:.8rem;display:flex}.chat-send-btn{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.voice-btn:hover{border-color:var(--line-interactive);color:var(--ink)}.voice-btn.listening{border-color:var(--accent);color:var(--accent)}.cv-modal-backdrop{z-index:1100;opacity:0;pointer-events:none;transition:opacity var(--transition);background:#0000008c;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.cv-modal-backdrop.open{opacity:1;pointer-events:all}.cv-modal-box{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);width:100%;max-width:860px;height:90vh;box-shadow:var(--shadow-raised);flex-direction:column;display:flex;overflow:hidden}.cv-modal-header{border-bottom:1px solid var(--line);background:var(--sunk);flex-shrink:0;justify-content:space-between;align-items:center;gap:1rem;padding:.8rem 1.1rem;display:flex}.cv-modal-title{color:var(--ink);align-items:center;gap:8px;font-size:.9rem;font-weight:600;display:flex}.cv-modal-close{border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--surface);width:30px;height:30px;color:var(--ink-3);cursor:pointer;flex-shrink:0;justify-content:center;align-items:center;display:flex}.cv-modal-close:hover{color:var(--ink);border-color:var(--line-interactive)}.cv-modal-body{background:var(--sunk);flex:1;overflow:hidden}.cv-iframe{border:none;width:100%;height:100%;display:block}.blog-page-root{background:var(--ground);min-height:100vh;color:var(--ink-2)}@media (max-width:767.98px){.hero{padding:120px 0 64px}.section{padding:64px 0}.hero-lead{max-width:none}.cv-modal-backdrop{align-items:flex-end;padding:0}.cv-modal-box{border-radius:var(--radius-lg) var(--radius-lg) 0 0;height:92vh}}.reveal{opacity:0;transition:opacity .6s var(--ease), transform .6s var(--ease);will-change:opacity, transform;transform:translateY(18px)}.reveal.is-visible{opacity:1;transform:none}body:after{content:"";z-index:2147483000;pointer-events:none;opacity:.05;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}.has-custom-cursor,.has-custom-cursor *{cursor:none!important}.cursor-ring,.cursor-dot{pointer-events:none;z-index:2147483620;will-change:transform;border-radius:50%;position:fixed;top:0;left:0}.cursor-ring{border:1px solid var(--line-interactive);width:34px;height:34px;transition:width .2s var(--ease), height .2s var(--ease), margin .2s var(--ease), border-color .2s var(--ease), background-color .2s var(--ease);margin:-17px 0 0 -17px}.cursor-ring.hover{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 12%, transparent);width:54px;height:54px;margin:-27px 0 0 -27px}.cursor-dot{background:var(--accent);width:5px;height:5px;margin:-2.5px 0 0 -2.5px}.preloader{z-index:2147483640;background:var(--ground);transition:opacity .55s var(--ease), visibility .55s var(--ease);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.preloader.done{opacity:0;visibility:hidden}.preloader-count{font-family:var(--font-display);color:var(--ink);letter-spacing:-.02em;font-variant-numeric:tabular-nums;align-items:baseline;gap:.1em;font-size:clamp(3.5rem,12vw,8rem);font-weight:600;line-height:1;display:flex}.preloader-pct{font-family:var(--font-mono);color:var(--ink-3);letter-spacing:.1em;font-size:.22em}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.reveal{opacity:1!important;transform:none!important}}
