*,:before,:after{box-sizing:border-box}:root{--color-bg:#282c33;--color-white:#fff;--color-primary:#c778dd;--color-gray:#abb2bf;--color-border:#abb2bf;--color-primary-tint:#c778dd33;--color-gray-tint:#abb2bf33;--font:"Fira Code", ui-monospace, Consolas, monospace;--content-width:1024px;--section-gap:clamp(3rem, 8vw, 5rem)}html{font-family:var(--font);background-color:var(--color-bg);color:var(--color-gray);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;line-height:1.5}body{margin:0;overflow-x:hidden}#root{flex-direction:column;min-height:100svh;display:flex}.container{width:var(--content-width);max-width:100%;margin:0 auto;padding:0 clamp(1rem,5vw,1.5rem)}h1,h2,h3,h4,h5,h6{color:var(--color-white);margin:0;font-weight:500}p{margin:0}a{color:inherit;text-decoration:none}.section-title{color:var(--color-white);white-space:nowrap;align-items:center;gap:1rem;font-size:clamp(1.375rem,4.5vw,2rem);font-weight:500;display:flex}.section-title .hash{color:var(--color-primary)}.section-title:after{content:"";background:var(--color-border);flex:1;min-width:60px;height:1px;display:block}.btn{font-family:var(--font);cursor:pointer;white-space:nowrap;background:0 0;border:1px solid;align-items:center;padding:8px 16px;font-size:1rem;font-weight:500;line-height:normal;transition:background .2s;display:inline-flex}.btn-primary{border-color:var(--color-primary);color:var(--color-white)}.btn-primary:hover{background:var(--color-primary-tint)}.btn-secondary{border-color:var(--color-border);color:var(--color-gray)}.btn-secondary:hover{background:var(--color-gray-tint)}@keyframes fadeUp{0%{opacity:0;transform:translateY(28px)}to{opacity:1;transform:translateY(0)}}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.animate-in{opacity:0;animation:.7s cubic-bezier(.16,1,.3,1) forwards fadeUp;animation-delay:var(--delay,0s)}.cursor{background:var(--color-primary);vertical-align:text-bottom;width:10px;height:1.1em;margin-left:4px;animation:1s step-end infinite blink;display:inline-block}.dot-grid{grid-template-columns:repeat(var(--cols,5), 4px);pointer-events:none;gap:12px;display:grid}.dot-grid__dot{background:var(--color-gray);opacity:.35;border-radius:50%;width:4px;height:4px}.section{padding:var(--section-gap) 0}.navbar{z-index:100;background:var(--color-bg);border-bottom:1px solid #abb2bf40;position:sticky;top:0}.navbar__inner{justify-content:space-between;align-items:center;height:4rem;display:flex}.navbar__logo{color:var(--color-white);letter-spacing:-.02em;font-size:1.125rem;font-weight:600;transition:color .2s}.navbar__logo:hover,.navbar__logo-tag{color:var(--color-primary)}.navbar__links{align-items:center;gap:clamp(.75rem,3vw,2rem);margin:0;padding:0;list-style:none;display:flex}.navbar__links a{color:var(--color-gray);font-size:clamp(.8125rem,2vw,.9375rem);transition:color .2s}.navbar__links a:hover{color:var(--color-white)}.navbar__links li:nth-child(n+3){display:none}@media (width>=480px){.navbar__links li:nth-child(3){display:list-item}}@media (width>=640px){.navbar__links li:nth-child(4){display:list-item}}@media (width>=768px){.navbar__links li:nth-child(5){display:list-item}}.navbar__lang{color:var(--color-gray);cursor:pointer;border:1px solid #abb2bf66;padding:3px 10px;font-size:.8125rem;transition:color .2s,border-color .2s}.navbar__lang:hover{color:var(--color-white);border-color:var(--color-white)}.hero{padding:clamp(3rem,8vw,5.5rem) 0 clamp(3rem,8vw,6.25rem);position:relative;overflow:hidden}.hero__inner{grid-template-columns:1fr;align-items:center;gap:2.5rem;display:grid}@media (width>=768px){.hero__inner{grid-template-columns:1fr auto;gap:4rem}}.hero__content{max-width:560px}.hero__greeting{color:var(--color-gray);margin-bottom:.5rem;font-size:1rem}.hero__name{color:var(--color-white);letter-spacing:-.03em;margin-bottom:1rem;font-size:clamp(1.75rem,8vw,3.625rem);font-weight:700;line-height:1.1}.hero__tagline{color:var(--color-gray);align-items:center;margin-bottom:1.75rem;font-size:clamp(1rem,3vw,1.125rem);display:flex}.hero__tagline-accent{color:var(--color-primary);font-weight:500}.hero__desc{color:var(--color-gray);max-width:480px;margin-bottom:clamp(1.75rem,5vw,2.75rem);font-size:.9375rem;line-height:1.75}.hero__actions{flex-wrap:wrap;gap:1rem;display:flex}.hero__visual{flex-direction:column;flex-shrink:0;align-items:flex-end;gap:20px;display:none}@media (width>=768px){.hero__visual{display:flex}}.hero__portrait-wrap{position:relative}.hero__portrait-accent{border:1px solid var(--color-primary);z-index:0;position:absolute;inset:14px -14px -14px 14px}.hero__portrait{z-index:1;border:1px solid var(--color-primary);background:#c778dd0a;justify-content:center;align-items:center;width:clamp(11.25rem,25vw,15rem);height:clamp(13.125rem,29vw,17.5rem);display:flex;position:relative}.hero__portrait-initials{color:var(--color-primary);opacity:.4;letter-spacing:-.04em;font-size:clamp(2.5rem,6vw,3.5rem);font-weight:700}.hero__dots{align-self:flex-end}.hero__dots-corner{position:absolute;bottom:0;left:0}.about__inner{grid-template-columns:1fr;align-items:start;gap:2.5rem;margin-top:3rem;display:grid}@media (width>=768px){.about__inner{grid-template-columns:1fr auto;gap:5rem}}.about__text p{color:var(--color-gray);font-size:.9375rem;line-height:1.8}.about__quote{border-left:2px solid var(--color-primary);margin-top:2rem;padding-left:1.25rem}.about__quote blockquote{color:var(--color-gray);margin:0;font-size:.875rem;font-style:italic}.about__sidebar{flex-flow:wrap;flex-shrink:0;align-items:flex-start;gap:1.5rem;display:flex}@media (width>=768px){.about__sidebar{flex-direction:column;align-items:flex-end}}.about__dots{opacity:.9}.about__card{border:1px solid var(--color-border);width:100%;max-width:24rem;padding:1.25rem 1.5rem}@media (width>=768px){.about__card{width:16rem}}.about__card-row{border-bottom:1px solid #abb2bf1f;justify-content:space-between;align-items:center;gap:1rem;padding:.625rem 0;font-size:.875rem;display:flex}.about__card-row:last-child{border-bottom:none}.about__card-label{color:var(--color-gray)}.about__card-value{color:var(--color-primary);text-align:right;font-weight:500}.about__status{align-items:center;gap:6px;display:flex}.about__status-dot{background:#4caf82;border-radius:50%;flex-shrink:0;width:8px;height:8px}.skills__grid{border:1px solid #abb2bf33;grid-template-columns:1fr;gap:1px;margin-top:3rem;display:grid}@media (width>=600px){.skills__grid{grid-template-columns:repeat(2,1fr)}}@media (width>=960px){.skills__grid{grid-template-columns:repeat(3,1fr)}}.skills__card{border:1px solid #abb2bf33;margin:-1px;padding:clamp(1rem,4vw,1.75rem);transition:border-color .2s,background .2s}.skills__card:hover{border-color:var(--color-primary);z-index:1;background:#c778dd08;position:relative}.skills__category{color:var(--color-primary);border-bottom:1px solid #abb2bf26;margin-bottom:1rem;padding-bottom:.75rem;font-size:1rem;font-weight:600}.skills__list{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.skills__item{color:var(--color-gray);align-items:center;gap:.5rem;font-size:.875rem;line-height:1.5;display:flex}.skills__item:before{content:"▹";color:var(--color-primary);flex-shrink:0;font-size:.75rem}.projects__header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1.5rem;display:flex}.projects__header .section-title{flex:1}.projects__view-all{flex-shrink:0;align-self:flex-end;margin-bottom:2px}.projects__grid{grid-template-columns:1fr;gap:1.5rem;margin-top:2.5rem;display:grid}@media (width>=600px){.projects__grid{grid-template-columns:repeat(2,1fr)}}@media (width>=960px){.projects__grid{grid-template-columns:repeat(3,1fr)}}.project-card{border:1px solid #abb2bf40;flex-direction:column;transition:border-color .2s,background .2s;display:flex}.project-card:hover{border-color:var(--color-primary);background:#c778dd08}.project-card__thumb{aspect-ratio:16/9;border-bottom:1px solid #abb2bf40;overflow:hidden}.project-card__thumb img{object-fit:cover;width:100%;height:100%;display:block}.project-card__thumb-placeholder{background:#c778dd0a;justify-content:center;align-items:center;width:100%;height:100%;display:flex}.project-card__thumb-icon{color:var(--color-primary);opacity:.3;letter-spacing:-.04em;font-size:1.75rem;font-weight:700}.project-card__tags{flex-wrap:wrap;gap:.5rem;padding:1rem 1.25rem 0;display:flex}.project-card__tag{color:var(--color-gray);white-space:nowrap;border:1px solid #abb2bf4d;padding:2px 8px;font-size:.75rem}.project-card__body{flex:1;padding:.875rem 1.25rem 1rem}.project-card__title{color:var(--color-white);margin-bottom:.5rem;font-size:1rem;font-weight:600}.project-card__desc{color:var(--color-gray);font-size:.8125rem;line-height:1.7}.project-card__footer{padding:0 1.25rem 1.25rem}.experience__list{flex-direction:column;gap:1rem;margin-top:3rem;display:flex}.exp-card{border:1px solid #abb2bf40;padding:clamp(1rem,4vw,1.75rem) clamp(1rem,4vw,2rem);transition:border-color .2s,background .2s}.exp-card:hover{border-color:var(--color-primary);background:#c778dd08}.exp-card__header{flex-direction:column;gap:.5rem;margin-bottom:1rem;display:flex}@media (width>=640px){.exp-card__header{flex-direction:row;justify-content:space-between;align-items:flex-start;gap:1rem}}.exp-card__role{color:var(--color-white);margin-bottom:.25rem;font-size:1.0625rem;font-weight:600}.exp-card__company{color:var(--color-primary);font-size:.875rem}.exp-card__period{color:var(--color-gray);white-space:nowrap;border:1px solid #abb2bf40;flex-shrink:0;align-self:flex-start;padding:4px 12px;font-size:.75rem}.exp-card__highlights{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.exp-card__highlights li{color:var(--color-gray);gap:.75rem;font-size:.875rem;line-height:1.65;display:flex}.exp-card__bullet{color:var(--color-primary);flex-shrink:0;margin-top:2px;font-size:.75rem}.experience__edu{margin-top:3.5rem}.experience__edu-title{color:var(--color-white);align-items:center;gap:0;margin-bottom:1.5rem;font-size:1.5rem;font-weight:500;display:flex}.experience__edu-title .hash{color:var(--color-primary)}.edu-cards{grid-template-columns:1fr;gap:1rem;display:grid}@media (width>=640px){.edu-cards{grid-template-columns:repeat(2,1fr)}}.edu-card{border:1px solid #abb2bf40;padding:1.5rem 1.75rem;transition:border-color .2s}.edu-card:hover{border-color:var(--color-primary)}.edu-card__degree{color:var(--color-white);margin-bottom:.375rem;font-size:1rem;font-weight:600}.edu-card__school{color:var(--color-primary);margin-bottom:.5rem;font-size:.875rem}.edu-card__meta{color:var(--color-gray);font-size:.8125rem}.contact__inner{grid-template-columns:1fr;align-items:start;gap:2.5rem;margin-top:3rem;display:grid}@media (width>=768px){.contact__inner{grid-template-columns:1fr 1fr;gap:5rem}}.contact__text p{color:var(--color-gray);margin-bottom:1rem;font-size:.9375rem;line-height:1.8}.contact__dots{margin-top:2rem}.contact__card{border:1px solid #abb2bf40;flex-direction:column;gap:1.5rem;padding:clamp(1.25rem,4vw,2rem);display:flex}.contact__item{flex-direction:column;gap:6px;display:flex}.contact__label{color:var(--color-primary);font-size:.75rem;font-weight:500}.contact__value{color:var(--color-white);font-size:.9375rem}.contact__link{transition:color .2s}.contact__link:hover{color:var(--color-primary)}.contact__divider{background:#abb2bf26;height:1px}.contact__actions-row{flex-wrap:wrap;gap:.75rem;display:flex}.footer{border-top:1px solid #abb2bf40;margin-top:1rem;padding:2rem 0}.footer__inner{text-align:center;flex-flow:column wrap;align-items:center;gap:1rem;display:flex}@media (width>=640px){.footer__inner{text-align:left;flex-direction:row;justify-content:space-between;align-items:center;gap:1.5rem}}.footer__brand{color:var(--color-white);font-size:1rem;font-weight:600}.footer__copy{color:#abb2bf99;font-size:.8125rem}.footer__nav{flex-wrap:wrap;justify-content:center;gap:.75rem 1.5rem;display:flex}@media (width>=640px){.footer__nav{justify-content:flex-start}}.footer__nav a{color:var(--color-gray);font-size:.875rem;transition:color .2s}.footer__nav a:hover{color:var(--color-white)}
