:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--dot:#aab9ff1a;--sglow:#6ea8ff14;--sglow-v:#9b8cff1f;--fade:linear-gradient(var(--bg-alt),var(--bg-alt));--bg:#0b0d12;--bg-alt:#10131a;--card:#141824;--line:#ffffff17;--text:#f0f2f7;--muted:#b6bfcb;--accent:#6ea8ff;--accent-hover:#8bbaff;--accent-ink:#0b0d12;--halo:#6ea8ff4d;--halo-line:#6ea8ff6b;--violet-blob:#9b8cff1c;--violet:#9b8cff;--violet-text:#a99cff;--violet-glow:#9b8cff3d;--violet-tint:#9b8cff12;--chip:#1a2030;--chip-alt:#1a2030;--grid:#ffffff09;--glow:#6ea8ff24;--nav-bg:#0b0d12e0;--line-strong:#ffffff47;--serif:"Source Serif 4",Georgia,"Times New Roman",serif;--sans:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--dot:#503caa1a;--sglow:#2457d60f;--sglow-v:#6d4ad617;--bg:#f4f2fb;--bg-alt:#ece8f8;--card:#fbfaff;--line:#4c38a029;--text:#14112b;--muted:#4a4666;--accent:#2457d6;--accent-hover:#1a45b3;--accent-ink:#fff;--chip:#e3def4;--chip-alt:#dad4ef;--grid:#4c38a00d;--glow:#2457d61a;--halo:#2457d657;--halo-line:#2457d673;--violet-blob:#6d4ad614;--violet:#6d4ad6;--violet-text:#5a38c4;--violet-glow:#6d4ad633;--violet-tint:#6d4ad612;--nav-bg:#f4f2fbe0;--line-strong:#4c38a066}*{box-sizing:border-box;margin:0;padding:0}::selection{background:var(--violet-glow)}html{scroll-behavior:smooth;background-color:var(--bg);scroll-padding-top:72px}::-webkit-scrollbar{width:14px;height:14px}::-webkit-scrollbar-track{border-left:1px solid var(--line);background:#8080aa1a}::-webkit-scrollbar-thumb{background:linear-gradient(180deg,var(--accent),var(--violet));background-clip:padding-box;border:3px solid #0000;border-radius:999px;min-height:48px}::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,var(--violet),var(--accent));background-clip:padding-box;border-width:2px}::-webkit-scrollbar-corner{background:0 0}@supports not selector(::-webkit-scrollbar){html{scrollbar-color:var(--violet) #8080aa24;scrollbar-width:auto}}body{font-family:var(--sans);color:var(--text);background-color:var(--bg);background-image:linear-gradient(var(--grid) 1px,transparent 1px), linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:48px 48px;font-size:16px;line-height:1.65}:root:not([data-theme=light]) body{letter-spacing:.005em;font-weight:440}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}.wrap{z-index:1;max-width:1080px;margin:0 auto;padding:0 24px;position:relative}nav{z-index:10;background:var(--nav-bg);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);position:sticky;top:0}nav .wrap{justify-content:space-between;align-items:center;height:64px;display:flex;position:relative}.navleft{align-items:center;gap:16px;display:flex}.brand{font-family:var(--serif);letter-spacing:.005em;color:var(--accent);background:linear-gradient(100deg,var(--accent) 0%,var(--violet-text) 50%,var(--accent) 100%);-webkit-text-fill-color:transparent;background-position:0 0;background-size:200% 100%;-webkit-background-clip:text;background-clip:text;font-size:clamp(1.15rem,1.9vw,1.45rem);font-weight:700;transition:background-position .5s}.brand:hover{background-position:100% 0}nav ul{color:var(--muted);gap:22px;font-size:.92rem;list-style:none;display:flex}nav ul a{padding:6px 0;transition:color .15s;display:inline-block;position:relative}nav ul a:after{content:"";background:linear-gradient(90deg,var(--accent),var(--violet-text));opacity:0;border-radius:2px;height:2px;transition:opacity .2s,transform .28s;position:absolute;bottom:-1px;left:0;right:0;transform:scaleX(.35)}nav ul a:hover{color:var(--text)}nav ul a:hover:after{opacity:.5;transform:scaleX(1)}nav ul a.active{color:var(--text)}nav ul a.active:after{opacity:1;box-shadow:0 0 10px var(--violet-glow),0 0 2px var(--violet-glow);transform:scaleX(1)}.logo{background:linear-gradient(var(--card),var(--card)) padding-box,linear-gradient(135deg,var(--accent),var(--violet-text) 50%,var(--accent)) border-box;width:44px;height:44px;box-shadow:0 0 14px var(--halo),0 0 38px 4px var(--violet-glow);color:var(--muted);letter-spacing:.02em;background-origin:border-box;border:1.5px solid #0000;border-radius:50%;place-items:center;font-size:.62rem;font-weight:500;display:grid;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.logo img{object-fit:cover;width:100%;height:100%;display:block}.theme{background:var(--violet-tint);width:36px;height:36px;color:var(--violet-text);border:1px solid var(--violet-glow);cursor:pointer;border-radius:8px;place-items:center;transition:border-color .2s,box-shadow .25s,background .2s;display:grid}.theme:hover{border-color:var(--halo-line);box-shadow:0 0 16px var(--glow),0 0 26px var(--violet-glow)}.theme:focus-visible{border-color:var(--halo-line);box-shadow:0 0 16px var(--glow),0 0 26px var(--violet-glow);outline:none}.theme svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px}.fx{width:36px;height:36px;color:var(--muted);border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:8px;place-items:center;padding:0;transition:color .2s,background .2s,border-color .2s,box-shadow .25s;display:grid}.fx svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px;transition:filter .2s}.fx svg circle{fill:none;transition:fill .2s}.fx:hover,.fx:focus-visible{color:var(--text);border-color:var(--halo-line);box-shadow:0 0 16px var(--glow),0 0 26px var(--violet-glow);outline:none}.fx[aria-pressed=true]{color:var(--violet-text);background:var(--violet-tint);border-color:var(--violet-glow);box-shadow:0 0 12px var(--violet-glow)}.fx[aria-pressed=true] svg{filter:drop-shadow(0 0 3px var(--halo))}.fx[aria-pressed=true] svg circle{fill:currentColor}.fx[aria-pressed=true]:hover,.fx[aria-pressed=true]:focus-visible{color:var(--violet-text);border-color:var(--halo-line);box-shadow:0 0 16px var(--glow),0 0 26px var(--violet-glow)}.fxli,.fx .fx-label,.fx .fx-state,.theme .moon,:root[data-theme=light] .theme .sun{display:none}:root[data-theme=light] .theme .moon{display:block}.hero-grid{grid-template-columns:minmax(0,1fr) 320px;align-items:center;gap:64px;display:grid}.hero.photo-left .hero-photo{order:-1}.hero.photo-left .hero-grid{grid-template-columns:320px minmax(0,1fr)}.hero-photo{text-align:center;position:relative}.hero-photo:before{content:"";background:radial-gradient(closest-side at 35% 50%,var(--halo),transparent 72%),radial-gradient(closest-side at 70% 62%,var(--violet-glow),transparent 70%);filter:blur(28px);z-index:0;pointer-events:none;height:82%;position:absolute;top:-8%;left:-18%;right:-18%}.hero-photo>*{z-index:1;position:relative}.caption{margin-top:18px}.caption strong{font-family:var(--serif);font-size:1.15rem;font-weight:600;display:block}.loc{flex-wrap:wrap;justify-content:center;gap:8px;margin-top:14px;display:flex}.loc .tag{color:var(--text);background:var(--violet-tint);border:1px solid var(--violet-glow);border-color:#0000;border-radius:999px;align-items:center;gap:7px;padding:7px 12px;font-size:.8rem;font-weight:500;line-height:1;display:inline-flex;position:relative}.loc .tag:before{content:"";border-radius:inherit;background:linear-gradient(135deg,var(--accent),var(--violet-text) 55%,var(--accent));opacity:.55;-webkit-mask-composite:xor;pointer-events:none;padding:1px;position:absolute;inset:-1px;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor,source-over;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}.loc .tag svg{width:13px;height:13px;color:var(--violet-text);fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;flex:none}.loc .tag i{background:linear-gradient(135deg,var(--accent),var(--violet));width:7px;height:7px;box-shadow:0 0 8px var(--halo),0 0 12px var(--violet-glow);border-radius:50%;flex:none}.loc-mobile{display:none}.portrait{aspect-ratio:4/5;background:linear-gradient(var(--card),var(--card)) padding-box,linear-gradient(135deg,var(--accent),var(--violet-text) 50%,var(--accent)) border-box;box-shadow:0 0 36px var(--halo),0 0 90px 8px var(--violet-glow);background-origin:border-box;border:1.5px solid #0000;border-radius:14px;place-items:end center;display:grid;overflow:hidden}.portrait img{object-fit:cover;width:100%;height:100%;display:block}.portrait{transition:transform .35s,box-shadow .35s}.portrait:hover{box-shadow:0 16px 44px -8px var(--halo),0 0 96px 10px var(--violet-glow);transform:translateY(-6px)}.portrait svg{width:70%;fill:var(--muted);opacity:.28}.hero{background:radial-gradient(60% 70% at 20% 0%,var(--glow),transparent 70%),radial-gradient(45% 60% at 88% 25%,var(--violet-glow),transparent 72%);padding:clamp(32px,6vh,60px) 0 clamp(36px,6vh,60px);position:relative;overflow-x:clip}.hero h1{font-family:var(--serif);letter-spacing:-.01em;max-width:14em;font-size:clamp(2.4rem,5.2vw,3.9rem);font-weight:600;line-height:1.1}.hero p{max-width:36em;color:var(--muted);margin-top:22px;font-size:1.1rem}.actions{flex-wrap:wrap;gap:12px;margin-top:36px;display:flex}.btn{border:1px solid var(--line);border-radius:8px;padding:11px 20px;font-size:.95rem;font-weight:500;transition:background .2s,border-color .2s,box-shadow .25s;display:inline-block}.btn:hover{border-color:var(--halo-line);box-shadow:0 0 16px var(--glow),0 0 26px var(--violet-glow)}.btn.primary{background:linear-gradient(120deg,var(--accent),var(--violet));color:var(--accent-ink);background-origin:border-box;border-color:#0000}.btn.primary:hover{background:linear-gradient(120deg,var(--accent-hover),var(--violet));box-shadow:0 0 22px var(--halo),0 0 30px var(--violet-glow);background-origin:border-box;border-color:#0000}.btn.social{align-items:center;gap:10px;padding:8px 14px 8px 8px;display:inline-flex}.btn.social .ico{box-sizing:border-box;width:30px;height:30px;color:var(--violet-text);background:var(--violet-tint);border:1px solid var(--violet-glow);border-radius:8px;flex:none;padding:7px;transition:transform .25s,background .25s,color .25s,border-color .25s}.btn.social{background:linear-gradient(var(--card),var(--card)) padding-box,linear-gradient(135deg,var(--accent),var(--violet-text) 50%,var(--accent)) border-box;background-origin:border-box;border:1.5px solid #0000}.btn.social:hover,.btn.social:focus-visible{box-shadow:0 0 14px var(--violet-glow),0 0 32px var(--violet-glow);border-color:#0000}.btn.social:hover{transform:translateY(-2px)}.btn.social:hover .ico{color:#fff;background:linear-gradient(135deg,var(--accent),var(--violet));border-color:#0000}.btn{transition:background .2s,border-color .2s,box-shadow .25s,transform .25s}.rotor{height:1.04em;display:block;position:relative;overflow:hidden}.rotor .w{opacity:0;color:var(--violet-text);transition:opacity .55s,transform .55s;position:absolute;top:0;left:0;transform:translateY(55%)}.rotor .w.on{opacity:1;transform:none}.rotor .w.out{opacity:0;transform:translateY(-55%)}.role{display:block}.hero p.second{margin-top:14px}section{padding:84px 0;position:relative}section.alt{background:linear-gradient(120deg,var(--violet-tint),transparent 55%),var(--fade);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}section.alt:before{content:"";z-index:0;pointer-events:none;background-image:radial-gradient(circle,var(--dot) 1px,transparent 1.6px);background-size:24px 24px;background-position:-11.5px calc(-11.5px - var(--dot-y,0px));position:absolute;inset:0}section.alt{isolation:isolate;box-shadow:inset 0 70px 70px -60px var(--sglow),inset 0 -70px 70px -60px var(--sglow-v)}section.alt:after{content:"";z-index:-1;pointer-events:none;background:radial-gradient(55% 75% at 30% 50%,var(--sglow),transparent 72%),radial-gradient(45% 65% at 78% 55%,var(--sglow-v),transparent 72%);position:absolute;inset:0}#ai-ml{background:radial-gradient(560px 460px at 96% 88%,var(--violet-blob),transparent 70%),linear-gradient(120deg,var(--violet-tint),transparent 55%),var(--fade)}#swe{background:radial-gradient(600px 480px at 4% 14%,var(--violet-blob),transparent 70%)}#experience{background:radial-gradient(560px 460px at 94% 62%,var(--violet-blob),transparent 70%),linear-gradient(120deg,var(--violet-tint),transparent 55%),var(--fade)}#education{background:radial-gradient(520px 420px at 6% 78%,var(--violet-blob),transparent 70%)}#skills{background:radial-gradient(560px 440px at 92% 20%,var(--violet-blob),transparent 70%),linear-gradient(120deg,var(--violet-tint),transparent 55%),var(--fade)}#contact{background:radial-gradient(760px 420px at 50% 110%,var(--violet-blob),transparent 70%)}h2{font-family:var(--serif);letter-spacing:-.005em;font-size:2rem;font-weight:600}.lede{color:var(--muted);max-width:40em;margin-top:8px}h3{font-size:1.08rem;font-weight:600}.sub{color:var(--violet-text);margin:48px 0 18px;font-size:1.05rem;font-weight:600}.sub span{color:var(--muted);margin-left:8px;font-size:.95rem;font-weight:400}.split{grid-template-columns:240px minmax(0,1fr);gap:0 48px;display:grid}.split>h2{grid-area:1/1/span 30;align-self:start;position:sticky;top:96px}.split>:not(h2){grid-column:2}.split>.lede{margin:0 0 4px}.split>.sub:first-of-type{margin-top:28px}.projects+.sub,.project+.sub{border-top:1px solid var(--line);margin-top:0;padding-top:36px}.project{border-top:1px solid var(--line);padding:36px 0}.projects .project:first-child{border-top:0;padding-top:20px}.project h3{font-family:var(--serif);font-size:1.9rem;font-weight:500;line-height:1.2}.where{max-width:38.76rem;color:var(--text);opacity:.86;gap:12px;margin-top:10px;font-size:.93rem;font-weight:400;line-height:1.4;display:flex}.job .where{margin:0 0 14px}.where{text-wrap:balance}.where:before{content:"";background:var(--violet-text);border-radius:2px;flex:none;width:3px}.project p.desc{max-width:38em;color:var(--muted);margin-top:16px;font-size:1.02rem}.project p.desc strong{color:var(--text);font-weight:500}.chips{flex-wrap:wrap;gap:8px 6px;margin-top:20px;display:flex}.chips span{background:var(--chip);color:var(--text);border-radius:6px;padding:4px 10px;font-size:.85rem}section.alt .chips span{background:var(--chip-alt)}:root[data-theme=light] .chips span{border:1px solid #5a38c433}.links{flex-wrap:wrap;gap:22px;margin-top:22px;font-size:.95rem;font-weight:500;display:flex}.links a,.note a{color:var(--violet-text);background:linear-gradient(90deg,var(--accent),var(--violet)) 0 100%/100% 2px no-repeat;border-radius:4px;margin:-2px -3px -3px;padding:2px 3px 3px;transition:color .2s,background-color .2s}.links a:hover,.note a:hover{color:var(--text);background-color:#806ef029;background-color:color-mix(in srgb,var(--violet) 16%,transparent)}#ai-ml .lede,#swe .lede{font-family:var(--serif);color:var(--text);border-style:solid;border-width:0 0 0 3px;border-image:linear-gradient(to bottom,var(--accent),var(--violet)) 1;max-width:32em;margin-bottom:10px;padding-left:18px;font-size:1.32rem;font-weight:500;line-height:1.45}.note{max-width:38em;color:var(--muted);margin:2px 0 0;font-size:.92rem}.hero .resume-alt{margin-top:18px}.list{border-top:1px solid var(--line)}.row{border-bottom:1px solid var(--line);grid-template-columns:160px 1fr auto;align-items:start;gap:24px;padding:22px 0;display:grid}.row h3{font-size:1rem;font-weight:600}.row p{color:var(--muted);font-size:.97rem}.row .meta{flex-wrap:wrap;gap:6px;margin-top:12px;display:flex}.row .meta span{color:var(--violet-text);background:var(--violet-tint);border:1px solid var(--violet-glow);border-radius:6px;padding:6px 9px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.76rem;font-weight:500;line-height:1}.row .links{white-space:nowrap;gap:18px;margin:0;font-size:.92rem}.progress{z-index:60;pointer-events:none;height:3px;position:fixed;top:0;left:0;right:0}.progress i{transform-origin:0;background:linear-gradient(90deg,var(--accent),var(--violet-text));height:100%;box-shadow:0 0 10px var(--halo),0 0 18px var(--violet-glow);border-radius:0 2px 2px 0;display:block;transform:scaleX(0)}.job{padding:0 0 40px 34px;position:relative}.job:last-of-type{padding-bottom:0}.job:before{content:"";background:var(--violet);background:color-mix(in srgb,var(--accent) 45%,var(--violet));opacity:.45;width:2px;position:absolute;top:16px;bottom:-15px;left:5px}.job:last-of-type:before{bottom:0;-webkit-mask-image:linear-gradient(#000 calc(100% - 36px),#0000);mask-image:linear-gradient(#000 calc(100% - 36px),#0000)}.job:after{content:"";background:linear-gradient(135deg,var(--accent),var(--violet));width:12px;height:12px;box-shadow:0 0 10px var(--halo),0 0 18px var(--violet-glow);border-radius:50%;position:absolute;top:9px;left:0}.when-row{flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 14px;display:flex}.when{background:var(--violet-tint);border:1px solid var(--violet-glow);color:var(--text);border-radius:999px;align-items:center;gap:7px;padding:5px 12px;font-size:.84rem;font-weight:500;line-height:1.2;display:inline-flex}.grad{background:var(--violet-tint);border:1px solid var(--violet-glow);color:var(--violet-text);border-radius:999px;align-items:center;gap:6px;padding:5px 12px;font-size:.84rem;font-weight:600;line-height:1.2;display:inline-flex}.grad svg{fill:none;stroke:currentColor;stroke-width:2.4px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:13px;height:13px}.when svg{width:13px;height:13px;color:var(--violet-text);fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;flex:none}.job h3{margin-bottom:2px}.org{color:var(--violet-text);margin-bottom:10px;font-size:.95rem}.job ul{color:var(--muted);padding-left:18px;font-size:.95rem}.job li{margin-bottom:6px}.gpa{background:var(--violet-tint);border:1px solid var(--violet-glow);color:var(--text);border-radius:999px;align-items:baseline;gap:7px;padding:5px 12px;font-size:.84rem;font-weight:600;line-height:1.2;display:inline-flex}.gpa span{color:var(--violet-text);font-size:.78rem;font-weight:500}.job li strong{color:var(--text);font-weight:600}.job li::marker{color:var(--violet-text)}.course-chips{gap:8px;margin-top:16px}.course-chips em{color:var(--violet-text);flex-basis:100%;margin-bottom:0;font-size:.85rem;font-style:normal;font-weight:600}.courses{color:var(--muted);margin-top:12px;font-size:.92rem}.course h4{color:var(--text);font-size:.98rem;font-weight:600}.skills{gap:0;display:grid}.skill{border-top:1px solid var(--line);grid-template-columns:160px 1fr;gap:24px;padding:16px 0;display:grid}.skill:first-child{border-top:0;padding-top:4px}.skill dt{color:var(--violet-text);font-weight:600}.skill dd{color:var(--muted)}.skill-grid{--bento-gap:14px;gap:var(--bento-gap);grid-template-columns:repeat(6,minmax(0,1fr));grid-template-areas:"ai ai ai ai plat plat""lib lib lang lang tools tools""fw fw fw fw db db""cloud cloud cloud cloud cloud cloud";align-items:stretch;display:grid}.sk-ai{grid-area:ai}.sk-plat{grid-area:plat}.sk-lib{grid-area:lib}.sk-fw{grid-area:fw}.sk-lang{grid-area:lang}.sk-db{grid-area:db}.sk-cloud{grid-area:cloud}.sk-tools{grid-area:tools}.skill-card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:18px 20px 20px;position:relative;overflow:hidden}.skill-card:before{content:"";background:linear-gradient(90deg,var(--accent),var(--violet));opacity:.55;height:2px;position:absolute;top:0;left:0;right:0}.skill-card h3{color:var(--violet-text);margin-bottom:12px;font-size:.95rem;font-weight:600}.skill-card ul{flex-wrap:wrap;gap:7px;list-style:none;display:flex}.skill-card li{color:var(--text);background:var(--chip);border:1px solid var(--line);border-radius:6px;padding:3px 10px;font-size:.84rem;line-height:1.5}section.alt .skill-card li{background:var(--chip-alt)}:root[data-theme=light] .skill-card{-webkit-backdrop-filter:blur(10px)saturate(1.15);backdrop-filter:blur(10px)saturate(1.15);background:linear-gradient(155deg,#7c5ce621,#3c64e112 55%,#7c5ce61a);border-color:#5a3cbe3d;box-shadow:inset 0 1px #ffffff73,0 10px 28px -16px #462daa59}:root[data-theme=light] .skill-card li{background:#ffffffa8;border-color:#6d4ad642;box-shadow:0 1px #5a3cbe0f}.contact .statement{font-family:var(--serif);max-width:18em;font-size:1.7rem;font-weight:500;line-height:1.3}.contact .actions{margin-top:28px}footer .foot{justify-content:space-between;align-items:center;gap:16px;display:flex}.totop{color:var(--muted);border-bottom:1px solid #0000;transition:color .15s,border-color .15s}.totop:hover{color:var(--text);border-bottom-color:var(--violet-text)}footer{border-top:1px solid var(--line);color:var(--muted);padding:32px 0;font-size:.88rem}@media (width<=1127px){#skills .split{grid-template-columns:180px minmax(0,1fr);column-gap:32px}.skill-grid{max-width:744px}}@media (width<=1003px){#skills .split{display:block}#skills .split>h2{margin-bottom:20px;position:static}}@media (width>=761px) and (width<=791px){.skill-grid{width:744px;max-width:none;margin-left:calc(50% - 372px)}}@media (width<=760px){.skill-grid{grid-template-columns:1fr;grid-template-areas:none}.skill-grid .skill-card{grid-area:auto}}@media (width>=320px) and (width<=470px){.sk-ai li:first-child{order:0}.sk-ai li:nth-child(2){order:1}.sk-ai li:nth-child(3){order:2}.sk-ai li:nth-child(4){order:3}.sk-ai li:nth-child(5){order:5}.sk-ai li:nth-child(6){order:6}.sk-ai li:nth-child(7){order:4}.sk-ai li:nth-child(8){order:7}.sk-ai li:nth-child(9){order:8}.sk-plat li:first-child{order:0}.sk-plat li:nth-child(2){order:1}.sk-plat li:nth-child(3){order:2}.sk-plat li:nth-child(4){order:3}.sk-lib li:first-child{order:0}.sk-lib li:nth-child(2){order:2}.sk-lib li:nth-child(3){order:3}.sk-lib li:nth-child(4){order:4}.sk-lib li:nth-child(5){order:5}.sk-lib li:nth-child(6){order:1}.sk-lang li:first-child{order:0}.sk-lang li:nth-child(2){order:1}.sk-lang li:nth-child(3){order:3}.sk-lang li:nth-child(4){order:2}.sk-lang li:nth-child(5){order:4}.sk-fw li:first-child{order:0}.sk-fw li:nth-child(2){order:1}.sk-fw li:nth-child(3){order:3}.sk-fw li:nth-child(4){order:2}.sk-fw li:nth-child(5){order:4}.sk-fw li:nth-child(6){order:5}.sk-fw li:nth-child(7){order:7}.sk-fw li:nth-child(8){order:6}.sk-db li:first-child{order:0}.sk-db li:nth-child(2){order:1}.sk-db li:nth-child(3){order:2}.sk-db li:nth-child(4){order:3}.sk-db li:nth-child(5){order:4}.sk-cloud li:first-child{order:0}.sk-cloud li:nth-child(2){order:1}.sk-cloud li:nth-child(3){order:2}.sk-cloud li:nth-child(4){order:3}.sk-cloud li:nth-child(5){order:4}.sk-tools li:first-child{order:0}.sk-tools li:nth-child(2){order:2}.sk-tools li:nth-child(3){order:3}.sk-tools li:nth-child(4){order:1}}@media (width>=392px) and (width<=470px){.skill-card ul{max-width:302px}}@media (width>=471px) and (width<=560px){.sk-ai li:first-child{order:0}.sk-ai li:nth-child(2){order:1}.sk-ai li:nth-child(3){order:2}.sk-ai li:nth-child(4){order:4}.sk-ai li:nth-child(5){order:3}.sk-ai li:nth-child(6){order:5}.sk-ai li:nth-child(7){order:6}.sk-ai li:nth-child(8){order:7}.sk-ai li:nth-child(9){order:8}.sk-plat li:first-child{order:0}.sk-plat li:nth-child(2){order:1}.sk-plat li:nth-child(3){order:2}.sk-plat li:nth-child(4){order:3}.sk-lib li:first-child{order:0}.sk-lib li:nth-child(2){order:1}.sk-lib li:nth-child(3){order:2}.sk-lib li:nth-child(4){order:5}.sk-lib li:nth-child(5){order:3}.sk-lib li:nth-child(6){order:4}.sk-lang li:first-child{order:0}.sk-lang li:nth-child(2){order:1}.sk-lang li:nth-child(3){order:2}.sk-lang li:nth-child(4){order:3}.sk-lang li:nth-child(5){order:4}.sk-fw li:first-child{order:0}.sk-fw li:nth-child(2){order:1}.sk-fw li:nth-child(3){order:2}.sk-fw li:nth-child(4){order:3}.sk-fw li:nth-child(5){order:4}.sk-fw li:nth-child(6){order:5}.sk-fw li:nth-child(7){order:6}.sk-fw li:nth-child(8){order:7}.sk-db li:first-child{order:0}.sk-db li:nth-child(2){order:1}.sk-db li:nth-child(3){order:2}.sk-db li:nth-child(4){order:3}.sk-db li:nth-child(5){order:4}.sk-cloud li:first-child{order:0}.sk-cloud li:nth-child(2){order:1}.sk-cloud li:nth-child(3){order:3}.sk-cloud li:nth-child(4){order:2}.sk-cloud li:nth-child(5){order:4}.sk-tools li:first-child{order:0}.sk-tools li:nth-child(2){order:1}.sk-tools li:nth-child(3){order:2}.sk-tools li:nth-child(4){order:3}}@media (width>=561px) and (width<=660px){.sk-ai li:first-child{order:0}.sk-ai li:nth-child(2){order:1}.sk-ai li:nth-child(3){order:3}.sk-ai li:nth-child(4){order:2}.sk-ai li:nth-child(5){order:4}.sk-ai li:nth-child(6){order:5}.sk-ai li:nth-child(7){order:6}.sk-ai li:nth-child(8){order:7}.sk-ai li:nth-child(9){order:8}.sk-plat li:first-child{order:0}.sk-plat li:nth-child(2){order:2}.sk-plat li:nth-child(3){order:1}.sk-plat li:nth-child(4){order:3}.sk-lib li:first-child{order:0}.sk-lib li:nth-child(2){order:1}.sk-lib li:nth-child(3){order:2}.sk-lib li:nth-child(4){order:3}.sk-lib li:nth-child(5){order:4}.sk-lib li:nth-child(6){order:5}.sk-lang li:first-child{order:0}.sk-lang li:nth-child(2){order:1}.sk-lang li:nth-child(3){order:3}.sk-lang li:nth-child(4){order:2}.sk-lang li:nth-child(5){order:4}.sk-fw li:first-child{order:0}.sk-fw li:nth-child(2){order:1}.sk-fw li:nth-child(3){order:2}.sk-fw li:nth-child(4){order:3}.sk-fw li:nth-child(5){order:4}.sk-fw li:nth-child(6){order:5}.sk-fw li:nth-child(7){order:6}.sk-fw li:nth-child(8){order:7}.sk-db li:first-child{order:0}.sk-db li:nth-child(2){order:1}.sk-db li:nth-child(3){order:2}.sk-db li:nth-child(4){order:3}.sk-db li:nth-child(5){order:4}.sk-cloud li:first-child{order:0}.sk-cloud li:nth-child(2){order:4}.sk-cloud li:nth-child(3){order:2}.sk-cloud li:nth-child(4){order:1}.sk-cloud li:nth-child(5){order:3}.sk-tools li:first-child{order:0}.sk-tools li:nth-child(2){order:1}.sk-tools li:nth-child(3){order:2}.sk-tools li:nth-child(4){order:3}}@media (width>=661px) and (width<=760px){.sk-ai li:first-child{order:0}.sk-ai li:nth-child(2){order:1}.sk-ai li:nth-child(3){order:2}.sk-ai li:nth-child(4){order:4}.sk-ai li:nth-child(5){order:3}.sk-ai li:nth-child(6){order:5}.sk-ai li:nth-child(7){order:6}.sk-ai li:nth-child(8){order:7}.sk-ai li:nth-child(9){order:8}.sk-plat li:first-child{order:0}.sk-plat li:nth-child(2){order:2}.sk-plat li:nth-child(3){order:1}.sk-plat li:nth-child(4){order:3}.sk-lib li:first-child{order:0}.sk-lib li:nth-child(2){order:1}.sk-lib li:nth-child(3){order:2}.sk-lib li:nth-child(4){order:3}.sk-lib li:nth-child(5){order:4}.sk-lib li:nth-child(6){order:5}.sk-lang li:first-child{order:0}.sk-lang li:nth-child(2){order:1}.sk-lang li:nth-child(3){order:3}.sk-lang li:nth-child(4){order:2}.sk-lang li:nth-child(5){order:4}.sk-fw li:first-child{order:0}.sk-fw li:nth-child(2){order:1}.sk-fw li:nth-child(3){order:2}.sk-fw li:nth-child(4){order:3}.sk-fw li:nth-child(5){order:4}.sk-fw li:nth-child(6){order:5}.sk-fw li:nth-child(7){order:7}.sk-fw li:nth-child(8){order:6}.sk-db li:first-child{order:0}.sk-db li:nth-child(2){order:1}.sk-db li:nth-child(3){order:2}.sk-db li:nth-child(4){order:3}.sk-db li:nth-child(5){order:4}.sk-cloud li:first-child{order:0}.sk-cloud li:nth-child(2){order:1}.sk-cloud li:nth-child(3){order:3}.sk-cloud li:nth-child(4){order:2}.sk-cloud li:nth-child(5){order:4}.sk-tools li:first-child{order:0}.sk-tools li:nth-child(2){order:1}.sk-tools li:nth-child(3){order:2}.sk-tools li:nth-child(4){order:3}}@media (width<=760px){nav .wrap{padding:0 16px}.navleft{gap:10px}.hero{padding:20px 0 32px}.hero-grid,.hero.photo-left .hero-grid{grid-template-columns:1fr;gap:18px}.hero-photo,.hero.photo-left .hero-photo{order:-1}.portrait{width:126px;margin:0 auto}.caption{margin-top:12px}.caption strong{font-size:1.05rem}.loc{gap:6px;margin-top:10px}.caption .loc{display:none}.loc-mobile{justify-content:flex-start;margin:16px 0 0;display:flex}.loc .tag{padding:6px 10px;font-size:.74rem}.hero h1{font-size:clamp(2.1rem,8.5vw,2.6rem)}.hero p{margin-top:12px;font-size:.98rem;line-height:1.55}.hero p.second{margin-top:10px}.actions{gap:5px;margin-top:18px}.hero .btn{white-space:nowrap;padding:9px 12px;font-size:.88rem}.hero .btn.social{gap:7px;padding:5px 10px 5px 5px}.btn.social .ico{width:26px;height:26px;padding:6px}.btn .dl{display:none}.btn .rs{display:inline-block}.btn .rs:first-letter{text-transform:uppercase}section{padding:60px 0}.split{display:block}.split>h2{margin-bottom:20px;position:static}.row,.skill{grid-template-columns:1fr;gap:8px}.skill-grid{grid-template-columns:1fr;grid-template-areas:none}.skill-grid .skill-card{grid-area:auto}.job{padding-left:28px}}#bgPulses{pointer-events:none;z-index:0;width:100%;height:100%;position:fixed;top:0;left:0}.cursor-glow{pointer-events:none;z-index:9;opacity:0;will-change:transform;border-radius:50%;transition:opacity .3s;position:fixed;top:0;left:0}.cursor-glow.a{background:radial-gradient(circle,var(--halo) 0%,transparent 68%);width:300px;height:300px;margin:-150px 0 0 -150px}.cursor-glow.b{background:radial-gradient(circle,var(--violet-glow) 0%,transparent 70%);width:520px;height:520px;margin:-260px 0 0 -260px}.cursor-glow{mix-blend-mode:screen}.cursor-glow.on{opacity:calc(.45*var(--gd,1))}:root[data-theme=light] .cursor-glow{mix-blend-mode:multiply}:root[data-theme=light] .cursor-glow.on{opacity:calc(.5*var(--gd,1))}@media (pointer:coarse){.cursor-glow{display:none}}.brand .short{display:none}.menu{cursor:pointer;background:0 0;border:0;border-radius:8px;width:36px;height:36px;padding:0;display:none;position:relative}.menu:before{content:"";pointer-events:none;background:linear-gradient(135deg,var(--accent),var(--violet-text) 50%,var(--accent));-webkit-mask-composite:xor;border-radius:8px;padding:1.5px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);-webkit-mask-position:0 0,0 0;-webkit-mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}.menu span{background:var(--text);border-radius:2px;height:2px;transition:transform .25s,opacity .2s;position:absolute;left:9px;right:9px}.menu span:first-child{top:11px}.menu span:nth-child(2){top:17px}.menu span:nth-child(3){top:23px}nav.open .menu span:first-child{transform:translateY(6px)rotate(45deg)}nav.open .menu span:nth-child(2){opacity:0}nav.open .menu span:nth-child(3){transform:translateY(-6px)rotate(-45deg)}@media (width<=980px){.menu{display:block}.navleft .fx{display:none}nav ul .fxli{display:block}.fx.row{width:100%;height:auto;font:inherit;color:var(--muted);text-align:left;align-items:center;gap:12px;padding:13px 0;font-size:1rem;display:flex}.fx.row .fx-label{flex:1;display:block}.fx.row .fx-state{font-size:.84rem;display:block}.fx.row,.fx.row:hover,.fx.row:focus-visible,.fx.row[aria-pressed=true],.fx.row[aria-pressed=true]:hover{box-shadow:none;background:0 0;border:0;border-radius:0}.fx.row:hover,.fx.row:focus-visible{color:var(--text)}.fx.row[aria-pressed=true],.fx.row[aria-pressed=true]:hover{color:var(--violet-text)}nav ul{background:var(--bg);border-bottom:1px solid var(--line);flex-direction:column;gap:0;padding:4px 24px 12px;display:none;position:absolute;top:100%;left:0;right:0}nav.open ul{display:flex}nav ul li{border-top:1px solid var(--line)}nav ul li:first-child{border-top:0}nav ul a{border-bottom:0;padding:13px 0;font-size:1rem;display:block}nav ul a:after{display:none}nav ul a.active{color:var(--violet-text);border-bottom-color:#0000}}@media (width<=700px){.brand .full{display:none}.brand .short{display:inline}.brand{font-size:1.2rem}nav ul{padding:4px 16px 12px}}@media (width<=760px){nav ul .fxli{display:none}}@media (width<=420px){.navleft{display:contents}#theme{margin-left:auto;margin-right:10px}}@media (width<=309px){.brand{display:none}}@media (width<=900px){.row:not(.fx){grid-template-columns:minmax(0,1fr) auto;gap:6px 24px}.row:not(.fx) h3{grid-column:1/-1}.row:not(.fx)>*{min-width:0}}@media (width<=760px){.row:not(.fx){grid-template-columns:minmax(0,1fr)}.row .meta{flex-wrap:wrap;gap:6px}.row .meta span{white-space:normal;overflow-wrap:anywhere;max-width:100%;padding:6px 9px;font-size:.74rem}}@media (pointer:coarse),(width<=760px){.links a,.note a{position:relative}.links a:after,.note a:after{content:"";position:absolute;inset:-12px -6px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}.cursor-glow{display:none}}
