@font-face{font-family:Vazirmatn Variable;src:url(/assets/vazirmatn-latin-BFexNX-K.woff2)format("woff2");font-weight:100 900;font-display:swap;unicode-range:U+??,U+2000-206F,U+20AC,U+2122,U+2212,U+2190-21FF,U+2726}:root{--paper:#f7f4ec;--card:#fff;--ink:#1d2340;--soft:#5a6078;--line:#e2dccb;--brick:#d9572b;--brick-dark:#b8441d;--blue:#2f5bea;--teal:#0e9f8a;--gutter:clamp(16px, 5vw, 64px);--spring:cubic-bezier(.34, 1.56, .64, 1);--out:cubic-bezier(.16, 1, .3, 1);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box}html{background:var(--paper);-webkit-text-size-adjust:100%;scroll-padding-top:80px}html.lenis,html.lenis body{height:auto}.lenis.lenis-smooth{scroll-behavior:auto!important}body{color:var(--ink);background-color:var(--paper);background-image:linear-gradient(#2f5bea0f 1px,#0000 1px),linear-gradient(90deg,#2f5bea0f 1px,#0000 1px);background-size:28px 28px;margin:0;font:400 1.0625rem/1.65 Vazirmatn Variable,system-ui,sans-serif;overflow-x:clip}h1,h2,h3,p,ul,ol{margin:0;padding:0}ul,ol{list-style:none}a{color:var(--blue)}:focus-visible{outline:3px solid var(--blue);outline-offset:3px}::selection{background:var(--brick);color:#fff}.wrap{width:min(1120px, 100% - 2 * var(--gutter));margin-inline:auto}.top{z-index:20;-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--line);background:#f7f4ecdb;transition:box-shadow .3s,background .3s;position:sticky;top:0}.scrolled .top{background:#f7f4ecf2;box-shadow:0 10px 30px -20px #1d234073}.progress{background:linear-gradient(90deg, var(--brick), var(--blue));transform-origin:0;height:2px;transform:scaleX(var(--page-progress,0));position:absolute;bottom:-1px;left:0;right:0}.top .wrap{justify-content:space-between;align-items:center;gap:16px;min-height:64px;display:flex}.brand{color:var(--ink);align-items:center;gap:10px;font-size:1.125rem;font-weight:900;text-decoration:none;display:flex}.brand-mark{background:var(--ink);width:34px;height:34px;color:var(--paper);letter-spacing:.02em;transition:transform .5s var(--spring), background .3s;border-radius:10px;place-items:center;font-size:.8125rem;display:grid}.brand:hover .brand-mark{background:var(--brick);transform:rotate(-8deg)scale(1.08)}.nav{align-items:center;gap:4px 22px;display:flex}.nav a{color:var(--ink);font-size:.9375rem;text-decoration:none;position:relative}.nav a:not(.nav-cta):after{content:"";background:var(--brick);transform-origin:100%;height:2px;transition:transform .35s var(--out);position:absolute;bottom:-3px;left:0;right:0;transform:scaleX(0)}.nav a:not(.nav-cta):hover:after{transform-origin:0;transform:scaleX(1)}.nav-cta{background:var(--brick);transform:translate(var(--mx,0), var(--my,0));transition:transform .25s var(--out), background .2s;border-radius:999px;padding:6px 16px;font-weight:700;color:#fff!important}.nav-cta:hover{background:var(--brick-dark)}@media (width<=760px){.nav .hide-phone{display:none}}.hero{padding-block:clamp(40px,8vw,100px) clamp(64px,9vw,110px);position:relative;overflow:hidden}.hero-glow{pointer-events:none;z-index:-1;height:120%;position:absolute;inset:-20% -10% auto}.hero-glow:before,.hero-glow:after{content:"";filter:blur(60px);opacity:.32;border-radius:50%;width:46vmax;height:46vmax;position:absolute}.hero-glow:before{background:radial-gradient(circle,#f2c9a8,#0000 65%);animation:18s ease-in-out infinite alternate drift;top:-10%;left:-12%}.hero-glow:after{background:radial-gradient(circle,#b9c8ff,#0000 65%);animation:22s ease-in-out -6s infinite alternate-reverse drift;top:10%;right:-16%}@keyframes drift{to{transform:translate(8vw,6vh)scale(1.15)}}.hero .wrap{grid-template-columns:1.1fr .9fr;align-items:center;gap:clamp(32px,6vw,72px);display:grid}@media (width<=900px){.hero .wrap{grid-template-columns:1fr}}.byline{background:var(--card);border:1px solid var(--line);border-radius:999px;align-items:center;gap:10px;padding:4px 14px 4px 6px;font-size:.9375rem;display:inline-flex}.byline b{background:var(--brick);color:#fff;border-radius:50%;place-items:center;width:30px;height:30px;font-size:.75rem;display:grid}h1{letter-spacing:-.02em;margin-block:22px 18px;font-size:clamp(2.25rem,5.4vw,4rem);font-weight:900;line-height:1.12}h1 .word{vertical-align:top;margin-bottom:-.08em;padding-bottom:.08em;display:inline-block;overflow:hidden}h1 .word>span{display:inline-block}h1 .em{color:var(--brick);position:relative}h1 .em:after{content:"";opacity:.25;transform-origin:0;background:currentColor;border-radius:4px;height:.12em;position:absolute;bottom:.06em;left:0;right:.1em}.lead{color:var(--soft);max-width:34em;font-size:1.1875rem}.lead-small{color:var(--ink);margin-top:10px;font-size:1.0625rem;font-weight:600}.rotator{vertical-align:bottom;color:var(--blue);min-width:7.5em;display:inline-grid;overflow:hidden}.rotator-word{display:inline-block}.actions{flex-wrap:wrap;gap:12px;margin-block-start:30px;display:flex}.btn{isolation:isolate;border:1.5px solid var(--ink);min-height:48px;color:var(--ink);font:inherit;cursor:pointer;transform:translate(var(--mx,0), var(--my,0));transition:transform .25s var(--out), color .3s, border-color .3s;background:0 0;border-radius:12px;justify-content:center;align-items:center;gap:8px;padding:0 22px;font-weight:700;text-decoration:none;display:inline-flex;position:relative;overflow:hidden}.btn:before{content:"";z-index:-1;background:var(--ink);transform-origin:bottom;transition:transform .35s var(--out);position:absolute;inset:0;transform:scaleY(0)}.btn:hover{color:var(--paper)}.btn:hover:before{transform:scaleY(1)}.btn:active{scale:.97}.btn-solid{background:var(--brick);border-color:var(--brick);color:#fff}.btn-solid:before{background:var(--brick-dark)}.btn-solid:hover{color:#fff;border-color:var(--brick-dark)}.btn-ghost{border-style:dashed;border-color:var(--soft);color:var(--soft)}.mock{background:var(--card);border:1px solid var(--line);transform:perspective(900px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:transform .4s var(--out);border-radius:18px;position:relative;overflow:hidden;box-shadow:0 30px 60px -30px #1d234066}.mock-bar{border-bottom:1px solid var(--line);background:#fbf9f4;align-items:center;gap:6px;padding:12px 14px;display:flex}.mock-bar span{background:var(--line);border-radius:50%;width:10px;height:10px}.mock-bar span:first-child{background:#ff7a66}.mock-bar span:nth-child(2){background:#f5b942}.mock-bar span:nth-child(3){background:#9be564}.mock-bar em{color:var(--soft);margin-left:10px;font:500 .8125rem ui-monospace,Menlo,monospace}.mock-body{gap:14px;padding:18px;display:grid}.graph{border:1px solid var(--line);background:#fbf9f4;border-radius:12px;width:100%;height:auto;display:block}.graph .edges path{fill:none;stroke:#c4bda8;stroke-width:2px;stroke-dasharray:1;stroke-dashoffset:0}.graph .node circle:last-child{fill:var(--blue);stroke:#fff;stroke-width:3px}.graph .node-a circle:last-child{fill:var(--brick)}.graph .node-c circle:last-child{fill:var(--teal)}.graph .halo{fill:var(--blue);opacity:.12;transform-box:fill-box;transform-origin:50%}.graph .node-a .halo{fill:var(--brick)}.graph .node-c .halo{fill:var(--teal)}.graph .packet{fill:var(--brick)}.mock-chips{flex-wrap:wrap;gap:8px;display:flex}.mock-chips span{border:1px solid var(--line);background:#f1ede2;border-radius:999px;align-items:center;gap:8px;padding:4px 12px;font-size:.8125rem;font-weight:600;display:inline-flex}.mock-chips i{background:var(--teal);border-radius:50%;width:8px;height:8px}.scroll-cue{border:2px solid var(--soft);opacity:.7;border-radius:14px;width:26px;height:42px;position:absolute;bottom:22px;left:50%;translate:-50%}.scroll-cue span{background:var(--brick);border-radius:2px;width:4px;height:8px;margin-left:-2px;position:absolute;top:8px;left:50%}@media (width<=900px){.scroll-cue{display:none}}.stats{border-top:1px solid var(--line);padding-block:clamp(28px,5vw,48px)}.stats-grid{grid-template-columns:repeat(4,1fr);gap:16px;display:grid}@media (width<=860px){.stats-grid{grid-template-columns:repeat(2,1fr)}}.stat{background:var(--card);border:1px solid var(--line);transition:transform .4s var(--spring), box-shadow .3s;border-radius:16px;padding:22px 22px 26px;position:relative;overflow:hidden}.stat:hover{transform:translateY(-4px);box-shadow:0 20px 40px -26px #1d234080}.stat-num{font-variant-numeric:tabular-nums;letter-spacing:-.03em;font-size:clamp(2.5rem,6vw,3.5rem);font-weight:900;line-height:1}.stat-num em{color:var(--brick);margin-left:2px;font-style:normal}.stat-label{color:var(--soft);margin-top:10px;font-size:.9375rem;line-height:1.4}.stat-bar{background:linear-gradient(90deg, var(--brick), var(--blue));transform-origin:0;width:100%;height:4px;position:absolute;bottom:0;left:0}.marquee{border-block:1px solid var(--line);background:var(--ink);color:var(--paper);padding-block:14px;overflow:hidden}.marquee-track{gap:0;width:max-content;display:flex}.marquee span{white-space:nowrap;align-items:center;gap:28px;padding-right:28px;font-size:1.125rem;font-weight:800;display:inline-flex}.marquee i{color:var(--brick);font-style:normal}.marquee:hover .marquee-track{animation-play-state:paused}.section{border-top:1px solid var(--line);padding-block:clamp(56px,8vw,104px);overflow-x:clip}.kicker{color:var(--brick);letter-spacing:.04em;text-transform:uppercase;font-size:.9375rem;font-weight:800}h2{letter-spacing:-.015em;margin-block:8px 14px;font-size:clamp(1.75rem,3.6vw,2.75rem);font-weight:900;line-height:1.2}.intro{color:var(--soft);max-width:40em}.about-grid{grid-template-columns:1fr 1.1fr;align-items:start;gap:clamp(28px,5vw,56px);margin-top:24px;display:grid}@media (width<=900px){.about-grid{grid-template-columns:1fr}}.about-text{color:var(--soft);gap:16px;font-size:1.0625rem;display:grid}.domains{color:var(--ink);flex-wrap:wrap;align-items:center;gap:8px;font-weight:700;display:flex}.domains span{color:var(--blue);background:#eef2fe;border-radius:6px;padding:2px 10px;font-size:.875rem}.focus{grid-template-columns:1fr 1fr;gap:14px;display:grid}@media (width<=560px){.focus{grid-template-columns:1fr}}.focus-card{background:var(--card);border:1px solid var(--line);border-inline-start:4px solid var(--brick);transition:transform .4s var(--spring), border-color .3s, box-shadow .3s;border-radius:14px;padding:20px;position:relative}.focus-card:hover{border-color:var(--blue);transform:translateY(-4px)rotate(-.4deg);box-shadow:0 18px 36px -24px #2f5bea99}.focus-num{color:var(--soft);transition:transform .4s var(--spring), color .3s;font:800 .8125rem ui-monospace,Menlo,monospace;display:inline-block}.focus-card:hover .focus-num{color:var(--blue);transform:translate(6px)}.focus-card h3{margin-top:6px;font-size:1.0625rem;font-weight:800}.focus-card p{color:var(--soft);margin-top:4px;font-size:.9375rem}.timeline{--progress:0;margin-top:40px;position:relative}.timeline-line{background:var(--line);border-radius:2px;width:2px;position:absolute;top:6px;bottom:6px;left:15px}.timeline-line span{background:linear-gradient(var(--brick), var(--blue));transform-origin:top;transform:scaleY(var(--progress));border-radius:2px;position:absolute;inset:0}.jobs{gap:26px;display:grid}.job{padding-left:52px;position:relative}.job-dot{background:var(--paper);border:4px solid var(--brick);width:20px;height:20px;box-shadow:0 0 0 5px var(--paper);border-radius:50%;position:absolute;top:22px;left:6px}.job-dot.is-in:after{content:"";border:2px solid var(--brick);opacity:0;border-radius:50%;position:absolute;inset:-8px}.job-card{background:var(--card);border:1px solid var(--line);transition:border-color .3s, box-shadow .4s, transform .4s var(--out);border-radius:18px;padding:clamp(18px,3vw,28px)}.job-card:hover{border-color:var(--brick);transform:translate(4px);box-shadow:0 24px 48px -30px #d9572b8c}.job-period{color:var(--brick);font:700 .8125rem ui-monospace,Menlo,monospace}.job-card h3{margin-top:4px;font-size:clamp(1.125rem,2.2vw,1.375rem);font-weight:900;line-height:1.3}.job-at{color:var(--soft);font-weight:600}.job-at a{color:var(--blue);transition:background-size .35s var(--out);background:linear-gradient(currentColor,currentColor) 0 100%/0 2px no-repeat;text-decoration:none}.job-at a:hover{background-size:100% 2px}.job-at small{font-size:.8125rem}.job-place{color:var(--soft);font-size:.9375rem}.job-points{gap:8px;margin-top:14px;display:grid}.job-points li{color:#3b4160;padding-left:20px;font-size:.9875rem;position:relative}.job-points li:before{content:"";background:var(--brick);width:8px;height:2px;position:absolute;top:.72em;left:2px}.tags{flex-wrap:wrap;gap:8px;margin-top:16px;display:flex}.tag{color:var(--blue);cursor:default;transition:transform .3s var(--spring), background .25s, color .25s, border-color .25s, box-shadow .25s;background:#eef2fe;border:1px solid #0000;border-radius:8px;padding:4px 12px;font-size:.8125rem;font-weight:700;display:inline-block}.tag:hover{background:var(--blue);color:#fff;transform:translateY(-3px)rotate(-2deg);box-shadow:0 8px 16px -8px #2f5beacc}.projects{perspective:1000px;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:36px;display:grid}@media (width<=960px){.projects{grid-template-columns:repeat(2,1fr)}}@media (width<=620px){.projects{grid-template-columns:1fr}}.project{background:var(--card);border:1px solid var(--line);transform:rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:transform .35s var(--out), box-shadow .35s, border-color .3s;border-radius:18px;grid-template-rows:auto auto 1fr auto auto;gap:10px;padding:22px;display:grid;position:relative;overflow:hidden}.project:after{content:"";pointer-events:none;opacity:0;background:radial-gradient(400px circle at var(--gx,50%) var(--gy,50%), #2f5bea1a, transparent 45%);transition:opacity .3s;position:absolute;inset:0}.project:hover{border-color:var(--blue);box-shadow:0 30px 50px -30px #1d23408c}.project:hover:after{opacity:1}.project-head{color:var(--soft);justify-content:space-between;align-items:center;gap:8px;font-size:.875rem;display:flex}.lang{color:var(--ink);align-items:center;gap:6px;font-weight:700;display:inline-flex}.lang i{border-radius:50%;width:10px;height:10px}.meta{gap:12px;display:inline-flex}.meta span{align-items:center;gap:4px;display:inline-flex}.project h3{overflow-wrap:anywhere;font-size:1.125rem;font-weight:900}.project p{color:var(--soft);font-size:.9375rem}.project-tags{flex-wrap:wrap;gap:6px;display:flex}.project-tags span{color:var(--ink);background:#f1ede2;border-radius:6px;padding:2px 8px;font-size:.75rem;font-weight:700}.project-links{border-top:1px dashed var(--line);gap:16px;padding-top:10px;display:flex}.project-links a{font-size:.9375rem;font-weight:800;text-decoration:none}.project-links a span{transition:transform .3s var(--spring);display:inline-block}.project-links a:hover span{transform:translate(4px,-1px)}.more{margin-top:32px}.skills{grid-template-columns:repeat(2,1fr);gap:18px;margin-top:32px;display:grid}@media (width<=760px){.skills{grid-template-columns:1fr}}.skill-group{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:22px}.skill-group:first-child{grid-column:1/-1}.skill-group h3{font-size:1.0625rem;font-weight:800}.skill-group .tags{margin-top:12px}.more-grid{grid-template-columns:repeat(3,1fr);gap:18px;display:grid}@media (width<=860px){.more-grid{grid-template-columns:1fr}}.mini{background:var(--card);border:1px solid var(--line);transition:transform .4s var(--spring);border-radius:16px;padding:24px}.mini:hover{transform:translateY(-4px)}.mini h3{margin-top:6px;font-size:1.1875rem;font-weight:900}.mini p{color:var(--soft)}.mini .kicker{color:var(--brick)}.soft{font-size:.9375rem}.interests{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.interests li{border:1.5px solid var(--ink);transition:background .25s, color .25s, transform .3s var(--spring);border-radius:999px;padding:4px 12px;font-size:.875rem;font-weight:700}.interests li:hover{background:var(--ink);color:var(--paper);transform:scale(1.06)}.author{background:var(--ink);color:var(--paper);border-radius:22px;grid-template-columns:auto 1fr;align-items:center;gap:28px;margin-top:30px;padding:clamp(22px,4vw,40px);display:grid;position:relative;overflow:hidden}.author:before{content:"";pointer-events:none;background-image:linear-gradient(#ffffff0d 1px,#0000 1px),linear-gradient(90deg,#ffffff0d 1px,#0000 1px);background-size:28px 28px;position:absolute;inset:0}@media (width<=640px){.author{grid-template-columns:1fr}}.monogram{background:var(--brick);color:#fff;border-radius:26px;place-items:center;width:104px;height:104px;font-size:2.125rem;font-weight:900;display:grid;position:relative}.monogram:after{content:"";border:2px dashed #ffffff59;border-radius:30px;position:absolute;inset:-6px}.author h3{font-size:1.625rem;font-weight:900;position:relative}.author p{color:#c9cedf;max-width:38em;margin-top:6px;position:relative}.author-links{flex-wrap:wrap;gap:10px;margin-top:18px;display:flex;position:relative}.author-links a{color:#fff;min-height:44px;transform:translate(var(--mx,0), var(--my,0));transition:transform .25s var(--out), border-color .2s, color .2s, background .2s;border:1px solid #ffffff47;border-radius:12px;align-items:center;padding:0 20px;font-weight:700;text-decoration:none;display:inline-flex}.author-links a:hover{color:#ffb89e;border-color:#ff9d7a}.author-links .main{background:var(--brick);border-color:var(--brick)}.author-links .main:hover{background:var(--brick-dark);color:#fff}.foot{border-top:1px solid var(--line);color:var(--soft);padding-block:28px 80px;font-size:.9375rem}.foot .wrap{flex-wrap:wrap;justify-content:space-between;gap:8px 24px;display:flex}.foot a{color:var(--ink)}@media (prefers-reduced-motion:no-preference){h1 .word>span{translate:0 110%}.ready h1 .word>span{transition:translate .9s var(--out) var(--d,0s);translate:0}h1 .em:after{transform:scaleX(0)}.ready h1 .em:after{transition:transform .8s var(--out) 1.1s;transform:scaleX(1)}.rotator-word{animation:rotate-in .55s var(--out) both}@keyframes rotate-in{0%{opacity:0;filter:blur(4px);translate:0 100%}to{opacity:1;filter:none;translate:0}}.mock{animation:7s ease-in-out infinite float}@keyframes float{50%{translate:0 -10px}}.graph .edges path{stroke-dashoffset:1px}.ready .graph .edges path{stroke-dashoffset:0;transition:stroke-dashoffset .9s var(--out) var(--d,0s)}.graph .node{scale:0}.ready .graph .node{transition:scale .6s var(--spring) var(--d,0s);scale:1}.graph .halo{animation:2.8s ease-out infinite halo}.graph .node:nth-child(2n) .halo{animation-delay:-1.2s}.graph .node:nth-child(3n) .halo{animation-delay:-2s}@keyframes halo{0%{opacity:.35;transform:scale(.6)}to{opacity:0;transform:scale(1.8)}}.mock-chips i{animation:1.6s ease-in-out infinite blink}.mock-chips span:nth-child(2) i{background:var(--blue);animation-delay:.4s}.mock-chips span:nth-child(3) i{background:var(--brick);animation-delay:.8s}@keyframes blink{50%{opacity:.25;scale:.7}}.scroll-cue span{animation:cue 1.8s var(--out) infinite}@keyframes cue{0%{opacity:1;translate:0}70%{opacity:0;translate:0 14px}to{opacity:0}}[data-reveal]{opacity:0;transition:opacity .8s var(--out) var(--d,0s), translate .8s var(--out) var(--d,0s), transform .4s var(--out), box-shadow .35s, border-color .3s;translate:0 28px}[data-reveal].is-in{opacity:1;translate:0}.tag[data-reveal]{transition:opacity .45s var(--out) var(--d,0s), translate .6s var(--spring) var(--d,0s), scale .6s var(--spring) var(--d,0s), transform .3s var(--spring), background .25s, color .25s, box-shadow .25s;translate:0 10px;scale:.6}.tag[data-reveal].is-in{translate:0;scale:1}.stat-bar{transform:scaleX(0)}.stat.is-in .stat-bar{transition:transform 1.6s var(--out) calc(var(--d,0s) + .2s);transform:scaleX(1)}.job-dot[data-reveal]{transition:opacity .3s, scale .6s var(--spring);translate:none;scale:0}.job-dot[data-reveal].is-in{scale:1}.job-dot.is-in:after{animation:2.4s ease-out .4s infinite ring}@keyframes ring{0%{opacity:.7;transform:scale(.6)}to{opacity:0;transform:scale(1.7)}}.job-card[data-reveal]{translate:-32px}.job-card[data-reveal].is-in{translate:0}.marquee-track{animation:32s linear infinite marquee}@keyframes marquee{to{transform:translate(-50%)}}.monogram:after{animation:14s linear infinite spin}@keyframes spin{to{rotate:360deg}}}@media (prefers-reduced-motion:reduce){.marquee-track{flex-wrap:wrap;justify-content:center;width:auto}.marquee span:nth-child(n+13){display:none}.mock,.project{transform:none!important}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.skill-group:last-child:nth-child(2n){grid-column:1/-1}
