@import"https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&family=IBM+Plex+Mono:wght@400;500&display=swap";:root{--bg: #070707;--bg-soft: #0d0d0d;--surface: #111111;--surface-soft: #141414;--surface-elevated: #171717;--line: #222222;--line-strong: #2f2f2f;--line-accent: rgba(var(--accent-rgb), .48);--text: #f2f2f2;--muted: #b1b1b1;--accent-rgb: 46, 139, 87;--accent: #2e8b57;--accent-strong: #38a46a;--accent-deep: #1f6b44;--accent-soft: rgba(var(--accent-rgb), .16);--accent-faint: rgba(var(--accent-rgb), .09);--shadow-soft: 0 10px 30px rgba(0, 0, 0, .28);--shadow-accent: 0 12px 28px rgba(var(--accent-rgb), .24);--motion-fast: .18s;--motion-base: .32s;--ease-premium: cubic-bezier(.22, 1, .36, 1);--container: 1120px;--section-y: clamp(4rem, 7vw, 6rem)}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}html{scroll-behavior:smooth}body{font-family:Manrope,Segoe UI,sans-serif;background:radial-gradient(circle at 82% 8%,rgba(var(--accent-rgb),.06),rgba(var(--accent-rgb),0) 36%),linear-gradient(180deg,#060606,#0a0a0a 56%,#070707);color:var(--text);line-height:1.5}a{color:inherit}img{max-width:100%;display:block}.site{min-height:100vh}.container{width:min(100% - 2.5rem,var(--container));margin:0 auto}.section{padding:var(--section-y) 0;border-top:1px solid var(--line)}.eyebrow{margin:0 0 .75rem;font-family:IBM Plex Mono,monospace;font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.section-title{margin:0;font-size:clamp(1.7rem,2.8vw,2.45rem);line-height:1.12}.section-copy{margin:1rem 0 0;max-width:760px;color:var(--muted)}.button{display:inline-flex;align-items:center;justify-content:center;min-height:42px;padding:0 1.05rem;border:1px solid var(--line-strong);border-radius:.3rem;text-decoration:none;font-size:.88rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;transition:border-color var(--motion-fast) var(--ease-premium),background-color var(--motion-fast) var(--ease-premium),color var(--motion-fast) var(--ease-premium),transform var(--motion-fast) var(--ease-premium),box-shadow var(--motion-fast) var(--ease-premium)}.button-primary{background:var(--accent);border-color:var(--accent);color:#061b12;box-shadow:inset 0 0 0 1px #0003,var(--shadow-accent)}.button-primary:hover{background:var(--accent-strong);border-color:var(--accent-deep);transform:translateY(-1px);box-shadow:inset 0 0 0 1px #0003,0 14px 30px rgba(var(--accent-rgb),.29)}.button-secondary{background:#ffffff05;color:var(--text)}.button-secondary:hover{border-color:var(--line-accent);background:rgba(var(--accent-rgb),.12);transform:translateY(-1px);box-shadow:var(--shadow-soft)}a:focus-visible,button:focus-visible,.button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@keyframes fade-up{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes soft-reveal{0%{opacity:0;transform:scale(.985)}to{opacity:1;transform:scale(1)}}@media (max-width: 720px){.container{width:min(100% - 1.5rem,var(--container))}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}.site{background:var(--bg);color:var(--text)}.header-section{position:sticky;top:0;z-index:30;background:#070707e0;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.header-row{min-height:64px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:1rem}.header-brand{border:0;background:none;color:var(--text);padding:0;cursor:pointer;font-size:.9rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;transition:color var(--motion-fast) var(--ease-premium),transform var(--motion-fast) var(--ease-premium)}.header-brand:hover{color:var(--accent);transform:translateY(-1px)}.header-nav{display:flex;justify-content:center;gap:1rem}.header-link{border:0;background:none;color:var(--muted);padding:.2rem 0;font-size:.77rem;letter-spacing:.12em;text-transform:uppercase;cursor:pointer;border-bottom:1px solid transparent;transition:color var(--motion-fast) var(--ease-premium),border-color var(--motion-fast) var(--ease-premium)}.header-link:hover{color:var(--text);border-color:var(--line-accent)}.header-cv{min-height:36px;padding:0 .8rem;font-size:.76rem;border-color:var(--line-strong)}.header-menu-toggle{display:none;border:1px solid var(--line-strong);background:#ffffff05;color:var(--text);padding:.45rem .7rem;font-size:.74rem;text-transform:uppercase;letter-spacing:.1em;transition:border-color var(--motion-fast) var(--ease-premium),background-color var(--motion-fast) var(--ease-premium)}.header-menu-toggle:hover{border-color:var(--line-accent);background:rgba(var(--accent-rgb),.12)}.header-mobile{border-top:1px solid var(--line);background:var(--bg-soft)}.header-mobile-inner{display:grid;padding:.8rem 0;gap:.5rem}.header-mobile .header-link{justify-self:start;padding:.42rem .1rem}@media (max-width: 860px){.desktop-nav,.header-cv{display:none}.header-row{grid-template-columns:1fr auto}.header-menu-toggle{display:block}}.hero-section{padding-top:clamp(5rem,10vw,8rem);border-top:0;background:radial-gradient(circle at 82% 18%,rgba(var(--accent-rgb),.14),rgba(var(--accent-rgb),0) 42%),linear-gradient(180deg,#080808,#0b0f0c)}.hero-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:2.2rem;align-items:center}.hero-title{margin:0;max-width:760px;font-size:clamp(2.1rem,4.4vw,3.85rem);line-height:1.06;letter-spacing:-.02em;text-wrap:balance}.hero-subtitle{margin:1.1rem 0 0;max-width:670px;color:#ddd;font-size:clamp(1rem,1.45vw,1.18rem)}.hero-supporting{margin:.9rem 0 0;max-width:690px;color:var(--muted)}.hero-cta-grid{margin-top:1.45rem;width:min(100%,52rem);display:grid;gap:.75rem}.hero-meta{display:grid;grid-template-columns:.95fr 1.45fr;gap:.65rem}.hero-meta span{width:100%;display:flex;align-items:center;padding:.32rem .56rem;border:1px solid var(--line-strong);font-family:IBM Plex Mono,monospace;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:#cfcfcf;background:linear-gradient(180deg,#ffffff09,#fff0)}.hero-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.65rem}.hero-portrait-wrap{display:flex;justify-content:flex-end}.hero-portrait-frame{position:relative;margin:0;width:min(420px,100%);aspect-ratio:3 / 4;border:1px solid var(--line-strong);background:#101010;padding:.6rem;box-shadow:var(--shadow-soft)}.hero-portrait-frame:before{content:"";position:absolute;top:.45rem;right:.45rem;bottom:.45rem;left:.45rem;border:1px solid var(--accent-soft);pointer-events:none}.hero-portrait-frame:after{content:"";position:absolute;top:.6rem;right:.6rem;bottom:.6rem;left:.6rem;pointer-events:none;background:radial-gradient(circle at 58% 12%,rgba(var(--accent-rgb),.2),rgba(var(--accent-rgb),0) 56%)}.hero-portrait{width:100%;height:100%;object-fit:cover;filter:saturate(.98) contrast(1.05)}.hero-copy .eyebrow,.hero-title,.hero-subtitle,.hero-supporting,.hero-cta-grid,.hero-portrait-wrap{opacity:0;animation:fade-up var(--motion-base) var(--ease-premium) forwards}.hero-copy .eyebrow{animation-delay:40ms}.hero-title{animation-delay:90ms}.hero-subtitle{animation-delay:.15s}.hero-supporting{animation-delay:.21s}.hero-cta-grid{animation-delay:.26s}.hero-portrait-wrap{animation:soft-reveal var(--motion-base) var(--ease-premium) forwards;animation-delay:.17s}@media (max-width: 980px){.hero-grid{grid-template-columns:1fr;gap:1.8rem}.hero-portrait-wrap{justify-content:flex-start}.hero-cta-grid{width:100%}}@media (max-width: 760px){.hero-meta,.hero-actions{grid-template-columns:1fr}.hero-cta-grid{gap:.9rem}}.about-section{background:var(--bg)}.about-grid{margin-top:1.6rem;display:grid;grid-template-columns:1.05fr .95fr;gap:1rem}.about-panel{border:1px solid var(--line-strong);background:var(--surface-soft);padding:1.15rem;box-shadow:inset 0 1px #ffffff05,var(--shadow-soft);position:relative}.about-panel:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,rgba(var(--accent-rgb),.72),rgba(var(--accent-rgb),0))}.about-panel h3,.about-panel h4{margin:0;font-size:.84rem;font-family:IBM Plex Mono,monospace;text-transform:uppercase;letter-spacing:.12em;color:#d6d6d6}.about-panel h4{margin-top:1.2rem}.about-panel ol{margin:.9rem 0 0;padding:0;list-style:none;counter-reset:step}.about-panel ol li{counter-increment:step;border-top:1px solid var(--line);padding:.76rem 0;color:var(--muted);display:grid;grid-template-columns:2.2rem 1fr;gap:.45rem}.about-panel ol li:before{content:"0" counter(step);color:var(--accent);font-family:IBM Plex Mono,monospace;font-size:.78rem}.about-tech-list,.about-education-list{margin:.9rem 0 0;padding:0;list-style:none}.about-tech-list{display:flex;flex-wrap:wrap;gap:.5rem}.about-tech-list li{display:inline-flex;align-items:center;gap:.4rem;border:1px solid var(--line);border-radius:.35rem;padding:.34rem .55rem;color:#cdcdcd;font-size:.8rem;background:linear-gradient(180deg,#ffffff08,#fff0);transition:border-color var(--motion-fast) var(--ease-premium),background-color var(--motion-fast) var(--ease-premium)}.about-tech-list li:hover{border-color:var(--line-accent);background:rgba(var(--accent-rgb),.1)}.about-tech-list img{width:14px;height:14px;object-fit:contain}.about-education-list li{border-top:1px solid var(--line);display:grid;gap:.18rem;position:relative;padding:.66rem 0 .66rem .62rem}.about-education-list li:before{content:"";position:absolute;left:0;top:.78rem;width:2px;height:calc(100% - 1.35rem);background:rgba(var(--accent-rgb),.55)}.about-education-list strong{font-size:.93rem;font-weight:600}.about-education-list span{color:var(--muted);font-size:.84rem}@media (max-width: 940px){.about-grid{grid-template-columns:1fr}}.projects-section{background:radial-gradient(circle at 12% 88%,rgba(var(--accent-rgb),.08),rgba(var(--accent-rgb),0) 36%),linear-gradient(180deg,#070707,#0b0e0c)}.projects-group{margin-top:2rem}.projects-group-title{margin:0 0 .9rem;font-size:.8rem;letter-spacing:.12em;text-transform:uppercase;color:#d2d2d2;font-family:IBM Plex Mono,monospace}.projects-grid{display:grid;grid-template-columns:1fr;gap:1rem}.projects-card{border:1px solid var(--line-strong);background:var(--surface-soft);overflow:hidden;box-shadow:inset 0 1px #ffffff05;transition:border-color var(--motion-fast) var(--ease-premium),transform var(--motion-fast) var(--ease-premium),box-shadow var(--motion-fast) var(--ease-premium);animation:fade-up var(--motion-base) var(--ease-premium) both}.projects-card:hover{border-color:var(--line-accent);transform:translateY(-2px);box-shadow:var(--shadow-soft)}.projects-card-main{border-left:3px solid rgba(var(--accent-rgb),.8);background:linear-gradient(180deg,rgba(var(--accent-rgb),.08) 0%,var(--surface-soft) 24%,var(--surface-soft) 100%)}.projects-card-experimental{border-style:dashed;opacity:.92}.projects-image-shell{position:relative;border-bottom:1px solid var(--line);min-height:220px;background:#0f0f0f;overflow:hidden}.projects-image{width:100%;height:100%;max-height:340px;object-fit:cover;transition:transform var(--motion-base) var(--ease-premium),filter var(--motion-base) var(--ease-premium)}.projects-card:hover .projects-image{transform:scale(1.025);filter:saturate(1.04) contrast(1.04)}.projects-tier-chip{position:absolute;top:.75rem;left:.75rem;z-index:2;display:inline-flex;align-items:center;min-height:1.5rem;padding:0 .5rem;border:1px solid var(--line-strong);border-radius:.35rem;font-family:IBM Plex Mono,monospace;font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:#e7e7e7;background:#080808bf;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.projects-image-overlay{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:linear-gradient(180deg,#07070705,#07070785);opacity:.72;transition:opacity var(--motion-fast) var(--ease-premium),background var(--motion-fast) var(--ease-premium)}.projects-card:hover .projects-image-overlay{opacity:1;background:linear-gradient(180deg,rgba(var(--accent-rgb),.03),#07070794)}.projects-image-placeholder{min-height:220px;display:grid;place-items:center;color:#d9d9d9;font-size:.95rem;letter-spacing:.08em;text-transform:uppercase;background:linear-gradient(180deg,#111,#0b0b0b)}.projects-content{padding:1.1rem}.projects-content h3{margin:0;font-size:1.25rem}.projects-summary{margin:.56rem 0 0;color:#d5d5d5}.projects-case-grid{margin-top:.95rem;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem}.projects-case-grid p{margin:0;border-top:1px solid var(--line);padding-top:.5rem;color:var(--muted);font-size:.93rem}.projects-case-grid strong{display:block;margin-bottom:.35rem;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:#d5d5d5;font-family:IBM Plex Mono,monospace}.projects-stack{margin:.9rem 0 0;color:#d6d6d6;font-size:.82rem;letter-spacing:.06em;text-transform:uppercase}.projects-note{margin:.7rem 0 0;padding-left:.6rem;border-left:2px solid var(--accent);color:#c2c2c2;font-size:.85rem}.projects-actions{margin-top:.95rem;display:flex;gap:.6rem;flex-wrap:wrap}.projects-grid .projects-card:nth-child(2){animation-delay:70ms}.projects-grid .projects-card:nth-child(3){animation-delay:.13s}@media (max-width: 900px){.projects-case-grid{grid-template-columns:1fr}}.contact-section{background:var(--bg);border-bottom:1px solid var(--line)}.contact-layout{display:grid;grid-template-columns:1.1fr .9fr;gap:1.1rem;align-items:start}.contact-block{border:1px solid var(--line-strong);background:var(--surface-soft);padding:1rem;box-shadow:inset 0 1px #ffffff05,var(--shadow-soft);position:relative}.contact-block:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,rgba(var(--accent-rgb),.75),rgba(var(--accent-rgb),0))}.contact-block p{margin:0;padding:.75rem 0;border-bottom:1px solid var(--line);display:grid;gap:.25rem}.contact-block p:last-of-type{border-bottom:0}.contact-block span{font-family:IBM Plex Mono,monospace;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.contact-block a,.contact-block strong{text-decoration:none;font-size:.94rem}.contact-block a:hover{color:var(--accent)}.contact-actions{margin-top:.9rem;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem}.contact-actions .button{width:100%}@media (max-width: 900px){.contact-layout{grid-template-columns:1fr}}@media (max-width: 520px){.contact-actions{grid-template-columns:1fr}}
