@import url(https://fonts.googleapis.com/css2?family=DM+Mono:ital,wght@0,300;0,400;0,500;1,400&family=DM+Sans:opsz,wght@9..40,300;9..40,400;9..40,500;9..40,600&display=swap);:root{--bg-base:#0a0a0a;--bg-base-soft:#0a0a0aad;--bg-surface:#141414;--bg-deep:#0f0f0fbf;--bg-alt:#1414148f;--bg-nav:#0a0a0aeb;--bg-input:#111;--bg-contact:#0a0a0a85;--border:#222;--border-subtle:#1a1a1a;--text-primary:#f0f0f0;--text-body:#d2d2d2;--text-muted:#acacac;--text-dim:#7a7a7a;--text-faint:#8c8c8c;--accent:#f0f0f0;--accent-soft:#444;--accent-hover:#fff;--gradient:linear-gradient(135deg,#fafafa,#161616);--particle-color-a:#fff;--particle-color-b:#333;--particle-opacity:0.7;--scrollbar-thumb:#222;--transition:background 0.35s ease,color 0.35s ease,border-color 0.35s ease;--font-mono:"DM Mono","JetBrains Mono","Courier New",monospace;--font-sans:"DM Sans",system-ui,sans-serif}html.light{--bg-base:#f7f7f5;--bg-base-soft:#f7f7f5ad;--bg-surface:#fff;--bg-deep:#f0f0eebf;--bg-alt:#f2f2ef9e;--bg-nav:#f7f7f5eb;--bg-input:#fafafa;--bg-contact:#f7f7f594;--border:#e0e0e0;--border-subtle:#ebebeb;--text-primary:#0a0a0a;--text-body:#1e1e1e;--text-muted:#3f3f3f;--text-dim:#676767;--text-faint:#6f6f6f;--accent:#0a0a0a;--accent-soft:#ccc;--accent-hover:#000;--gradient:linear-gradient(135deg,#0a0a0a,#555);--particle-color-a:#bbb;--particle-color-b:#ccc;--particle-opacity:0.5;--scrollbar-thumb:#ccc}*,:after,:before{box-sizing:border-box}#root,body,html{background:#0a0a0a;background:var(--bg-base);margin:0;overflow-x:hidden;padding:0;scroll-behavior:smooth;transition:background .35s ease,color .35s ease,border-color .35s ease;transition:var(--transition)}html{font-size:158%}::-webkit-scrollbar{width:3px}::-webkit-scrollbar-track{background:#0000}::-webkit-scrollbar-thumb{background:#222;background:var(--scrollbar-thumb);border-radius:99px}.container{margin:0 auto;max-width:1300px;padding:0 36px}.section-flow{max-width:1080px;width:100%}.section-flow-wide{max-width:1240px}.section-h2{color:#f0f0f0;color:var(--text-primary);font-family:DM Mono,JetBrains Mono,Courier New,monospace;font-family:var(--font-mono);font-size:3.08rem;font-weight:500;letter-spacing:0;line-height:1.05;margin:0 0 10px}.section-sub{color:#acacac;color:var(--text-muted);font-family:DM Sans,system-ui,sans-serif;font-family:var(--font-sans);font-size:.9rem;font-weight:300;letter-spacing:.01em;margin-bottom:24px}.typewriter-name{letter-spacing:0;min-height:1.05em;overflow-wrap:anywhere}.typewriter-caret{color:#acacac;color:var(--text-muted);display:inline-block}.terminal-caret,.typewriter-caret{animation:caretBlink .86s step-end infinite}.terminal-caret{color:#a9f3c4}.hero-reveal{opacity:1;transform:none}.about-notes-grid{grid-gap:14px;align-items:start;display:grid;gap:14px;grid-template-columns:1fr 1fr}.dna-skills{grid-gap:18px;align-items:stretch;display:grid;gap:18px;grid-auto-rows:1fr;grid-template-columns:repeat(2,minmax(0,1fr));position:relative}.dna-skills:before{display:none}.dna-skill-group{background:color-mix(in srgb,#141414 84%,#0000);background:color-mix(in srgb,var(--bg-surface) 84%,#0000);border:1px solid #222;border:1px solid var(--border);border-radius:8px;height:100%;overflow:hidden;padding:18px;position:relative;transition:background .35s ease,color .35s ease,border-color .35s ease,transform .2s ease;transition:var(--transition),transform .2s ease}.dna-skill-group:hover{border-color:#acacac;border-color:var(--text-muted);transform:translateY(-2px)}.dna-group-header{align-items:baseline;display:flex;gap:12px;justify-content:space-between;margin-bottom:16px;min-height:2.5rem}.dna-pairs{display:flex;flex-direction:column;gap:10px}.dna-pair{grid-gap:8px;align-items:center;display:grid;gap:8px;grid-template-columns:minmax(0,1fr) 74px minmax(0,1fr);position:relative}.dna-pair:after,.dna-pair:before{background:#acacac;background:var(--text-muted);border-radius:50%;content:"";height:10px;opacity:.72;position:absolute;top:50%;transform:translateY(-50%);width:10px}.dna-pair:before{left:calc(50% - 44px)}.dna-pair:after{right:calc(50% - 44px)}.dna-pair-flipped .dna-rung{transform:rotate(-10deg)}.dna-rung{align-items:center;display:flex;height:42px;justify-content:center;position:relative;transform:rotate(10deg)}.dna-rung:before{background:#222;background:var(--border);content:"";height:1px;width:calc(100% + 18px)}.dna-rung span{background:#0a0a0a;background:var(--bg-base);border:1px solid #222;border:1px solid var(--border);border-radius:50%;box-shadow:0 0 0 6px #141414;box-shadow:0 0 0 6px var(--bg-surface);height:22px;position:absolute;width:22px}.dna-skill-side{min-width:0}.project-exhibit-list{display:flex;flex-direction:column;gap:42px}.project-exhibit{grid-gap:32px;align-items:stretch;border-top:1px solid #222;border-top:1px solid var(--border);display:grid;gap:32px;grid-template-columns:minmax(0,.86fr) minmax(480px,1.14fr);padding-top:42px}.project-exhibit-reverse{grid-template-columns:minmax(480px,1.14fr) minmax(0,.86fr)}.project-exhibit-reverse .project-exhibit-copy{order:2}.project-exhibit-reverse .project-exhibit-media{order:1}.project-exhibit-copy{display:flex;flex-direction:column;justify-content:center}.project-exhibit-media{display:flex;min-height:460px}.project-exhibit-media>*{flex:1 1}.project-link-button{background:#f0f0f0;background:var(--text-primary);border-radius:5px;color:#0a0a0a;color:var(--bg-base);font-family:DM Mono,JetBrains Mono,Courier New,monospace;font-family:var(--font-mono);font-size:.72rem;padding:8px 14px;text-decoration:none}.project-link-button-secondary{background:#0000;border:1px solid #222;border:1px solid var(--border);color:#acacac;color:var(--text-muted)}.media-placeholder-label{bottom:22px;color:#acacac;color:var(--text-muted);font-family:DM Mono,JetBrains Mono,Courier New,monospace;font-family:var(--font-mono);font-size:.7rem;left:24px;position:absolute;right:24px}.publication-record{grid-gap:24px;align-items:stretch;background:#141414;background:var(--bg-surface);border:1px solid #222;border:1px solid var(--border);border-radius:8px;color:inherit;display:grid;gap:24px;grid-template-columns:minmax(280px,.86fr) minmax(0,1.14fr);overflow:hidden;text-decoration:none;transition:background .35s ease,color .35s ease,border-color .35s ease,transform .2s ease;transition:var(--transition),transform .2s ease}.publication-record:hover{border-color:#acacac;border-color:var(--text-muted);transform:translateY(-2px)}.publication-record .media-placeholder{border:0;border-radius:0;min-height:300px}.publication-copy{display:flex;flex-direction:column;justify-content:center;padding:28px 28px 28px 0}.publication-image-placeholder{background:radial-gradient(circle at 50% 38%,#ffffff17,#0000 26%),linear-gradient(135deg,#0a0a0a,#141414);background:radial-gradient(circle at 50% 38%,#ffffff17,#0000 26%),linear-gradient(135deg,var(--bg-base),var(--bg-surface));display:grid;min-height:inherit;place-items:center;width:100%}.publication-image{filter:grayscale(1) contrast(1.05) brightness(.68);height:100%;min-height:inherit;mix-blend-mode:luminosity;object-fit:cover;opacity:.78;width:100%}.publication-image-wrap{background:#0a0a0a;background:var(--bg-base);min-height:inherit;position:relative;width:100%}.publication-image-wrap:after{background:linear-gradient(90deg,#0a0a0a57,#0a0a0a14),radial-gradient(circle at 70% 30%,#ffffff14,#0000 34%);content:"";inset:0;pointer-events:none;position:absolute}.publication-image-placeholder span{border:1px solid #222;border:1px solid var(--border);border-radius:50%;color:#acacac;color:var(--text-muted);display:grid;font-family:DM Mono,JetBrains Mono,Courier New,monospace;font-family:var(--font-mono);font-size:.86rem;height:124px;place-items:center;width:124px}.reveal-block{opacity:0;transform:translateY(34px);transition:opacity .72s ease,transform .72s cubic-bezier(.2,.85,.25,1);transition-delay:0ms;transition-delay:var(--reveal-delay,0ms);will-change:opacity,transform}.reveal-block.is-visible{opacity:1;transform:translateY(0)}.lab-note{border:1px solid #222;border:1px solid var(--border);border-radius:7px;box-shadow:0 18px 50px #0000002e;color:#d2d2d2;color:var(--text-body);padding:18px;transition:background .35s ease,color .35s ease,border-color .35s ease,transform .2s ease;transition:var(--transition),transform .2s ease}.lab-note,.lab-note-default{background:#141414;background:var(--bg-surface)}.lab-note-soft{background:#0f0f0fbf;background:var(--bg-deep)}.lab-note-accent{background:linear-gradient(135deg,#141414,#0a0a0aad);background:linear-gradient(135deg,var(--bg-surface),var(--bg-base-soft))}.media-placeholder{background:radial-gradient(circle at 22% 18%,#ffffff17,#0000 28%),linear-gradient(135deg,#141414,#0a0a0a);background:radial-gradient(circle at 22% 18%,#ffffff17,#0000 28%),linear-gradient(135deg,var(--bg-surface),var(--bg-base));border:1px solid #222;border:1px solid var(--border);border-radius:8px;height:100%;min-height:360px;overflow:hidden;position:relative}.media-placeholder-grid{background-image:linear-gradient(#222 1px,#0000 0),linear-gradient(90deg,#222 1px,#0000 0);background-image:linear-gradient(var(--border) 1px,#0000 1px),linear-gradient(90deg,var(--border) 1px,#0000 1px);background-size:34px 34px;inset:0;-webkit-mask-image:radial-gradient(circle at center,#000,#0000 82%);mask-image:radial-gradient(circle at center,#000,#0000 82%);opacity:.22;position:absolute}.media-placeholder-content{align-items:center;color:#acacac;color:var(--text-muted);display:flex;font-size:.78rem;justify-content:center;min-height:inherit;padding:24px;position:relative;text-align:center;z-index:1}.bio-terminal,.media-placeholder-content{font-family:DM Mono,JetBrains Mono,Courier New,monospace;font-family:var(--font-mono)}.bio-terminal{background:#060606;border:1px solid #222;border:1px solid var(--border);border-radius:8px;box-shadow:0 24px 70px #0000003d;color:#e8f7ef;height:100%;min-height:360px;overflow:hidden;width:100%}.bio-terminal-top{align-items:center;background:#ffffff0a;border-bottom:1px solid #ffffff1a;display:flex;gap:8px;padding:12px 14px}.bio-terminal-top span{background:#7d7d7d;border-radius:50%;height:9px;width:9px}.bio-terminal-top strong{color:#b7c7bd;font-size:.68rem;font-weight:400;margin-left:8px}.bio-terminal-tabs{display:flex;flex-wrap:wrap;gap:6px;padding:10px 12px 0}.bio-terminal-tabs button{background:#0000;border:1px solid #ffffff1f;border-radius:4px;color:#9baaa1;cursor:pointer;font-family:DM Mono,JetBrains Mono,Courier New,monospace;font-family:var(--font-mono);font-size:.64rem;padding:5px 9px}.bio-terminal-tabs button.is-active{background:#dcefe5;color:#06100b}.bio-terminal-body{font-size:.74rem;line-height:1.72;overflow:hidden;padding:18px}.bio-terminal-output{color:#dcefe5;font:inherit;line-height:1.72;margin:0;overflow-wrap:anywhere;white-space:pre-wrap}.bio-terminal-output:first-line{color:#7fe3a2}.reg-network{-webkit-touch-callout:none;isolation:isolate;min-height:420px;position:relative;user-select:none;-webkit-user-select:none;width:100%}.reg-network-svg{height:100%;inset:0;overflow:visible;pointer-events:none;position:absolute;width:100%}.reg-network-svg marker path{fill:#acacac;fill:var(--text-muted)}.reg-edge line,.reg-edge path{stroke:#acacac;stroke:var(--text-muted);fill:none;stroke-width:.6;vector-effect:non-scaling-stroke}.reg-edge-represses path{stroke-dasharray:3 3}.reg-repressor{stroke:#f0f0f0!important;stroke:var(--text-primary)!important;stroke-width:1.4!important}.reg-edge-label{background:#0a0a0a;background:var(--bg-base);border:1px solid #222;border:1px solid var(--border);border-radius:50%;color:#f0f0f0;color:var(--text-primary);display:grid;font-family:DM Mono,JetBrains Mono,Courier New,monospace;font-family:var(--font-mono);font-size:.72rem;height:28px;place-items:center;pointer-events:none;position:absolute;transform:translate(-50%,-50%);width:28px;z-index:2}.reg-edge-label-represses{color:#acacac;color:var(--text-muted)}.reg-node{align-items:center;animation:regNodeFloat 4.5s ease-in-out infinite;background:color-mix(in srgb,#141414 92%,#0000);background:color-mix(in srgb,var(--bg-surface) 92%,#0000);border:1px solid #222;border:1px solid var(--border);border-radius:50%;box-shadow:0 18px 50px #00000038;color:#f0f0f0;color:var(--text-primary);cursor:grab;display:flex;flex-direction:column;gap:3px;height:118px;justify-content:center;padding:12px;position:absolute;text-align:center;touch-action:none;transform:translate(-50%,-50%);transition:transform .14s ease-out,border-color .2s,background .2s,box-shadow .2s;width:118px;z-index:3}.reg-node:active{cursor:grabbing}.reg-node.is-dragging{animation:none;border-color:#f0f0f0;border-color:var(--text-primary);box-shadow:0 22px 70px #00000057;transform:translate(-50%,-50%) scale(.93);transition:transform .12s ease-out,border-color .15s,background .2s,box-shadow .2s}.reg-node strong{font-family:DM Mono,JetBrains Mono,Courier New,monospace;font-family:var(--font-mono);font-size:.8rem;font-weight:500}.reg-node span{color:#acacac;color:var(--text-muted);font-family:DM Sans,system-ui,sans-serif;font-family:var(--font-sans);font-size:.68rem}.reg-node-sigE{border-color:color-mix(in srgb,#f0f0f0 36%,#222);border-color:color-mix(in srgb,var(--text-primary) 36%,var(--border))}.reg-node-spoIIIA{background:#0a0a0a;background:var(--bg-base)}.reg-node-sigE{animation-delay:-.7s}.reg-node-spoIIID{animation-delay:-2.1s}.reg-node-spoIIIA{animation-delay:-3.2s}.reg-node-clickup{animation-delay:-1.2s}.reg-node-sms{animation-delay:-2.8s}.reg-node-strapi{animation-delay:-.4s}.reg-node-dropbox{animation-delay:-3.5s}.reg-node-ocr{animation-delay:-1.9s}.reg-node-csv{animation-delay:-4.1s}@keyframes caretBlink{50%{opacity:0}}@keyframes regNodeFloat{0%,to{transform:translate(-50%,-50%) translateY(0)}50%{transform:translate(-50%,-50%) translateY(-16px)}}@keyframes skillBarFill{0%{opacity:.92;transform:scaleX(0)}78%{opacity:.92;transform:scaleX(1)}to{opacity:.35;transform:scaleX(1)}}@media (prefers-reduced-motion:reduce){.hero-reveal{animation:none;opacity:1;transform:none}.reveal-block{opacity:1;transform:none}.contact-cv-link,.cv-download-link,.nav-cv-link,.reveal-block{transition:none}.cv-download-link.is-bursting{border-color:#acacac;border-color:var(--text-muted)}.cv-download-link.is-bursting .cv-download-particle{animation:none;opacity:0}}@media (max-width:900px){.desktop-cv,.desktop-nav{display:none!important}}@media (max-width:767px){html{font-size:104%}.container{padding:0 16px}.section-flow{max-width:none}.section-h2{font-size:2.08rem}.about-notes-grid,.dna-skills{grid-template-columns:1fr}.dna-skills{align-items:start;grid-auto-rows:auto}.dna-skill-group{height:auto;padding:14px}.dna-pairs{padding-left:22px;position:relative}.dna-pairs:before{background:#222;background:var(--border);bottom:0;content:"";left:5px;position:absolute;top:0;width:1px}.dna-pair{gap:8px;grid-template-columns:1fr;padding-left:0}.dna-rung{align-items:center;bottom:auto;display:flex;height:12px;justify-content:center;left:-22px;position:absolute;top:50%;transform:translateY(-50%);width:12px}.dna-rung:before{display:none}.dna-rung span{box-shadow:0 0 0 3px #141414;box-shadow:0 0 0 3px var(--bg-surface);height:10px;left:auto;position:static;width:10px}.dna-pair:after,.dna-pair:before,.dna-skill-right:empty{display:none}.project-exhibit,.project-exhibit-reverse{gap:20px;grid-template-columns:1fr;padding-top:30px}.project-exhibit-reverse .project-exhibit-copy,.project-exhibit-reverse .project-exhibit-media{order:0}.publication-record{gap:0;grid-template-columns:1fr}.publication-record .media-placeholder{min-height:220px}.publication-copy{padding:22px}.reveal-block{transform:translateY(20px)}.bio-terminal,.media-placeholder{min-height:280px}.project-exhibit-media{min-height:0}.reg-network{min-height:300px}.reg-node{height:92px;padding:10px;width:92px}}@media (min-width:901px){.hamburger,.mobile-menu{display:none!important}}@media (min-width:1400px){.container{max-width:1400px}}.section-pad{align-items:stretch;display:flex;min-height:calc(100svh - 56px);padding:120px 0;position:relative;scroll-margin-top:56px;transition:background .35s;z-index:1}@media (max-width:767px){.section-pad{min-height:auto;padding:88px 0}}.section-bg-soft{background:#0a0a0aad;background:var(--bg-base-soft)}.section-bg-alt{background:#1414148f;background:var(--bg-alt)}.section-bg-contact{background:linear-gradient(180deg,#0a0a0a85,#0a0a0aad),repeating-linear-gradient(90deg,#0000 0 38px,hsla(0,0%,100%,.018) 38px 39px);background:linear-gradient(180deg,var(--bg-contact),var(--bg-base-soft)),repeating-linear-gradient(90deg,#0000 0 38px,hsla(0,0%,100%,.018) 38px 39px)}.portfolio-root{background:#0a0a0a;background:var(--bg-base);color:#f0f0f0;color:var(--text-primary);font-family:DM Mono,JetBrains Mono,Courier New,monospace;font-family:var(--font-mono);min-height:100vh;padding-top:56px;position:relative;transition:background .35s,color .35s}.bg-canvas{inset:0;opacity:1;pointer-events:none;position:fixed;transition:opacity .4s;z-index:0}html.light .bg-canvas{opacity:.88}.site-footer{align-items:center;border-top:1px solid #1a1a1a;border-top:1px solid var(--border-subtle);color:#8c8c8c;color:var(--text-faint);display:flex;font-family:DM Mono,JetBrains Mono,Courier New,monospace;font-family:var(--font-mono);font-size:.7rem;justify-content:space-between;padding:24px 32px;position:relative;transition:color .35s;z-index:1}.card{background:#141414;background:var(--bg-surface);border:1px solid #222;border:1px solid var(--border);border-radius:8px;padding:24px;transition:border-color .2s,transform .2s,background .35s}.section-label{color:#acacac;color:var(--text-muted);font-family:DM Mono,JetBrains Mono,Courier New,monospace;font-family:var(--font-mono);font-size:.68rem;font-weight:400;letter-spacing:.2em;margin-bottom:12px;text-transform:uppercase}.section-intro{margin-bottom:46px}.section-intro-divider{background:#222;background:var(--border);height:1px;width:100%}.pill{background:#0f0f0fbf;background:var(--bg-deep);font-size:.74rem;padding:3px 10px}.category-tag,.pill{border:1px solid #222;border:1px solid var(--border);border-radius:4px;color:#acacac;color:var(--text-muted);font-family:DM Mono,JetBrains Mono,Courier New,monospace;font-family:var(--font-mono)}.category-tag{font-size:.72rem;font-weight:500;letter-spacing:.05em;padding:3px 9px}.skill-chip{align-items:center;background:#0a0a0a;background:var(--bg-base);border:1px solid #222;border:1px solid var(--border);border-radius:6px;display:flex;gap:11px;min-width:0;overflow:hidden;padding:10px 12px;position:relative}.skill-chip-icon{align-items:center;border:1px solid #222;border:1px solid var(--border);border-radius:4px;color:#f0f0f0;color:var(--text-primary);display:inline-flex;flex-shrink:0;font-size:.66rem;height:24px;justify-content:center;letter-spacing:.05em;min-width:32px}.skill-chip-icon,.skill-chip-name{font-family:DM Mono,JetBrains Mono,Courier New,monospace;font-family:var(--font-mono)}.skill-chip-name{color:#d2d2d2;color:var(--text-body);font-size:.84rem;line-height:1.25;min-width:0;overflow-wrap:anywhere}.skill-chip-name-long{font-size:.76rem}.skill-chip-bar{background:#222;background:var(--border);bottom:0;height:2px;left:0;position:absolute;right:0}.skill-chip-bar-fill{animation:skillBarFill .78s cubic-bezier(.25,.9,.2,1) forwards;background:#f0f0f0;background:var(--text-primary);height:100%;transform:scaleX(0);transform-origin:left center;width:100%;will-change:transform,opacity}.site-nav{align-items:center;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#0a0a0aeb;background:var(--bg-nav);border-bottom:1px solid #1a1a1a;border-bottom:1px solid var(--border-subtle);box-sizing:border-box;display:flex;height:56px;justify-content:space-between;left:0;max-width:100vw;padding:0 32px;position:fixed;right:0;top:0;transition:background .35s;width:100vw;z-index:100}.nav-logo{color:#f0f0f0;color:var(--text-primary);font-family:DM Mono,JetBrains Mono,Courier New,monospace;font-family:var(--font-mono);font-size:.85rem;font-weight:500;letter-spacing:.15em;text-transform:uppercase}.desktop-nav{display:flex;gap:0}.nav-link-btn{background:none;border:none;border-bottom:1px solid #0000;color:#acacac;color:var(--text-muted);cursor:pointer;font-family:DM Sans,system-ui,sans-serif;font-family:var(--font-sans);font-size:.78rem;font-weight:400;letter-spacing:.02em;padding:6px 14px;transition:all .2s}.nav-link-btn[data-active=true]{border-bottom-color:#f0f0f0;border-bottom-color:var(--text-primary);color:#f0f0f0;color:var(--text-primary);font-weight:500}.nav-actions-group{align-items:center;display:flex;flex-shrink:0;gap:8px}.nav-icon-btn{align-items:center;background:none;border:1px solid #222;border:1px solid var(--border);border-radius:6px;color:#acacac;color:var(--text-muted);cursor:pointer;display:flex;font-family:DM Mono,JetBrains Mono,Courier New,monospace;font-family:var(--font-mono);font-size:.72rem;font-weight:500;height:34px;justify-content:center;transition:border-color .2s,color .2s;width:34px}.nav-icon-btn:hover{border-color:#f0f0f0;border-color:var(--text-primary);color:#f0f0f0;color:var(--text-primary)}.nav-theme-btn{font-size:.85rem}.cv-download-link{isolation:isolate;overflow:visible;position:relative}.cv-download-label{position:relative;z-index:2}.cv-download-particles{inset:0;pointer-events:none;position:absolute;z-index:1}.cv-download-particle{background:#141414;background:var(--bg-surface);border:1px solid;height:4px;left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%) scale(.7) rotate(0deg);width:4px}.cv-download-link.is-bursting .cv-download-particle{animation:cvParticleBurst .68s ease-out forwards}.cv-download-particle-1{--cv-x:-32px;--cv-y:-20px;--cv-r:-18deg}.cv-download-particle-2{--cv-x:-14px;--cv-y:-30px;--cv-r:24deg}.cv-download-particle-3{--cv-x:12px;--cv-y:-28px;--cv-r:-28deg}.cv-download-particle-4{--cv-x:34px;--cv-y:-15px;--cv-r:18deg}.cv-download-particle-5{--cv-x:30px;--cv-y:18px;--cv-r:-12deg}.cv-download-particle-6{--cv-x:8px;--cv-y:30px;--cv-r:32deg}.cv-download-particle-7{--cv-x:-18px;--cv-y:26px;--cv-r:-34deg}.cv-download-particle-8{--cv-x:-36px;--cv-y:8px;--cv-r:16deg}.nav-cv-link{align-items:center;background:#f0f0f0;background:var(--text-primary);border:1px solid #f0f0f0;border:1px solid var(--text-primary);border-radius:6px;color:#0a0a0a;color:var(--bg-base);cursor:pointer;display:inline-flex;font-family:DM Mono,JetBrains Mono,Courier New,monospace;font-family:var(--font-mono);font-size:.75rem;font-weight:500;gap:7px;justify-content:center;letter-spacing:.05em;padding:7px 15px;text-decoration:none;transition:opacity .2s,transform .2s}.nav-cv-link:before{color:currentColor;content:"↓";font-size:.78rem;line-height:1}.nav-cv-link:hover{opacity:.86;transform:translateY(-1px)}.hamburger{align-items:center;background:none;border:1px solid #222;border:1px solid var(--border);border-radius:6px;color:#f0f0f0;color:var(--text-primary);cursor:pointer;display:flex;font-family:DM Mono,JetBrains Mono,Courier New,monospace;font-family:var(--font-mono);font-size:.78rem;height:32px;justify-content:center;width:32px}.mobile-menu{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#0a0a0aeb;background:var(--bg-nav);border-bottom:1px solid #222;border-bottom:1px solid var(--border);display:flex;flex-direction:column;gap:4px;left:0;padding:20px;position:fixed;right:0;top:56px;z-index:99}.mobile-nav-btn{background:none;border:none;border-radius:6px;color:#acacac;color:var(--text-muted);cursor:pointer;font-family:DM Sans,system-ui,sans-serif;font-family:var(--font-sans);font-size:.88rem;font-weight:400;padding:11px 12px;text-align:left}.mobile-nav-btn[data-active=true]{color:#f0f0f0;color:var(--text-primary);font-weight:500}.mobile-menu-footer{display:flex;gap:8px;margin-top:8px}.mobile-action-btn{background:#141414;background:var(--bg-surface);border:1px solid #222;border:1px solid var(--border);border-radius:6px;color:#acacac;color:var(--text-muted);cursor:pointer;flex:1 1;font-family:DM Mono,JetBrains Mono,Courier New,monospace;font-family:var(--font-mono);font-size:.82rem;font-weight:500;padding:10px}.mobile-action-btn-sans{font-family:DM Sans,system-ui,sans-serif;font-family:var(--font-sans);font-weight:400}.mobile-cv-link{align-items:center;background:#f0f0f0;background:var(--text-primary);border:1px solid #f0f0f0;border:1px solid var(--text-primary);border-radius:6px;color:#0a0a0a;color:var(--bg-base);cursor:pointer;display:flex;flex:1 1;font-family:DM Mono,JetBrains Mono,Courier New,monospace;font-family:var(--font-mono);font-size:.82rem;font-weight:500;gap:7px;justify-content:center;padding:10px;text-align:center;text-decoration:none}.mobile-cv-link:before{color:currentColor;content:"↓"}.hero-section{align-items:center;display:flex;min-height:calc(100svh - 56px);padding:32px 0 40px;position:relative;z-index:1}.hero-eyebrow{border:1px solid #222;border:1px solid var(--border);border-radius:4px;box-sizing:border-box;color:#acacac;color:var(--text-muted);display:inline-block;font-size:.76rem;letter-spacing:.1em;margin-bottom:40px;max-width:100%;overflow-wrap:anywhere;padding:4px 12px;text-transform:uppercase}.hero-eyebrow,.hero-h1{font-family:DM Mono,JetBrains Mono,Courier New,monospace;font-family:var(--font-mono)}.hero-h1{color:#f0f0f0;color:var(--text-primary);font-size:4.4rem;font-weight:400;line-height:1.02;margin:0 0 16px;max-width:980px}.hero-h2{color:#acacac;color:var(--text-muted);font-family:DM Sans,system-ui,sans-serif;font-family:var(--font-sans);font-size:1.38rem;font-weight:300;letter-spacing:0;margin:0 0 28px}.hero-cta-row{display:flex;flex-wrap:wrap;gap:10px;margin-top:46px}.hero-btn-primary{background:#f0f0f0;background:var(--text-primary);border:none;border-radius:6px;color:#0a0a0a;color:var(--bg-base);cursor:pointer;font-family:DM Mono,JetBrains Mono,Courier New,monospace;font-family:var(--font-mono);font-size:.9rem;font-weight:500;letter-spacing:.05em;padding:14px 32px;transition:opacity .2s}.hero-btn-primary:hover{opacity:.85}.hero-btn-ghost{background:#0000;border:1px solid #222;border:1px solid var(--border);border-radius:6px;color:#f0f0f0;color:var(--text-primary);cursor:pointer;font-family:DM Mono,JetBrains Mono,Courier New,monospace;font-family:var(--font-mono);font-size:.9rem;letter-spacing:.05em;padding:14px 32px;transition:border-color .2s}.hero-btn-ghost:hover{border-color:#f0f0f0;border-color:var(--text-primary)}.hero-stats-row{border-top:1px solid #1a1a1a;border-top:1px solid var(--border-subtle);display:flex;flex-wrap:wrap;gap:40px;margin-top:80px;padding-top:36px}.hero-stat-value{color:#f0f0f0;color:var(--text-primary);font-family:DM Mono,JetBrains Mono,Courier New,monospace;font-family:var(--font-mono);font-size:2.1rem;font-weight:400;letter-spacing:0}.hero-stat-label{color:#acacac;color:var(--text-muted);font-family:DM Sans,system-ui,sans-serif;font-family:var(--font-sans);font-size:.78rem;font-weight:300;letter-spacing:.05em;margin-top:2px}.about-grid{grid-gap:58px;align-items:center;display:grid;gap:58px;grid-template-columns:minmax(0,1.05fr) minmax(360px,.95fr)}.about-bio{color:#d2d2d2;color:var(--text-body);font-family:DM Sans,system-ui,sans-serif;font-family:var(--font-sans);font-size:.98rem;font-weight:300;line-height:1.9;margin:0}.about-bio-note{padding:30px}.about-tags-row{display:flex;flex-wrap:wrap;gap:6px;margin-top:24px}.about-note-pad{min-height:118px}.about-note-label{color:#acacac;color:var(--text-muted);font-family:DM Mono,JetBrains Mono,Courier New,monospace;font-family:var(--font-mono);font-size:.63rem;letter-spacing:.15em;margin-bottom:4px;text-transform:uppercase}.about-note-text{color:#d2d2d2;color:var(--text-body)}.about-note-link,.about-note-text{font-family:DM Sans,system-ui,sans-serif;font-family:var(--font-sans);font-size:.84rem}.about-note-link{color:#f0f0f0;color:var(--text-primary);overflow-wrap:break-word;text-decoration:none;word-break:break-all}.skill-group-title{font-size:1rem;line-height:1.25;margin:0}.project-title,.skill-group-title{color:#f0f0f0;color:var(--text-primary);font-family:DM Mono,JetBrains Mono,Courier New,monospace;font-family:var(--font-mono);font-weight:400}.project-title{font-size:1.45rem;line-height:1.22;margin:0 0 14px}.project-desc{color:#d2d2d2;color:var(--text-body);font-family:DM Sans,system-ui,sans-serif;font-family:var(--font-sans);font-size:.94rem;font-weight:300;line-height:1.78;margin:0 0 14px}.project-tags-row{display:flex;flex-wrap:wrap;gap:6px}.project-tags-row.has-links{margin-bottom:22px}.project-links-row{display:flex;flex-wrap:wrap;gap:8px}.pub-list{display:flex;flex-direction:column;gap:28px}.pub-badge{align-self:flex-start;border:1px solid #222;border:1px solid var(--border);border-radius:4px;color:#acacac;color:var(--text-muted);font-family:DM Mono,JetBrains Mono,Courier New,monospace;font-family:var(--font-mono);font-size:.68rem;font-weight:500;letter-spacing:.04em;padding:4px 10px;text-transform:uppercase;white-space:nowrap}.pub-title{color:#f0f0f0;color:var(--text-primary);font-size:1.36rem;font-weight:500;line-height:1.25;margin-bottom:10px;margin-top:18px}.pub-authors,.pub-title{font-family:DM Sans,system-ui,sans-serif;font-family:var(--font-sans)}.pub-authors{color:#acacac;color:var(--text-muted);font-size:.9rem;line-height:1.6}.pub-journal{color:#f0f0f0;color:var(--accent);font-family:DM Sans,system-ui,sans-serif;font-family:var(--font-sans);font-size:.86rem;line-height:1.5;margin-top:10px}.pub-doi{color:#f0f0f0;color:var(--text-primary);font-family:DM Mono,JetBrains Mono,Courier New,monospace;font-family:var(--font-mono);font-size:.76rem;margin-top:22px}.contact-grid{grid-gap:40px;align-items:start;display:grid;gap:40px;grid-template-columns:minmax(0,1.35fr) minmax(320px,.9fr)}.contact-field{display:flex;flex-direction:column;gap:8px}.contact-form-fields{grid-gap:14px;display:grid;gap:14px;grid-template-columns:1fr 1fr}.contact-label{color:#acacac;color:var(--text-muted);font-family:DM Mono,JetBrains Mono,Courier New,monospace;font-family:var(--font-mono);font-size:.72rem;letter-spacing:.04em;text-transform:uppercase}.contact-input{background:#111;background:var(--bg-input);border:1px solid #222;border:1px solid var(--border);border-radius:6px;color:#f0f0f0;color:var(--text-primary);font-family:DM Sans,system-ui,sans-serif;font-family:var(--font-sans);font-size:.84rem;font-weight:300;outline:none;padding:12px 16px;transition:border-color .2s;width:100%}.contact-input:focus{border-color:#acacac;border-color:var(--text-muted)}.contact-textarea{min-height:170px;resize:vertical}.contact-error{color:#acacac;color:var(--text-muted);font-family:DM Sans,system-ui,sans-serif;font-family:var(--font-sans);font-size:.78rem}.contact-form-card{display:flex;flex-direction:column;gap:16px;padding:28px}.contact-submit-btn{background:#f0f0f0;background:var(--text-primary);border:none;border-radius:6px;color:#0a0a0a;color:var(--bg-base);cursor:pointer;font-family:DM Mono,JetBrains Mono,Courier New,monospace;font-family:var(--font-mono);font-size:.82rem;font-weight:500;letter-spacing:.05em;padding:13px;transition:opacity .2s;width:100%}.contact-submit-btn:hover{opacity:.85}.contact-submit-btn:disabled{cursor:wait;opacity:.6}.contact-success-card{padding:36px;text-align:center}.contact-success-icon{font-size:1.5rem;margin-bottom:14px}.contact-success-icon,.contact-success-title{font-family:DM Mono,JetBrains Mono,Courier New,monospace;font-family:var(--font-mono)}.contact-success-title{color:#f0f0f0;color:var(--text-primary);font-size:1rem;font-weight:400}.contact-success-desc{color:#acacac;color:var(--text-muted);font-family:DM Sans,system-ui,sans-serif;font-family:var(--font-sans);font-size:.82rem;font-weight:300;margin-top:6px}.contact-success-btn{background:none;border:1px solid #222;border:1px solid var(--border);border-radius:4px;color:#acacac;color:var(--text-muted);cursor:pointer;font-family:DM Mono,JetBrains Mono,Courier New,monospace;font-family:var(--font-mono);font-size:.78rem;margin-top:20px;padding:8px 18px}.contact-sidebar{grid-gap:10px;align-content:start;align-items:stretch;display:grid;gap:10px;grid-template-columns:minmax(0,1fr);min-width:0;padding-top:6px;width:100%}.contact-info-card{background:color-mix(in srgb,#141414 86%,#f0f0f0 4%);background:color-mix(in srgb,var(--bg-surface) 86%,var(--text-primary) 4%);border-radius:6px;display:block;min-width:0;padding:16px 18px;width:100%}.contact-info-label{color:#acacac;color:var(--text-muted);font-family:DM Mono,JetBrains Mono,Courier New,monospace;font-family:var(--font-mono);font-size:.63rem;letter-spacing:.15em;margin-bottom:4px;text-transform:uppercase}.contact-info-value{color:#f0f0f0;color:var(--text-primary);display:block;font-family:DM Sans,system-ui,sans-serif;font-family:var(--font-sans);font-size:.84rem;max-width:100%;overflow-wrap:break-word;text-decoration:none;word-break:break-all}.contact-cv-link{align-items:center;background:#f0f0f0;background:var(--text-primary);border:1px solid #f0f0f0;border:1px solid var(--text-primary);color:#0a0a0a;color:var(--bg-base);cursor:pointer;display:flex;font-family:DM Mono,JetBrains Mono,Courier New,monospace;font-family:var(--font-mono);font-size:.82rem;gap:18px;justify-content:space-between;min-width:0;padding:18px;text-align:left;text-decoration:none;transition:opacity .2s,transform .2s;width:100%}.contact-cv-link:after{align-items:center;border:1px solid;border-radius:6px;color:currentColor;content:"↓";display:inline-flex;flex:0 0 auto;height:32px;justify-content:center;width:32px}.contact-cv-link:hover{opacity:.86;transform:translateY(-1px)}.contact-cv-link .cv-download-label{display:flex;flex-direction:column;gap:4px;min-width:0}.contact-cv-link .cv-download-label span{overflow-wrap:anywhere}.contact-cv-kicker{color:currentColor;font-size:.6rem;letter-spacing:.16em;opacity:.68}@keyframes cvParticleBurst{0%{opacity:0;transform:translate(-50%,-50%) scale(.45) rotate(0deg)}18%{opacity:.82}to{opacity:0;transform:translate(calc(-50% + var(--cv-x)),calc(-50% + var(--cv-y))) scale(1) rotate(var(--cv-r))}}.cv-preview-overlay{align-items:center;display:flex;inset:0;justify-content:center;padding:24px;position:fixed;z-index:200}.cv-preview-backdrop{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#000000b8;inset:0;position:absolute}.cv-preview-panel{background:#141414;background:var(--bg-surface);border:1px solid color-mix(in srgb,#222 60%,#f0f0f0 30%);border:1px solid color-mix(in srgb,var(--border) 60%,var(--text-primary) 30%);border-radius:8px;box-shadow:0 28px 90px #0000006b;display:grid;grid-template-rows:auto 1fr;height:min(86svh,860px);overflow:hidden;position:relative;width:min(980px,100%);z-index:1}.cv-preview-toolbar{align-items:center;background:#0a0a0aad;background:var(--bg-base-soft);border-bottom:1px solid #222;border-bottom:1px solid var(--border);display:flex;gap:16px;justify-content:space-between;padding:14px 16px}.cv-preview-kicker{color:#acacac;color:var(--text-muted);font-size:.58rem;letter-spacing:.16em}.cv-preview-kicker,.cv-preview-title{font-family:DM Mono,JetBrains Mono,Courier New,monospace;font-family:var(--font-mono)}.cv-preview-title{color:#f0f0f0;color:var(--text-primary);font-size:.9rem;font-weight:500;margin:2px 0 0}.cv-preview-actions{align-items:center;display:flex;gap:8px}.cv-preview-language-switch{align-items:center;background:#141414;background:var(--bg-surface);border:1px solid #222;border:1px solid var(--border);border-radius:6px;display:inline-flex;gap:3px;padding:3px}.cv-preview-language-switch button{background:#0000;border:0;border-radius:4px;color:#acacac;color:var(--text-muted);cursor:pointer;font-family:DM Mono,JetBrains Mono,Courier New,monospace;font-family:var(--font-mono);font-size:.68rem;min-height:30px;min-width:34px}.cv-preview-download,.cv-preview-language-switch button.is-active{background:#f0f0f0;background:var(--text-primary);color:#0a0a0a;color:var(--bg-base)}.cv-preview-download{align-items:center;border:1px solid #f0f0f0;border:1px solid var(--text-primary);border-radius:6px;display:inline-flex;font-family:DM Mono,JetBrains Mono,Courier New,monospace;font-family:var(--font-mono);font-size:.72rem;font-weight:500;gap:8px;justify-content:center;min-height:36px;padding:8px 14px;text-decoration:none;transition:opacity .2s,transform .2s}.cv-preview-download:before{content:"↓"}.cv-preview-download:hover{opacity:.86;transform:translateY(-1px)}.cv-preview-close{background:#141414;background:var(--bg-surface);border:1px solid #222;border:1px solid var(--border);border-radius:6px;color:#f0f0f0;color:var(--text-primary);cursor:pointer;font-family:DM Mono,JetBrains Mono,Courier New,monospace;font-family:var(--font-mono);font-size:1rem;height:36px;width:36px}.cv-preview-frame-wrap{background:#0a0a0a;background:var(--bg-base);min-height:0;overflow:auto;padding:18px}.cv-preview-pages{align-items:center;display:flex;flex-direction:column;gap:18px}.cv-preview-page{background:#fff;border-radius:4px;box-shadow:0 16px 50px #00000057;display:block;height:auto;width:min(100%,760px)}.text-link{transition:opacity .2s}.text-link:hover{opacity:.7}@media (max-width:767px){.section-intro{margin-bottom:34px}.section-sub{margin-bottom:20px}.site-footer{font-size:.62rem;padding:18px 16px}.site-nav{padding:0 16px}.nav-logo{font-size:.78rem}.nav-actions-group{gap:6px}.nav-icon-btn{font-size:.68rem;height:32px;width:32px}.nav-theme-btn{font-size:.78rem}.hero-section{min-height:82vh;padding:80px 0 60px}.hero-eyebrow{display:block;font-size:.7rem;margin-bottom:32px}.hero-h1{font-size:1.62rem;max-width:330px}.hero-h2{font-size:1rem}.hero-cta-row{margin-top:38px}.hero-btn-ghost,.hero-btn-primary{font-size:.82rem;padding:12px 28px}.hero-stats-row{gap:24px;margin-top:64px;padding-top:32px}.hero-stat-value{font-size:1.4rem}.hero-stat-label{font-size:.7rem}.about-grid{gap:34px;grid-template-columns:1fr}.about-bio{font-size:.92rem}.about-bio-note{padding:22px}.about-note-pad{min-height:92px}.skill-group-title{font-size:.92rem}.project-title{font-size:1.18rem}.project-desc{font-size:.88rem}.pub-list{gap:18px}.pub-title{font-size:1.05rem}.pub-authors{font-size:.82rem}.pub-journal{font-size:.8rem}#contact .contact-cv-link,#contact .contact-form-card,#contact .contact-grid,#contact .contact-info-card,#contact .contact-sidebar,#contact .container,#contact .reveal-block,#contact .section-flow{justify-self:stretch;max-width:100%;min-width:0;width:100%}.contact-grid{align-items:stretch;gap:16px;grid-template-columns:minmax(0,1fr);justify-items:stretch}#contact .reveal-block{opacity:1;transform:none;transition:none}.contact-label{font-size:.68rem}.contact-input{font-size:.8rem;padding:11px 14px}.contact-textarea{min-height:132px}.contact-form-fields{grid-template-columns:1fr}.contact-form-card{gap:14px;padding:18px}.contact-submit-btn{font-size:.78rem;padding:12px}.contact-success-card{padding:24px}.contact-success-icon{font-size:1.25rem}.contact-success-title{font-size:.95rem}.contact-success-desc{font-size:.78rem}.contact-success-btn{padding:9px 14px}.contact-sidebar{gap:10px;grid-template-columns:minmax(0,1fr);padding-top:0}.contact-info-label{font-size:.58rem}.contact-info-value{font-size:.78rem}.contact-cv-link,.contact-info-card{padding:14px 12px}.contact-cv-link{font-size:.76rem;grid-column:auto}.cv-preview-overlay{align-items:stretch;padding:10px}.cv-preview-panel{border-radius:6px;height:calc(100svh - 20px)}.cv-preview-toolbar{align-items:stretch;flex-direction:column;padding:12px}.cv-preview-actions{width:100%}.cv-preview-language-switch{flex:1 1;justify-content:center}.cv-preview-language-switch button{flex:1 1}.cv-preview-download{flex:1 1;min-height:38px}.cv-preview-close{flex:0 0 38px;height:38px}.cv-preview-frame-wrap{padding:10px}.cv-preview-pages{gap:10px}.cv-preview-page{border-radius:3px;width:100%}}
/*# sourceMappingURL=main.1288c11c.css.map*/