@font-face{font-family:Bebas Neue;font-style:normal;font-weight:400;font-display:swap;src:url(../media/2039e8342bda6056-s.0h2amv7e1wlhq.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Bebas Neue;font-style:normal;font-weight:400;font-display:swap;src:url(../media/fabcf92ba1ccea36-s.p.0lwj123ije5i..woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Bebas Neue Fallback;src:local(Arial);ascent-override:117.32%;descent-override:39.11%;line-gap-override:0.0%;size-adjust:76.72%}.bebas_neue_781729e7-module__f-BBIq__className{font-family:Bebas Neue,Bebas Neue Fallback;font-style:normal;font-weight:400}.bebas_neue_781729e7-module__f-BBIq__variable{--font-display:"Bebas Neue", "Bebas Neue Fallback"}
@font-face{font-family:DM Mono;font-style:normal;font-weight:300;font-display:swap;src:url(../media/ba8e772932784a28-s.0ikzyuq3itqgg.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Mono;font-style:normal;font-weight:300;font-display:swap;src:url(../media/7546fe8f902b88b8-s.p.0ezg~kdx4q-_h.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/b12e986493c137cf-s.0unhoe1q6hp6-.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/36363bfb06833f56-s.p.0-pny06~-x26a.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/b2fa3ef4ca165ab4-s.0cnogfwvi2_o-.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/a73419dd2ba2d841-s.p.0x-0vqtj_fzf1.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Mono Fallback;src:local(Arial);ascent-override:73.71%;descent-override:23.03%;line-gap-override:0.0%;size-adjust:134.59%}.dm_mono_ba20383b-module__FZT6EW__className{font-family:DM Mono,DM Mono Fallback;font-style:normal}.dm_mono_ba20383b-module__FZT6EW__variable{--font-mono:"DM Mono", "DM Mono Fallback"}
@font-face{font-family:Syne;font-style:normal;font-weight:400;font-display:swap;src:url(../media/ab624315db63c58d-s.1487dfs7-.~d~.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Syne;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e94b8ab81811a983-s.02fsf_1p_avhz.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Syne;font-style:normal;font-weight:400;font-display:swap;src:url(../media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Syne;font-style:normal;font-weight:500;font-display:swap;src:url(../media/ab624315db63c58d-s.1487dfs7-.~d~.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Syne;font-style:normal;font-weight:500;font-display:swap;src:url(../media/e94b8ab81811a983-s.02fsf_1p_avhz.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Syne;font-style:normal;font-weight:500;font-display:swap;src:url(../media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Syne;font-style:normal;font-weight:600;font-display:swap;src:url(../media/ab624315db63c58d-s.1487dfs7-.~d~.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Syne;font-style:normal;font-weight:600;font-display:swap;src:url(../media/e94b8ab81811a983-s.02fsf_1p_avhz.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Syne;font-style:normal;font-weight:600;font-display:swap;src:url(../media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Syne;font-style:normal;font-weight:700;font-display:swap;src:url(../media/ab624315db63c58d-s.1487dfs7-.~d~.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Syne;font-style:normal;font-weight:700;font-display:swap;src:url(../media/e94b8ab81811a983-s.02fsf_1p_avhz.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Syne;font-style:normal;font-weight:700;font-display:swap;src:url(../media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Syne;font-style:normal;font-weight:800;font-display:swap;src:url(../media/ab624315db63c58d-s.1487dfs7-.~d~.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Syne;font-style:normal;font-weight:800;font-display:swap;src:url(../media/e94b8ab81811a983-s.02fsf_1p_avhz.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Syne;font-style:normal;font-weight:800;font-display:swap;src:url(../media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Syne Fallback;src:local(Arial);ascent-override:93.93%;descent-override:27.93%;line-gap-override:0.0%;size-adjust:98.47%}.syne_84064d8b-module__vXlvGW__className{font-family:Syne,Syne Fallback;font-style:normal}.syne_84064d8b-module__vXlvGW__variable{--font-body:"Syne", "Syne Fallback"}
:root{--ink:#0a0a0a;--paper:#f2efe8;--paper2:#e8e4db;--electric:#ff4d00;--electric2:#00e5c0;--ghost:#0a0a0a0f;--border:#0a0a0a26;--nav-h:80px;--mono:var(--font-mono), monospace;--display:var(--font-display), sans-serif;--body:var(--font-body), sans-serif}*,:before,:after{box-sizing:border-box;margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-weight:400;font-size:inherit}html{scroll-behavior:auto}body{background:var(--paper);color:var(--ink);font-family:var(--body);cursor:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;line-height:1.6;overflow-x:hidden}.page-shell{background:var(--paper);color:var(--ink);position:relative;overflow-x:visible}.page-shell:before{content:"";pointer-events:none;z-index:0;opacity:.35;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E");position:fixed;inset:0}.cursor,.cursor-ring{pointer-events:none;z-index:9999;opacity:0;will-change:left, top, width, height, opacity;position:fixed;top:0;left:0}.cursor{background:var(--electric);border-radius:50%;width:12px;height:12px;transition:width .18s,height .18s;transform:translate(-50%,-50%)}.cursor-ring{border:1.5px solid var(--electric);border-radius:50%;width:40px;height:40px;transition:width .22s,height .22s,border-color .2s;transform:translate(-50%,-50%)}.nav{z-index:100;min-height:var(--nav-h);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-bottom:1px solid var(--border);background:#f2efe8eb;justify-content:space-between;align-items:center;gap:1.5rem;padding:.95rem 2rem;display:flex;position:sticky;top:0}.nav-logo{color:var(--ink);flex-shrink:0;align-items:center;gap:.85rem;text-decoration:none;display:flex}.nav-logo img{object-fit:contain;width:32px;height:32px;display:block}.nav-logo span{font-family:var(--display);letter-spacing:.06em;color:var(--ink);font-size:1.35rem;line-height:1}.nav-logo-accent{color:var(--electric)}.nav-links{gap:2.25rem;list-style:none;display:flex}.nav-links a,.nav-cta,.hero-socials a,.contact-link,.cert-item,.proj-card{-webkit-tap-highlight-color:transparent}.nav-links a{font-family:var(--mono);text-transform:uppercase;letter-spacing:.12em;color:var(--ink);opacity:.55;font-size:.75rem;text-decoration:none;transition:opacity .2s,color .2s}.nav-links a:hover,.nav-links a.active{color:var(--electric);opacity:1}.nav-cta{font-family:var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--paper);background:var(--ink);border:1px solid var(--ink);align-items:center;gap:.45rem;padding:.72rem 1.25rem;font-size:.7rem;text-decoration:none;transition:background .2s,color .2s,border-color .2s;display:inline-flex}.nav-cta:hover{background:var(--electric);border-color:var(--electric)}.hero{height:calc(100vh - var(--nav-h));min-height:calc(100vh - var(--nav-h));z-index:1;grid-template-columns:40% 60%;display:grid;position:relative;overflow:hidden}.hero-left{z-index:2;flex-direction:column;justify-content:center;padding:2rem 1.75rem 1.75rem 3rem;display:flex;position:relative}.hero-tag,.section-label,.exp-period,.exp-loc,.skill-cat-title,.contact-link-label,.cert-date,.edu-degree,.nav-links a,.hero-socials a,.btn-primary,.btn-ghost,.proj-num,.proj-tech-item,.about-detail-key,.about-status{font-family:var(--mono)}.hero-tag{letter-spacing:.2em;text-transform:uppercase;color:var(--electric);align-items:center;gap:.75rem;margin-bottom:1.2rem;font-size:.65rem;display:flex}.hero-tag:before{content:"";background:var(--electric);flex-shrink:0;width:1.5rem;height:1px;display:block}.hero-name{font-family:var(--display);letter-spacing:.01em;color:var(--ink);margin-bottom:.35rem;font-size:clamp(3.25rem,7.5vw,10rem);line-height:.88}.hero-name .accent,.hl,.section-title .accent,.accent{color:var(--electric)}.hero-role{font-family:var(--display);letter-spacing:.1em;color:var(--ink);opacity:.15;margin-bottom:1.6rem;font-size:clamp(1.25rem,2.5vw,3.2rem);line-height:1}.hero-desc{max-width:380px;margin-bottom:1.8rem;font-size:.95rem;line-height:1.75}.hero-actions{flex-wrap:wrap;align-items:center;gap:1rem;margin-bottom:2rem;display:flex}.btn-primary,.btn-ghost{text-transform:uppercase;letter-spacing:.12em;align-items:center;gap:.45rem;padding:.85rem 2rem;font-size:.68rem;text-decoration:none;transition:background .2s,border-color .2s,color .2s;display:inline-flex}.btn-primary{color:var(--paper);background:var(--ink);border:1.5px solid var(--ink)}.btn-primary:hover{background:var(--electric);border-color:var(--electric)}.btn-ghost{color:var(--ink);border:1.5px solid var(--border)}.btn-ghost:hover{border-color:var(--ink);background:var(--ghost)}.hero-socials{flex-wrap:wrap;align-items:center;gap:1.5rem;display:flex}.hero-socials a{letter-spacing:.12em;text-transform:uppercase;color:var(--ink);opacity:.35;align-items:center;gap:.35rem;font-size:.6rem;text-decoration:none;transition:opacity .2s,color .2s;display:inline-flex}.hero-socials a:hover{color:var(--electric);opacity:1}.hero-right{position:relative;overflow:hidden}section{z-index:1;scroll-margin-top:var(--nav-h);position:relative}.section-label{letter-spacing:.2em;text-transform:uppercase;color:var(--electric);align-items:center;gap:.8rem;margin-bottom:1rem;font-size:.65rem;display:flex}.section-label:after{content:"";background:var(--border);flex:1;max-width:60px;height:1px}.section-title{font-family:var(--display);letter-spacing:.02em;margin-bottom:4rem;font-size:clamp(3.5rem,7vw,7rem);line-height:.9}.about{border-top:1px solid var(--border);grid-template-columns:minmax(280px,1fr) minmax(0,1.4fr);display:grid}.about-left{border-right:1px solid var(--border);top:var(--nav-h);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#f2efe8e0;align-self:start;height:fit-content;padding:6rem 4rem 6rem 3rem;position:sticky}.about-right{padding:6rem 3rem 6rem 4rem}.about-text{margin-bottom:2rem;font-size:1.2rem;line-height:1.8}.about-highlight{font-family:var(--display);color:var(--ink);margin-bottom:3rem;font-size:2.2rem;line-height:1.1}.about-details{border-top:1px solid var(--border);flex-direction:column;gap:1rem;padding-top:2rem;display:flex}.about-detail-row{border-bottom:1px solid var(--ghost);justify-content:space-between;align-items:center;gap:1.5rem;padding:.8rem 0;display:flex}.about-detail-key{letter-spacing:.15em;text-transform:uppercase;opacity:.4;font-size:.65rem}.about-detail-val{text-align:right;font-size:.9rem;font-weight:500}.about-status{color:var(--electric)}.about-email{font-size:.8rem}.experience,.projects,.skills,.education,.contact{border-top:1px solid var(--border);padding:6rem 3rem}.exp-list{flex-direction:column;display:flex}.exp-item{border-bottom:1px solid var(--border);grid-template-columns:200px 1fr;gap:3rem;padding:3rem 0;transition:background .2s,padding-left .2s;display:grid}.exp-item:hover{background:var(--ghost);padding-left:1rem;padding-right:1rem}.exp-item:hover .exp-company{color:var(--electric)}.exp-meta{padding-top:.3rem}.exp-period{letter-spacing:.1em;color:var(--electric);margin-bottom:.5rem;font-size:.7rem}.exp-loc{letter-spacing:.08em;color:var(--ink);opacity:.35;font-size:.65rem}.exp-company{font-family:var(--display);letter-spacing:.04em;color:var(--ink);margin-bottom:.3rem;font-size:2.2rem;line-height:1;transition:color .2s}.exp-title{opacity:.5;margin-bottom:1.5rem;font-size:.9rem;font-weight:400}.exp-desc{opacity:.65;max-width:600px;margin-bottom:1.5rem;font-size:.95rem;line-height:1.7}.exp-tags,.proj-tech{flex-wrap:wrap;gap:.5rem;display:flex}.exp-tag,.proj-tech-item{letter-spacing:.1em;text-transform:uppercase}.exp-tag{color:var(--ink);border:1px solid var(--border);opacity:.6;padding:.3rem .8rem;font-size:.6rem;transition:opacity .2s,border-color .2s,color .2s}.exp-tag:hover{opacity:1;border-color:var(--electric);color:var(--electric)}.projects{background:var(--ink)}.projects .section-label{color:var(--electric)}.projects .section-label:after{background:#ffffff26}.projects .section-title{color:var(--paper)}.proj-grid{background:#ffffff0f;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;display:grid}.proj-card{background:#0f0f0f;min-height:280px;padding:2.5rem;text-decoration:none;transition:background .3s;display:block;position:relative;overflow:hidden}.proj-card:before{content:"";background:var(--electric);transform-origin:bottom;width:2px;transition:transform .3s;position:absolute;top:0;bottom:0;left:0;transform:scaleY(0)}.proj-card:hover{background:#181818}.proj-card:hover:before{transform:scaleY(1)}.proj-num{letter-spacing:.15em;color:var(--electric);opacity:.6;margin-bottom:2rem;font-size:.65rem}.proj-name{font-family:var(--display);letter-spacing:.04em;color:var(--paper);margin-bottom:1rem;font-size:2rem;line-height:1}.proj-desc{color:#f2efe873;margin-bottom:2rem;font-size:.85rem;line-height:1.7}.proj-tech-item{color:#f2efe866;border:1px solid #ffffff1a;padding:.2rem .6rem;font-size:.58rem}.proj-arrow{color:#ffffff1a;transition:color .2s,transform .2s;position:absolute;top:2.5rem;right:2.5rem}.proj-card:hover .proj-arrow{color:var(--electric);transform:translate(3px,-3px)}.proj-featured{background:#111;grid-column:span 2}.proj-featured .proj-name{font-size:3rem}.skills{overflow:hidden}.skills-marquee-wrap{margin:0 -3rem;position:relative;overflow:hidden}.skills-marquee-wrap:before,.skills-marquee-wrap:after{content:"";z-index:2;pointer-events:none;width:6rem;position:absolute;top:0;bottom:0}.skills-marquee-wrap:before{background:linear-gradient(to right, var(--paper), transparent);left:0}.skills-marquee-wrap:after{background:linear-gradient(to left, var(--paper), transparent);right:0}.skills-track{will-change:transform;gap:0;width:max-content;animation:26s linear infinite marquee;display:flex}@keyframes marquee{to{transform:translate(-50%)}}.skills-track:hover{animation-play-state:paused}.skill-pill{font-family:var(--display);letter-spacing:.06em;color:var(--ink);border-right:1px solid var(--border);white-space:nowrap;opacity:.25;flex:none;align-items:center;gap:.55rem;padding:1rem 1.75rem;font-size:1.25rem;transition:opacity .2s,color .2s;display:inline-flex}.skill-pill svg{opacity:.7;flex-shrink:0;transition:opacity .2s,color .2s}.skill-pill:hover{color:var(--electric);opacity:1}.skills-categories{grid-template-columns:repeat(2,1fr);gap:3rem 5rem;margin-top:4.5rem;display:grid}.skills-cat-header{font-family:var(--mono);text-transform:uppercase;letter-spacing:.18em;color:var(--electric);align-items:center;gap:.8rem;margin-bottom:1.25rem;font-size:.62rem;display:flex}.skills-cat-header:after{content:"";background:var(--border);flex:1;height:1px}.skills-tag-list{flex-wrap:wrap;gap:.5rem;display:flex}.skill-tag{border:1px solid var(--border);font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink);cursor:default;-webkit-user-select:none;user-select:none;align-items:center;gap:.45rem;padding:.5rem .9rem;font-size:.62rem;transition:border-color .2s,color .2s;display:inline-flex}.skill-tag:hover{border-color:var(--electric);color:var(--electric)}.skill-tag svg{opacity:.55;flex-shrink:0;transition:opacity .2s}.skill-tag:hover svg{opacity:1}.education{grid-template-columns:1fr 1fr;gap:6rem;display:grid}.edu-item{border:1px solid var(--border);margin-bottom:2rem;padding:2.5rem;transition:border-color .2s;position:relative}.edu-item:hover{border-color:var(--electric)}.edu-item:hover .edu-school{color:var(--electric)}.edu-year{font-family:var(--display);color:var(--ink);opacity:.05;font-size:4rem;line-height:1;position:absolute;top:1.5rem;right:1.5rem}.edu-degree{letter-spacing:.15em;text-transform:uppercase;color:var(--electric);margin-bottom:.8rem;font-size:.65rem}.edu-school{font-family:var(--display);letter-spacing:.03em;margin-bottom:.5rem;font-size:2rem;line-height:1.1;transition:color .2s}.edu-period{font-family:var(--mono);letter-spacing:.1em;opacity:.35;font-size:.7rem}.cert-list{flex-direction:column;gap:.8rem;margin-top:1.5rem;display:flex}.cert-item{background:var(--ghost);color:var(--ink);align-items:center;gap:1rem;padding:.8rem;text-decoration:none;transition:background .2s;display:flex}.cert-item:hover{background:var(--paper2)}.cert-item--static{cursor:default}.cert-item--static:hover{background:var(--ghost)}.cert-dot{background:var(--electric);border-radius:50%;flex-shrink:0;width:6px;height:6px}.cert-name{font-size:.85rem;font-weight:500}.cert-date{opacity:.4;letter-spacing:.1em;margin-top:.2rem;font-size:.6rem}.cert-issuer{letter-spacing:.1em;opacity:.4;margin-left:auto;font-size:.6rem}.contact{background:var(--paper2);position:relative;overflow:hidden}.contact-bg-text{font-family:var(--display);color:var(--ink);opacity:.03;white-space:nowrap;-webkit-user-select:none;user-select:none;pointer-events:none;font-size:18rem;line-height:1;position:absolute;bottom:-2rem;right:-1rem}.contact-inner{z-index:2;grid-template-columns:1fr 1fr 0fr;gap:4rem;transition:grid-template-columns .4s;display:grid;position:relative}.contact-inner--open{grid-template-columns:1fr 1fr 1fr}.contact-sub{max-width:380px;margin-bottom:3rem;font-size:1.05rem;line-height:1.75}.contact-socials{margin-top:0}.contact-links{flex-direction:column;font-style:normal;display:flex}.contact-link{border-bottom:1px solid var(--border);color:var(--ink);justify-content:space-between;align-items:center;gap:1rem;padding:1.3rem 0;text-decoration:none;transition:padding-left .2s,color .2s;display:flex}.contact-link:hover{color:var(--electric);padding-left:1rem}.contact-link>div{flex-direction:column;display:flex}.contact-link-label{text-transform:uppercase;letter-spacing:.15em;opacity:.35;align-items:center;gap:.35rem;margin-bottom:.2rem;font-size:.65rem;display:flex}.contact-link-val{font-size:1rem;font-weight:600;display:block}.contact-link-arrow{opacity:.2;font-size:1rem;transition:opacity .2s,transform .2s,color .2s}.contact-link:hover .contact-link-arrow{opacity:1;color:var(--electric);transform:translate(4px,-4px)}.cf-trigger{appearance:none;font:inherit;color:inherit;cursor:pointer;text-align:left;-webkit-tap-highlight-color:transparent;background:0 0;border-top:none;border-left:none;border-right:none;width:100%}.cf-trigger--active .contact-link-label,.cf-trigger--active .contact-link-val{color:var(--electric)}.cf-wrap{overflow:hidden}.cf{grid-template-rows:0fr;transition:grid-template-rows .4s;display:grid}.cf--open{grid-template-rows:1fr}.cf-inner{flex-direction:column;min-height:0;display:flex;overflow:hidden}.cf-header{border-bottom:1px solid var(--border);margin-bottom:1rem;padding-bottom:1rem}.cf-label{font-family:var(--mono);letter-spacing:.2em;text-transform:uppercase;color:var(--electric);align-items:center;gap:.6rem;margin-bottom:.75rem;font-size:.6rem;display:flex}.cf-label:before{content:"";background:var(--electric);flex-shrink:0;width:1.25rem;height:1px;display:block}.cf-heading{font-family:var(--display);letter-spacing:.03em;color:var(--ink);font-size:2.4rem;line-height:1}.cf-accent{color:var(--electric)}.cf-row{border-bottom:1px solid var(--border);flex-direction:column;padding:1rem 0;transition:padding-left .2s,border-color .2s;display:flex}.cf-row:focus-within{padding-left:.5rem}.cf-field-label{font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--ink);opacity:.45;margin-bottom:.3rem;font-size:.58rem;transition:color .2s,opacity .2s}.cf-input{font-family:var(--body);color:var(--ink);resize:none;background:0 0;border:none;outline:none;width:100%;font-size:.9rem;font-weight:400;line-height:1.5}.cf-input::placeholder{color:var(--ink);opacity:.35}.cf-textarea{resize:none}.cf-footer{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding-top:1.5rem;display:flex}.cf-btn{font-family:var(--mono);text-transform:uppercase;letter-spacing:.12em;color:var(--paper);background:var(--ink);border:1.5px solid var(--ink);cursor:pointer;-webkit-tap-highlight-color:transparent;align-items:center;gap:.4rem;margin-left:auto;padding:.72rem 1.4rem;font-size:.68rem;transition:background .2s,border-color .2s,color .2s;display:inline-flex}.cf-btn:hover:not(:disabled){background:var(--electric);border-color:var(--electric);color:var(--paper)}.cf-btn:disabled{opacity:.35;cursor:not-allowed}.cf-row--error{border-bottom-color:var(--electric)}.cf-row--error .cf-field-label{color:var(--electric);opacity:1}.cf-error{font-family:var(--mono);letter-spacing:.08em;color:var(--electric);margin-top:.35rem;font-size:.58rem}.cf-toast{font-family:var(--mono);letter-spacing:.08em;border-left:2px solid;align-items:center;gap:.65rem;margin-bottom:.5rem;padding:.85rem 1rem;font-size:.72rem;display:flex}.cf-toast--ok{border-color:var(--electric2);color:var(--electric2);background:#00e5c014}.cf-toast--err{border-color:var(--electric);color:var(--electric);background:#ff4d0014}.cf-toast-icon{flex-shrink:0;font-size:.9rem}.footer{border-top:1px solid var(--border);z-index:1;grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem;padding:2rem 3rem;display:grid;position:relative}.footer-copy,.footer-time,.footer-link{letter-spacing:.1em;opacity:1;font-size:.65rem;font-family:var(--mono)}.footer-time{text-align:center;white-space:nowrap;justify-self:center}.footer-link{color:var(--ink);justify-self:end;text-decoration:none;transition:color .2s}.footer-link:hover{color:var(--electric)}.fade-up{opacity:0;transition:opacity .7s,transform .7s;transform:translateY(30px)}.fade-up.visible{opacity:1;transform:translateY(0)}@media (max-width:1100px){.proj-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:900px){.nav{padding:1rem 1.25rem}.nav-links{display:none}.hero{height:calc(100dvh - var(--nav-h));min-height:calc(100dvh - var(--nav-h));flex-direction:column;display:flex}.hero-left{border-bottom:none;border-right:none;flex:1;order:2;padding:2.5rem 1.5rem;position:static}.hero-right{flex:1;order:1;height:auto;min-height:0}.about,.education{grid-template-columns:1fr}.contact-inner{grid-template-columns:1fr;gap:2.5rem}.about-left{border-right:none;border-bottom:1px solid var(--border);padding:3rem 1.25rem;position:static}.about-right{padding:3rem 1.25rem}.experience,.projects,.skills,.education,.contact{padding:4rem 1.25rem}.section-title{margin-bottom:2.5rem;font-size:3rem}.exp-item{grid-template-columns:1fr;gap:1rem}.proj-grid{grid-template-columns:1fr}.proj-featured{grid-column:span 1}.proj-featured .proj-name{font-size:2.4rem}.skills-categories{grid-template-columns:1fr;gap:2.5rem}.skills-marquee-wrap{margin:0 -1.25rem}.skill-pill{padding:.85rem 1.25rem;font-size:1rem}.footer{flex-direction:column;gap:.45rem;padding:1.5rem 1.25rem;display:flex}.footer-time{white-space:normal;justify-self:start}.footer-link{justify-self:start}}@media (max-width:480px){.hero-left{padding:1.75rem 1.25rem}.hero-name{font-size:clamp(2.6rem,14vw,4rem)}.hero-role{margin-bottom:1.25rem;font-size:clamp(1rem,5vw,1.6rem)}.hero-desc{margin-bottom:1.25rem;font-size:.875rem}.hero-actions{gap:.65rem;margin-bottom:1.5rem}.btn-primary,.btn-ghost{padding:.75rem 1.4rem}}@media (pointer:coarse){.cursor,.cursor-ring{display:none}body{cursor:auto}}
