.side{position:fixed;bottom:0;left:40px;z-index:10;display:flex;flex-direction:column;align-items:center;color:var(--light-slate)}.side:after{content:"";display:block;width:1px;height:90px;margin-top:20px;background-color:var(--light-slate)}.social{display:flex;flex-direction:column;align-items:center}.social li{margin-bottom:10px}.social li:last-child{margin-bottom:0}.social__link{display:flex;align-items:center;justify-content:center;min-width:20px;min-height:20px;padding:10px;color:var(--light-slate);transition:var(--transition)}.social__link svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.social__link:hover,.social__link:focus-visible{transform:translateY(-3px);color:var(--green)}.social__zalo-icon{fill:none;stroke:currentColor}.side--email{left:auto;right:40px}.side__email{display:inline-block;margin:20px auto;padding:10px;font-family:var(--font-mono);font-size:var(--fz-xs);letter-spacing:.1em;writing-mode:vertical-rl;color:var(--light-slate);transition:var(--transition)}.side__email:hover,.side__email:focus-visible{transform:translateY(-3px);color:var(--green)}.hero{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;min-height:100vh;padding:var(--nav-height) 0 100px}.hero__greeting{color:var(--green);font-family:var(--font-mono);font-size:clamp(var(--fz-md),5vw,var(--fz-lg));font-weight:400}.hero__name{margin:5px 0 0;color:var(--lightest-slate);font-size:clamp(40px,8vw,80px);line-height:1.1}.hero__tagline{margin-top:5px;max-width:1000px;color:var(--slate);font-size:clamp(28px,6vw,56px);line-height:1.05}.hero__intro{max-width:540px;margin-top:25px;color:var(--slate)}.hero .button{margin-top:50px}.about__inner{display:grid;grid-template-columns:3fr 2fr;gap:50px}.about__text p{margin-bottom:15px}.about__skills{display:grid;grid-template-columns:repeat(2,minmax(140px,200px));overflow:hidden;margin-top:10px;margin-bottom:0}.about__skills li{position:relative;margin-bottom:10px;padding-left:20px;font-family:var(--font-mono);font-size:var(--fz-xs);color:var(--slate)}.about__skills li:before{content:"▹";position:absolute;left:0;color:var(--green)}.about__photo{position:relative;justify-self:center;align-self:center;max-width:300px}.about__photo:before,.about__photo:after{content:"";position:absolute;z-index:-1;transition:var(--transition)}.about__photo:before{top:0;right:0;bottom:0;left:0;background-color:var(--green)}.about__photo:after{top:14px;left:14px;width:100%;height:100%;border:2px solid var(--green);background-color:transparent}.about__photo-img{position:relative;width:100%;mix-blend-mode:multiply;filter:grayscale(100%) contrast(1.05);transition:var(--transition)}.about__photo:hover,.about__photo:focus-within{transform:translate(-4px,-4px)}.about__photo:hover:after,.about__photo:focus-within:after{transform:translate(8px,8px)}.about__photo:hover .about__photo-img,.about__photo:focus-within .about__photo-img{filter:none;mix-blend-mode:normal}.section--jobs{max-width:700px}.jobs{display:flex;align-items:flex-start}.jobs__tablist{position:relative;display:flex;flex-direction:column;width:fit-content;min-width:max-content;text-align:left;margin:0}.jobs__highlight{position:absolute;top:0;left:0;z-index:2;width:2px;height:var(--tab-height);background-color:var(--green);transition:transform .25s var(--easing) .1s}.jobs__tab{display:flex;align-items:center;height:var(--tab-height);padding:0 20px 2px;border:none;border-left:2px solid var(--lightest-navy);background:none;color:var(--slate);font-family:var(--font-mono);font-size:var(--fz-xs);text-align:left;white-space:nowrap;cursor:pointer;transition:var(--transition)}.jobs__tab:hover{background-color:var(--light-navy)}.jobs__tab[aria-selected=true]{color:var(--green)}.jobs__tab:focus-visible{outline:2px dashed var(--green);outline-offset:-2px}.jobs__panels{flex-grow:1;width:100%;margin-left:50px}.jobs__panel[hidden]{display:none}.jobs__panel h3{margin-bottom:5px;color:var(--lightest-slate);font-size:var(--fz-xxl);font-weight:500}.jobs__company{color:var(--green)}.jobs__range,.jobs__location{font-family:var(--font-mono);font-size:var(--fz-xs);color:var(--light-slate)}.jobs__location{margin-top:5px}.jobs__panel ul{margin-top:25px}.jobs__panel li{position:relative;margin-bottom:10px;padding-left:30px;color:var(--slate);font-size:var(--fz-lg)}.jobs__panel li:before{content:"▹";position:absolute;left:0;color:var(--green)}.project{display:grid;grid-template-columns:repeat(12,1fr);align-items:center;gap:10px}.project+.project{margin-top:100px}.project__media{position:relative;grid-row:1;display:block;background-color:var(--green);border-radius:var(--border-radius);box-shadow:0 10px 30px -15px var(--navy-shadow);transition:var(--transition);overflow:hidden}.project__media:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;background-color:var(--navy);mix-blend-mode:screen}.project__media img{filter:grayscale(100%) contrast(1) brightness(90%);mix-blend-mode:multiply;transition:var(--transition)}.project__media[data-surface=light] img{filter:grayscale(85%) contrast(1) brightness(75%)}.project__media:hover img,.project__media:focus-visible img{filter:none;mix-blend-mode:normal}.project__media:hover:before,.project__media:focus-visible:before{background-color:transparent}.project__content{position:relative;z-index:2;min-width:0;grid-row:1}.project--even .project__content{grid-column:1 / 7}.project--even .project__media{grid-column:6 / -1}.project--odd .project__content{grid-column:7 / -1;text-align:right}.project--odd .project__media{grid-column:1 / 8}.project__overline{margin-bottom:15px;color:var(--green);font-family:var(--font-mono);font-size:var(--fz-xs)}.project__title{margin:0 0 15px;font-size:clamp(24px,5vw,28px)}.project__title a{color:var(--lightest-slate);transition:var(--transition)}.project__title a:hover,.project__title a:focus-visible{color:var(--green)}.project__desc{position:relative;z-index:2;padding:25px;border-radius:var(--border-radius);background-color:var(--light-navy);box-shadow:0 10px 30px -15px var(--navy-shadow);color:var(--light-slate);font-size:var(--fz-lg)}.project--odd .project__desc{text-align:right}.project__tech{display:flex;flex-wrap:wrap;gap:8px 20px;margin:25px 0 10px;font-family:var(--font-mono);font-size:var(--fz-xs);line-height:1.4;color:var(--slate)}.project--even .project__tech{justify-content:flex-start}.project--odd .project__tech{justify-content:flex-end}.project__tech li{margin:0}.project__links{display:flex;align-items:center;margin-top:10px}.project--odd .project__links{justify-content:flex-end}.project__links a{display:inline-flex;padding:10px;margin-right:15px;margin-left:-10px;color:var(--lightest-slate);transition:var(--transition)}.project--odd .project__links a{margin-right:-10px;margin-left:15px}.project__links a:last-child{margin-right:0;margin-left:0}.project__links svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.project__links a:hover,.project__links a:focus-visible{color:var(--green)}.project__content>:not(.project__desc){max-width:85%}.project--odd .project__content>:not(.project__desc){margin-left:auto}.other{margin-top:120px;text-align:center}.other__heading{font-size:clamp(24px,5vw,var(--fz-heading))}.other__archive{display:inline-block;margin-top:15px;font-family:var(--font-mono);font-size:var(--fz-sm)}.other__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:15px;margin-top:50px;text-align:left}.card{display:flex;flex-direction:column;padding:2rem 1.75rem;border-radius:var(--border-radius);background-color:var(--light-navy);box-shadow:0 10px 30px -15px var(--navy-shadow);transition:var(--transition)}.card:hover,.card:focus-within{transform:translateY(-7px);box-shadow:0 20px 40px -15px var(--navy-shadow)}.card__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:30px}.card__folder{width:40px;height:40px;color:var(--green);fill:none;stroke:currentColor;stroke-width:1;stroke-linecap:round;stroke-linejoin:round}.card__links{display:flex;align-items:center;margin-right:-10px}.card__links a{display:inline-flex;padding:10px;color:var(--lightest-slate);transition:var(--transition)}.card__links svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.card__links a:hover,.card__links a:focus-visible{color:var(--green)}.card__title{margin:0 0 15px;font-size:var(--fz-xxl)}.card__title a{color:var(--lightest-slate);transition:var(--transition)}.card__title a:hover,.card__title a:focus-visible{color:var(--green)}.card__desc{flex-grow:1;font-size:17px}.card__tech{display:flex;flex-wrap:wrap;margin-top:25px;font-family:var(--font-mono);font-size:var(--fz-xxs);color:var(--slate)}.card__tech li{margin-right:15px;margin-bottom:5px}.card__tech li:last-child{margin-right:0}.cta-band{max-width:600px;margin:0 auto;padding:100px 0;text-align:center}.cta-band__label{margin-bottom:20px;color:var(--green);font-family:var(--font-mono);font-size:var(--fz-md);font-weight:400}.cta-band__heading{margin-bottom:20px;font-size:clamp(28px,5vw,44px)}.cta-band__body{margin:0 auto 40px;max-width:500px}.cta-band__links{display:flex;flex-direction:column;align-items:center;gap:20px}.section--contact{max-width:600px;text-align:center;padding-bottom:150px}.contact__title{margin:10px 0 30px;font-size:clamp(40px,5vw,60px)}.contact__body{max-width:500px;margin:0 auto}.section--contact .button{margin-top:50px}.footer--contact{display:none}@media(max-width:1080px){.side{display:none}.footer--contact{display:block;min-height:0;padding:25px 25px 35px}.footer__social{display:block;width:100%;max-width:270px;margin:0 auto;color:var(--light-slate)}.footer__social-list{display:flex;align-items:center;justify-content:space-between;width:100%;margin:0;padding:0;list-style:none}.other__grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}}@media(max-width:768px){.about__inner{display:block}.about__photo{margin:50px auto 0}.project,.project+.project{display:block;margin-top:70px}.project+.project{margin-top:70px}.project__media{margin-bottom:25px}.project__content,.project--odd .project__content,.project--odd .project__desc{text-align:left}.project--odd .project__tech,.project--odd .project__links{justify-content:flex-start}.project__content>:not(.project__desc),.project--odd .project__content>:not(.project__desc){max-width:none;margin-left:0}}@media(max-width:600px){.jobs{display:block}.jobs__tablist{flex-direction:row;width:100%;min-width:0;overflow-x:auto;margin-bottom:25px;scrollbar-width:none}.jobs__tablist::-webkit-scrollbar{display:none}.jobs__highlight{top:auto;bottom:0;left:0;width:var(--tab-width);min-width:var(--tab-width);height:2px;transition:transform .25s var(--easing) .1s}.jobs__tab{flex:0 0 auto;width:var(--tab-width);min-width:var(--tab-width);height:var(--tab-height);padding:0;border-left:none;border-bottom:2px solid var(--lightest-navy);text-align:center;justify-content:center}.jobs__panels{margin-left:0}}@media(max-width:480px){.hero{padding-top:calc(var(--nav-height) + 20px)}.section{padding:60px 0}.project+.project{margin-top:30px}.about__skills{grid-template-columns:repeat(2,1fr)}.other__grid{grid-template-columns:1fr}}
