@import url(https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;0,800;1,300;1,400;1,500;1,600&family=Inter:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap);.about-section{padding-top:0;width:100%}.about-section__inner{grid-gap:3rem;display:grid;gap:3rem;grid-template-columns:160px 1fr;width:100%}@media screen and (max-width:768px){.about-section__inner{gap:1.5rem;grid-template-columns:1fr}}.about-section__label-col{padding-top:.25rem}.about-section__rule{background:var(--accent);height:1px;margin-top:.75rem;opacity:.6;width:24px}.about-section__text-col{display:flex;flex-direction:column;gap:1rem}.about-section__bio{color:var(--text-secondary);font-family:var(--font-body);font-size:clamp(1rem,2vw,1.1rem);line-height:1.8;max-width:600px}.about-section__bio--secondary{color:var(--text-muted);font-size:.95rem}.about-education{margin-top:3rem;max-width:600px;width:100%}.exp-entry__courses{display:flex;flex-direction:column;gap:.5rem;margin-top:1.25rem}.exp-entry__courses-label{color:var(--text-muted);font-family:var(--font-body);font-size:.62rem;font-weight:600;letter-spacing:.15em;text-transform:uppercase}.exp-entry__courses-grid{grid-gap:.5rem;display:grid;gap:.5rem;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));margin-top:.25rem}@media screen and (max-width:580px){.exp-entry__courses-grid{grid-template-columns:1fr}}.exp-entry__course-item{align-items:baseline;background:#0000;border-bottom:1px dotted var(--border);display:flex;font-family:var(--font-body);gap:.6rem;padding:.35rem 0;transition:border-color .25s ease}.exp-entry__course-item:hover{border-color:var(--accent)}.exp-entry__course-code{color:var(--accent);font-family:var(--font-mono);font-size:.7rem;font-weight:500;white-space:nowrap}.exp-entry__course-name{color:var(--text-secondary);font-family:var(--font-body);font-size:.8rem;line-height:1.4}.footer-section__wrapper{flex:1 1;width:100%}#contact,.footer-section__wrapper{display:flex;flex-direction:column}#contact{align-items:stretch;padding-bottom:2.5rem}@media screen and (max-width:768px){#contact{padding-bottom:2rem}}#contact .app__section-inner{justify-content:space-between}#contact .app__section-inner,.footer-section{display:flex;flex:1 1;flex-direction:column;width:100%}.footer-section{align-items:flex-start;gap:2.2rem;justify-content:center;padding:1.5rem 0}.footer-section__header-group{display:flex;flex-direction:column;gap:.25rem}.footer-section__sub{color:var(--text-muted);font-family:var(--font-body);font-size:clamp(1.05rem,2.5vw,1.25rem);font-weight:400;letter-spacing:-.01em}.footer-section__headline{color:var(--text-primary);font-family:var(--font-serif);font-size:clamp(1.8rem,4.5vw,2.8rem);font-weight:300;letter-spacing:-.01em;line-height:1.25;max-width:600px}.footer-section__headline em{color:var(--accent);font-style:italic}.footer-section__email-container{align-items:flex-start;display:flex;flex-direction:column;gap:.8rem}.footer-section__arrow{color:var(--accent);font-family:var(--font-body);font-size:1.6rem;line-height:1}.footer-section__links-group{align-items:center;display:flex;flex-wrap:wrap;gap:1.5rem}.footer-section__divider{color:var(--border-hover)}.footer-section__divider,.footer-section__email,.footer-section__instagram{font-family:var(--font-body);font-size:clamp(1.2rem,3vw,1.8rem);font-weight:300}.footer-section__email,.footer-section__instagram{border-bottom:1px solid var(--border);color:var(--text-primary);cursor:none;letter-spacing:-.01em;padding-bottom:.25rem;text-decoration:none;transition:color .25s ease,border-color .25s ease}.footer-section__email:hover,.footer-section__instagram:hover{border-bottom-color:var(--accent);color:var(--accent)}.footer-section__social{align-items:center;display:flex;flex-wrap:wrap;gap:2rem;margin-top:.5rem}.footer-social-link{align-items:center;color:var(--text-muted);cursor:none;display:inline-flex;font-family:var(--font-body);font-size:.8rem;font-weight:500;gap:.4rem;letter-spacing:.08em;text-decoration:none;text-transform:uppercase;transition:color .25s ease}.footer-social-link svg{font-size:1rem}.footer-social-link:hover{color:var(--text-primary)}.copyright{margin-top:auto;padding-top:1.5rem;text-align:left}.copyright p{font-size:.72rem;letter-spacing:.06em}#home{min-height:calc(100vh - var(--navbar-height) - 16px);min-height:calc(100vh - var(--navbar-height) - var(--frame-gap, 8px)*2);padding-bottom:2rem;padding-top:2rem}#home,.hero{align-items:center;display:flex}.hero{gap:5rem;justify-content:space-between;width:100%}@media screen and (max-width:968px){.hero{flex-direction:column-reverse;gap:3rem;text-align:left}}.hero__content{flex:1 1;gap:1.5rem}.hero__content,.hero__intro{display:flex;flex-direction:column}.hero__intro{gap:.5rem}.hero__name{color:var(--text-primary);font-family:var(--font-serif);font-size:clamp(3.2rem,7.8vw,5.8rem);line-height:1.05;margin-left:-.03em}.hero__name,.hero__role{font-weight:300;letter-spacing:-.01em}.hero__role{color:var(--text-secondary);font-family:var(--font-body);font-size:clamp(1.3rem,3.2vw,1.85rem);line-height:1.25}.hero__meta{align-items:center;display:flex;gap:.5rem;margin-top:.25rem}.hero__location{color:var(--text-muted);font-family:var(--font-mono);font-size:.85rem;letter-spacing:.1em;text-transform:uppercase}.hero__social .social-link{font-size:1.1rem}.hero__cta{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:.25rem}@media screen and (max-width:480px){.hero__cta{flex-direction:column}}.hero__image-wrapper{align-items:center;display:flex;flex:0 0 auto;justify-content:center}@media screen and (max-width:968px){.hero__image-wrapper{justify-content:flex-start;width:100%}}.hero__image-frame{border:1px solid var(--border);border-radius:var(--radius-md);height:400px;overflow:hidden;position:relative;width:320px}@media screen and (max-width:1100px){.hero__image-frame{height:330px;width:260px}}@media screen and (max-width:480px){.hero__image-frame{height:250px;width:200px}}.hero__image-frame:after{background:linear-gradient(to bottom,#0000 60%,color-mix(in srgb,var(--bg) 30%,#0000) 100%);content:"";inset:0;position:absolute}.hero__image{filter:grayscale(8%);height:100%;object-fit:cover;transition:filter .4s ease;width:100%}.hero__image:hover{filter:grayscale(0)}.skills-section,.skills-section__wrapper{width:100%}.skills-section__header{margin-bottom:3rem}.skills-categories{grid-gap:2.5rem;display:grid;gap:2.5rem;grid-template-columns:repeat(4,1fr);margin-bottom:4rem}@media screen and (max-width:900px){.skills-categories{grid-template-columns:repeat(2,1fr)}}@media screen and (max-width:480px){.skills-categories{gap:1.75rem;grid-template-columns:1fr 1fr}}.skills-category{display:flex;flex-direction:column;gap:.5rem}.skills-category--learning{opacity:.65}.skills-category__label{color:var(--text-muted);font-family:var(--font-body);font-size:.68rem;font-weight:500;letter-spacing:.18em;text-transform:uppercase}.skills-category__rule{background:var(--border);height:1px;margin-bottom:.75rem;width:100%}.skills-category__rule--accent{background:linear-gradient(to right,var(--accent),#0000);opacity:.4}.skills-category__list{display:flex;flex-direction:column;gap:.55rem;list-style:none}.skill-row{align-items:center;display:flex;gap:.55rem}.skill-row--dim{opacity:.7}.skill-row__icon{align-items:center;display:flex;flex-shrink:0;height:16px;width:16px}.skill-row__img{filter:grayscale(1) brightness(.65);height:16px;object-fit:contain;transition:filter .25s ease;width:16px}.skill-row:hover .skill-row__img{filter:grayscale(.3) brightness(.85)}.skill-row__dot{background:var(--text-muted);border-radius:50%;flex-shrink:0;height:4px;margin-left:6px;width:4px}.skill-row__name{color:var(--text-secondary);font-family:var(--font-mono);font-size:.82rem;transition:color .25s ease}.skill-row:hover .skill-row__name{color:var(--text-primary)}.experience-section{border-top:1px solid var(--border);padding-top:3rem}.experience-cols{display:grid;grid-template-columns:1fr;margin-top:1.5rem;max-width:600px}.exp-col{display:flex;flex-direction:column;gap:.5rem}.exp-col__label{color:var(--text-muted);font-family:var(--font-body);font-size:.68rem;font-weight:500;letter-spacing:.18em;text-transform:uppercase}.exp-col__rule{background:var(--border);height:1px;margin-bottom:1rem;width:100%}.exp-entry{margin-bottom:1.25rem}.exp-entry:last-child{margin-bottom:0}.exp-entry__title{color:var(--text-primary);font-family:var(--font-body);font-size:.9rem;font-weight:500;line-height:1.4;margin-bottom:.2rem}.exp-entry__sub{color:var(--text-muted);font-family:var(--font-mono);font-size:.75rem}.exp-entry__desc{color:var(--text-secondary);font-family:var(--font-body);font-size:.83rem;line-height:1.5;margin-top:.3rem;max-width:380px}#work{overflow:visible}.work-section__wrapper{width:100%}.work-section{margin:0 auto;width:100%}.work-section__header{margin-bottom:1.5rem}.work-section__filters{align-items:center;border-bottom:1px solid var(--border);justify-content:space-between;margin-bottom:2rem;padding-bottom:.75rem}.work-section__filter-buttons,.work-section__filters{display:flex;flex-wrap:wrap;gap:1.5rem}.work-section__hint{align-items:center;color:var(--text-muted);display:inline-flex;font-family:var(--font-mono);font-size:.72rem;gap:.45rem;letter-spacing:.04em}.work-section__hint .hint-dot{background:var(--accent);border-radius:50%;display:inline-block;height:6px;width:6px}.work-filter{background:none;border:none;color:var(--text-muted);cursor:none;font-family:var(--font-body);font-size:.75rem;font-weight:500;letter-spacing:.08em;padding:0;text-transform:uppercase;transition:color .25s ease}.work-filter:hover{color:var(--text-secondary)}.work-filter--active{border-bottom:1px solid var(--accent);color:var(--text-primary);margin-bottom:-2px;padding-bottom:1px}.work-section__list{border-top:1px solid var(--border)}.project-row,.work-section__list{display:flex;flex-direction:column}.project-row{border-bottom:1px solid var(--border);padding:2rem 0;position:relative;transition:padding-left .35s var(--ease-slow),padding-right .35s var(--ease-slow),border-color .35s var(--ease-slow),background-color .35s var(--ease-slow)}.project-row--active,.project-row--hovered{border-color:var(--border-hover);padding-left:.75rem}.project-row--active{background-color:var(--accent-dim);padding-right:.75rem}.project-row--selected{background-color:var(--bg-surface-hover);border-color:var(--accent);padding-left:.75rem;padding-right:.75rem}.project-row__main{align-items:center;display:flex;gap:2rem;justify-content:space-between;position:relative;width:100%}@media screen and (max-width:768px){.project-row__main{align-items:flex-start;flex-direction:column;gap:1rem}}.project-row__left{align-items:baseline;display:flex;flex:1 1;gap:1.5rem}.project-row__index{color:var(--text-muted);flex-shrink:0;font-family:var(--font-mono);font-size:.8rem;letter-spacing:.05em}.project-row__title-group{align-items:baseline;display:flex;flex-wrap:wrap;gap:.85rem}.project-row__title{color:var(--text-primary);font-family:var(--font-serif);font-size:clamp(1.4rem,3.5vw,2.2rem);font-weight:300;letter-spacing:-.01em;line-height:1.1;transition:color .3s ease}.project-row--active .project-row__title,.project-row--hovered .project-row__title,.project-row--selected .project-row__title,.project-row:hover .project-row__title{color:var(--accent)}.project-row__click-hint{color:var(--text-muted);font-family:var(--font-mono);font-size:.7rem;letter-spacing:.06em;opacity:0;transform:translateX(-4px);transition:opacity .25s ease,transform .25s ease,color .25s ease;white-space:nowrap}.project-row--active .project-row__click-hint,.project-row--hovered .project-row__click-hint,.project-row:hover .project-row__click-hint{color:var(--accent);opacity:1;transform:translateX(0)}@media screen and (max-width:1024px){.project-row__click-hint{font-size:.65rem;opacity:.8;transform:none}}.project-row__meta-right{align-items:center;display:flex;gap:2rem}@media screen and (max-width:768px){.project-row__meta-right{justify-content:space-between;width:100%}}.project-row__type{border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-muted);font-family:var(--font-mono);font-size:.68rem;letter-spacing:.08em;padding:.2rem .6rem;text-transform:uppercase;white-space:nowrap}.project-row__links{align-items:center;display:flex;gap:.75rem}.project-row__link{align-items:center;border:1px solid var(--border);border-radius:50%;color:var(--text-muted);display:inline-flex;height:32px;justify-content:center;transition:color .3s ease,border-color .3s ease,background .3s ease;width:32px}.project-row__link svg{font-size:1.05rem}.project-row__link:hover{background:var(--bg-surface);border-color:var(--border-hover);color:var(--text-primary)}.project-row__link--youtube{border-color:#c9544d40;color:#c9544d}.project-row__link--youtube:hover{background:#c9544d0d;border-color:#c9544d80;color:#e06560}.project-row__link--visit{border-color:var(--accent-dim);border-radius:var(--radius-sm);color:var(--accent);font-family:var(--font-body);font-size:.72rem;font-weight:500;height:auto;letter-spacing:.05em;padding:.3rem .8rem;width:auto}.project-row__link--visit:hover{background:var(--accent-dim);border-color:var(--accent)}.project-row__details-inner{display:flex;flex-direction:column;gap:1.25rem;max-width:800px;padding-bottom:.5rem;padding-top:1.25rem}.project-row__mobile-image{aspect-ratio:16/10;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);display:block;margin-bottom:.5rem;overflow:hidden;width:100%}@media screen and (min-width:1025px){.project-row__mobile-image{display:none}}.project-row__mobile-img{filter:saturate(.9) contrast(1.05);height:100%;object-fit:cover;width:100%}.project-row__desc{color:var(--text-secondary);font-family:var(--font-body);font-size:clamp(.9rem,2vw,1.02rem);line-height:1.7}.project-row__subdetails{border-top:1px solid var(--border);display:flex;flex-wrap:wrap;gap:2.5rem;padding-top:1rem}.project-row__subdetail-item{display:flex;flex-direction:column;gap:.2rem}.project-row__subdetail-label{color:var(--text-muted);font-family:var(--font-body);font-size:.65rem;font-weight:600;letter-spacing:.15em;text-transform:uppercase}.project-row__subdetail-value{color:var(--text-secondary);font-family:var(--font-body);font-size:.85rem}.project-row__subdetail-value.tech-tag{color:var(--text-muted);font-family:var(--font-mono);font-size:.78rem}.project-row__impact{background:var(--accent-dim);border:1px solid var(--border);border-radius:var(--radius-sm);max-width:600px;padding:.75rem 1rem}.project-row__impact-label{color:var(--accent);display:block;font-family:var(--font-body);font-size:.65rem;font-weight:600;letter-spacing:.15em;margin-bottom:.25rem;text-transform:uppercase}.project-row__impact-text{color:var(--text-secondary);font-family:var(--font-body);font-size:.85rem;line-height:1.6}.work-section__container{grid-gap:2rem;display:grid;gap:2rem;grid-template-columns:1fr;margin-top:1.5rem;width:100%}@media screen and (min-width:1025px){.work-section__container{gap:2rem;grid-template-columns:1fr 420px}}.work-section__list-col{width:100%}.work-section__showcase-col{position:relative;width:100%}.work-showcase__sticky-wrapper{padding-bottom:2rem;position:sticky;top:100px}.work-showcase__card{background:var(--bg-surface);border:1px solid var(--border);border-radius:0;box-shadow:0 20px 40px #0000001f,0 0 0 1px var(--border);margin-left:0;max-width:420px;overflow:hidden;transition:background-color .35s var(--ease-in-out),border-color .35s var(--ease-in-out);width:100%}.work-showcase__image-container{background:var(--bg-outer);border-bottom:1px solid var(--border);height:180px;overflow:hidden;position:relative;width:100%}.work-showcase__image{filter:saturate(.9) contrast(1.02);height:100%;left:0;object-fit:cover;position:absolute;top:0;transition:transform .8s cubic-bezier(.16,1,.3,1);width:100%}.work-showcase__card:hover .work-showcase__image{transform:scale(1.03)}.work-showcase__image-overlay{background:linear-gradient(180deg,#0000 50%,#07150e26);inset:0;pointer-events:none;position:absolute}.work-showcase__content{display:flex;flex-direction:column;gap:.75rem;padding:1.25rem 1.5rem}.work-showcase__header{align-items:center;color:var(--text-muted);display:flex;flex-wrap:wrap;font-family:var(--font-mono);font-size:.68rem;gap:.5rem;letter-spacing:.05em;text-transform:uppercase}.work-showcase__type-badge{border:1px solid var(--border);border-radius:var(--radius-sm);font-size:.6rem;padding:.1rem .4rem}.work-showcase__title{color:var(--text-primary);font-family:var(--font-serif);font-size:1.45rem;font-weight:300;letter-spacing:-.01em;line-height:1.15}.work-showcase__desc{color:var(--text-secondary);font-family:var(--font-body);font-size:.85rem;line-height:1.5}.work-showcase__tags{color:var(--text-muted);font-family:var(--font-mono);font-size:.7rem;line-height:1.45;margin-top:.1rem}.work-showcase__impact{background:var(--accent-dim);border:1px solid var(--border);border-radius:var(--radius-sm);margin-top:.1rem;padding:.5rem .75rem}.work-showcase__impact-label{color:var(--accent);display:block;font-family:var(--font-body);font-size:.6rem;font-weight:600;letter-spacing:.1em;margin-bottom:.1rem;text-transform:uppercase}.work-showcase__impact-text{color:var(--text-secondary);font-family:var(--font-body);font-size:.78rem;line-height:1.4}.work-showcase__footer-links{border-top:1px solid var(--border);display:flex;flex-wrap:wrap;gap:.75rem;margin-top:.25rem;padding-top:.75rem}.work-showcase__footer-links .btn-editorial{border-left:none;border-radius:0;border-right:none;cursor:none;font-size:.7rem;gap:.4rem;padding:.45rem 1rem}.work-showcase__footer-links .btn-editorial svg{font-size:.95rem}.work-showcase__footer-links .btn-editorial--youtube{background:#0000;border:1px solid #ff000040;border-left:none;border-right:none;color:red}.work-showcase__footer-links .btn-editorial--youtube:before{background:red}.work-showcase__footer-links .btn-editorial--youtube:hover{border-color:red;color:#fff}.work-showcase__footer-links .btn-editorial--github{background:#0000;border-bottom:1px solid var(--border);border-left:none;border-right:none;border-top:1px solid var(--border)}.work-showcase__footer-links .btn-editorial--github:before{background:#12181b}[data-theme=dark] .work-showcase__footer-links .btn-editorial--github:before{background:#000}.work-showcase__footer-links .btn-editorial--github:hover{border-color:#12181b;color:#fff}[data-theme=dark] .work-showcase__footer-links .btn-editorial--github:hover{border-color:#000}.project-row__type--wip{align-items:center;background:#22c55e0d!important;border-color:#22c55e40!important;color:var(--cat-mobile)!important;display:inline-flex;gap:.35rem}.project-row__type--wip:before{animation:wipPulse 1.8s ease-in-out infinite;background-color:var(--cat-mobile);border-radius:50%;content:"";height:6px;width:6px}@keyframes wipPulse{0%{box-shadow:0 0 0 0 #22c55e66;opacity:.6;transform:scale(.9)}50%{box-shadow:0 0 0 4px #22c55e00;opacity:1;transform:scale(1.18)}to{box-shadow:0 0 0 0 #22c55e00;opacity:.6;transform:scale(.9)}}.work-empty-state{align-items:center;border-bottom:1px solid var(--border);color:var(--text-muted);display:flex;flex-direction:column;font-family:var(--font-body);font-size:clamp(.95rem,2vw,1.1rem);justify-content:center;padding:5rem 2rem;text-align:center;width:100%}.work-empty-state p{font-weight:300;letter-spacing:-.01em;margin:0}.resume-section{margin:0 auto;max-width:900px;padding:4rem 1.5rem;width:100%}@media screen and (max-width:768px){.resume-section{padding:2.5rem 1rem}}.resume-section__actions{align-items:center;display:flex;gap:1rem;justify-content:space-between;margin-bottom:2.5rem;width:100%}@media screen and (max-width:480px){.resume-section__actions{align-items:stretch;flex-direction:column}}.resume-section__actions a,.resume-section__actions button{align-items:center;border-left:none;border-radius:0;border-right:none;cursor:none;display:inline-flex;font-family:var(--font-body);font-size:.82rem;font-weight:500;gap:.6rem;justify-content:center;letter-spacing:.04em;overflow:hidden;padding:.75rem 1.5rem;position:relative;text-decoration:none;transition:border-color .35s ease,color .35s ease;white-space:nowrap;z-index:1}.resume-section__actions a svg,.resume-section__actions button svg{font-size:.95rem}.resume-section__actions a:before,.resume-section__actions button:before{bottom:-1px;content:"";left:0;position:absolute;right:0;top:-1px;transform:scaleX(0);transform-origin:center;transition:transform .35s cubic-bezier(.22,1,.36,1);z-index:-1}.resume-section__actions a:hover:before,.resume-section__actions button:hover:before{transform:scaleX(1)}.resume-section__actions .btn-resume-back{background:#0000;border-bottom:1px solid var(--border);border-left:none;border-right:none;border-top:1px solid var(--border);color:var(--text-secondary)}.resume-section__actions .btn-resume-back:before{background:var(--bg-surface)}.resume-section__actions .btn-resume-back:hover{border-color:var(--border-hover);color:var(--text-primary)}.resume-section__actions .btn-resume-download{background:var(--accent);border-bottom:1px solid var(--accent);border-left:none;border-right:none;border-top:1px solid var(--accent);color:var(--bg)}[data-theme=dark] .resume-section__actions .btn-resume-download{background:var(--text-primary);border-bottom:1px solid var(--text-primary);border-top:1px solid var(--text-primary);color:var(--bg)}.resume-section__actions .btn-resume-download:before{background:var(--text-primary)}[data-theme=dark] .resume-section__actions .btn-resume-download:before{background:var(--accent)}.resume-section__actions .btn-resume-download:hover{border-color:var(--text-primary);color:var(--bg)}[data-theme=dark] .resume-section__actions .btn-resume-download:hover{border-color:var(--accent)}.resume-sheet{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:0 30px 60px #00000014,0 0 0 1px var(--border);padding:4rem 4.5rem;transition:background-color .35s var(--ease-in-out),border-color .35s var(--ease-in-out)}@media screen and (max-width:768px){.resume-sheet{padding:2.5rem 2rem}}@media screen and (max-width:480px){.resume-sheet{padding:2rem 1.25rem}}.resume-sheet__header{border-bottom:2px solid var(--border);margin-bottom:2.5rem;padding-bottom:2rem;text-align:center}.resume-sheet__header .resume-name{color:var(--text-primary);font-family:var(--font-serif);font-size:clamp(2rem,5vw,3rem);font-weight:300;letter-spacing:-.02em;line-height:1.15;margin-bottom:.35rem}.resume-sheet__header .resume-subtitle{color:var(--text-muted);font-family:var(--font-mono);font-size:.78rem;letter-spacing:.12em;margin-bottom:1.25rem;text-transform:uppercase}.resume-contact-grid{align-items:center;display:flex;flex-wrap:wrap;font-family:var(--font-body);font-size:.8rem;gap:1rem 1.5rem;justify-content:center}.resume-contact-grid .contact-item{align-items:center;color:var(--text-secondary);cursor:none;display:inline-flex;gap:.4rem;text-decoration:none;transition:color .25s ease}.resume-contact-grid .contact-item svg{color:var(--text-muted);font-size:.88rem;transition:color .25s ease}.resume-contact-grid .contact-item:hover{color:var(--accent)}[data-theme=dark] .resume-contact-grid .contact-item:hover{color:var(--text-primary)}.resume-contact-grid .contact-item:hover svg{color:var(--accent)}[data-theme=dark] .resume-contact-grid .contact-item:hover svg{color:var(--text-primary)}.resume-sheet__section{margin-bottom:2.25rem}.resume-sheet__section:last-child{margin-bottom:0}.resume-sheet__section .resume-section-title{border-bottom:1px solid var(--border);color:var(--text-primary);font-family:var(--font-serif);font-size:1.15rem;font-weight:600;letter-spacing:.08em;margin-bottom:1.25rem;padding-bottom:.4rem;text-transform:uppercase}.education-block,.experience-block,.project-block{margin-bottom:1.5rem}.education-block:last-child,.experience-block:last-child,.project-block:last-child{margin-bottom:0}.block-header{align-items:baseline;display:flex;gap:1rem;justify-content:space-between;margin-bottom:.2rem}@media screen and (max-width:600px){.block-header{flex-direction:column;gap:.15rem}}.block-header .block-title{color:var(--text-primary);font-family:var(--font-body);font-size:.98rem;font-weight:600}.block-header .block-date,.block-header .block-location{color:var(--text-muted);font-family:var(--font-mono);font-size:.72rem}.block-header .block-tech{background:var(--bg-surface-hover);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-muted);font-family:var(--font-mono);font-size:.75rem;padding:.15rem .45rem}.block-sub{align-items:baseline;display:flex;font-size:.85rem;gap:1rem;justify-content:space-between;margin-bottom:.5rem}@media screen and (max-width:600px){.block-sub{flex-direction:column;gap:.1rem}}.block-sub .block-degree{color:var(--text-secondary);font-weight:500}.block-sub .block-company{color:var(--text-secondary);font-style:italic}.block-details{line-height:1.5}.block-details,.bullet-list{color:var(--text-secondary);font-family:var(--font-body);font-size:.85rem}.bullet-list{line-height:1.55;margin:0;padding-left:1.15rem}.bullet-list li{margin-bottom:.35rem}.bullet-list li:last-child{margin-bottom:0}.skills-grid{display:flex;flex-direction:column;gap:.85rem}.skills-category{grid-gap:1.5rem;align-items:center;display:grid;gap:1.5rem;grid-template-columns:160px 1fr}@media screen and (max-width:600px){.skills-category{align-items:flex-start;gap:.35rem;grid-template-columns:1fr}}.skills-category .category-label{color:var(--text-muted);font-family:var(--font-body);font-size:.75rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.skills-tags{display:flex;flex-wrap:wrap;gap:.4rem .6rem}.skill-badge{background:var(--bg-surface-hover);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-secondary);font-family:var(--font-mono);font-size:.72rem;padding:.2rem .5rem;transition:all .25s ease}.skill-badge:hover{border-color:var(--border-hover);color:var(--text-primary);transform:translateY(-1px)}.navbar{align-items:center;background:var(--navbar-bg);display:flex;height:var(--navbar-height);justify-content:space-between;left:0;position:fixed;right:0;top:0;transition:padding .4s var(--ease-out),background .4s var(--ease-out),border-color .4s var(--ease-out),box-shadow .4s var(--ease-out);z-index:10000}.navbar,.navbar--scrolled{border-bottom:none;padding:0 6vw}.navbar--scrolled{box-shadow:0 8px 32px #00000014}@media screen and (max-width:768px){.navbar,.navbar--scrolled{padding:0 5vw}}.navbar__logo{background:none;border:none;color:var(--navbar-text);cursor:none;font-family:var(--font-serif);font-size:1.3rem;font-style:italic;font-weight:400;letter-spacing:.02em;padding:0;transition:color .25s ease,opacity .25s ease;z-index:101}.navbar__logo:hover{opacity:.8}.navbar__links{align-items:center;display:flex;gap:.25rem;left:50%;list-style:none;position:absolute;transform:translateX(-50%)}@media screen and (max-width:768px){.navbar__links{display:none}}.navbar__link{background:none;border:none;color:var(--navbar-text-muted);cursor:none;display:block;font-family:var(--font-body);font-size:.72rem;font-weight:500;letter-spacing:.14em;padding:.4rem .85rem;text-transform:uppercase;transition:color .25s ease}.navbar__link--active,.navbar__link:hover{color:var(--navbar-text)}.navbar__link--active{position:relative}.navbar__link--active:after{background:var(--navbar-text);border-radius:50%;bottom:-4px;content:"";height:4px;left:50%;position:absolute;transform:translateX(-50%);width:4px}.navbar__right{align-items:center;display:flex;gap:1.25rem}@media screen and (max-width:768px){.navbar__right{display:none}}.navbar__right .theme-toggle{color:var(--navbar-text)!important;opacity:.85;transition:opacity .25s ease}.navbar__right .theme-toggle:hover{opacity:1}.navbar__right .theme-toggle__track{background:var(--navbar-toggle-track)!important;border-color:var(--navbar-border)!important}.navbar__right .theme-toggle__thumb{background:var(--navbar-text)!important}.navbar__resume{border-bottom:1px solid #0000;color:var(--navbar-text-muted);font-family:var(--font-body);font-size:.72rem;font-weight:500;letter-spacing:.12em;padding:.4rem 0;text-decoration:none;text-transform:uppercase;transition:color .25s ease,border-color .25s ease}.navbar__resume--active,.navbar__resume:hover{border-bottom-color:var(--navbar-text);color:var(--navbar-text)}.navbar__mobile-toggle{align-items:center;background:none;border:none;color:var(--navbar-text-muted);cursor:none;display:none;height:36px;justify-content:center;width:36px;z-index:101}.navbar__mobile-toggle svg{height:22px;width:22px}.navbar__mobile-toggle:hover{color:var(--navbar-text)}@media screen and (max-width:768px){.navbar__mobile-toggle{display:flex}}.navbar__mobile-backdrop{background:color-mix(in srgb,var(--bg) 60%,#0000);inset:0;position:fixed;z-index:99}@media screen and (min-width:769px){.navbar__mobile-backdrop{display:none}}.navbar__mobile{background:var(--bg-surface);border-left:1px solid var(--border);display:flex;flex-direction:column;height:100vh;max-width:300px;padding:5.5rem 2rem 2rem;position:fixed;right:0;top:0;width:72vw;z-index:100}@media screen and (min-width:769px){.navbar__mobile{display:none}}.navbar__mobile-links{display:flex;flex-direction:column;gap:.15rem;list-style:none}.navbar__mobile-links li a,.navbar__mobile-links li button{background:none;border:none;border-bottom:1px solid var(--border);color:var(--text-muted);cursor:none;display:block;font-family:var(--font-body);font-size:.75rem;font-weight:500;letter-spacing:.14em;padding:.75rem 0;text-align:left;text-decoration:none;text-transform:uppercase;transition:color .25s ease;width:100%}.navbar__mobile-links li a.active,.navbar__mobile-links li a:hover,.navbar__mobile-links li button.active,.navbar__mobile-links li button:hover{color:var(--accent)}.navbar__mobile-resume-link{border-bottom:none!important;color:var(--text-secondary)!important;margin-top:1.5rem;padding-top:.5rem!important}.navbar__mobile-resume-link:hover{color:var(--accent)!important}.navbar__mobile-theme{border-top:1px solid var(--border);margin-top:1.5rem;padding-top:1.5rem}.navbar__mobile-theme .theme-toggle{align-items:center!important;color:var(--text-secondary);display:inline-flex!important;width:auto!important}.theme-toggle{align-items:center;background:none;border:none;color:var(--text-muted);cursor:none;display:flex;gap:.5rem;padding:.25rem;transition:color .25s ease}.theme-toggle:hover{color:var(--text-primary)}.theme-toggle__track{background:var(--bg-surface);border:1px solid var(--border-hover);border-radius:18px;display:inline-block;flex-shrink:0;height:18px;position:relative;transition:background .3s ease,border-color .3s ease;width:32px}[data-theme=dark] .theme-toggle__track{background:var(--bg-surface-hover);border-color:var(--border-hover)}.theme-toggle__thumb{background:var(--accent);border-radius:50%;height:12px;left:2px;position:absolute;top:2px;transition:transform .3s var(--ease-out),background .3s ease;width:12px}.theme-toggle__thumb--dark{transform:translateX(14px)}.theme-toggle__icon{align-items:center;display:flex;flex-shrink:0;transition:color .25s ease}.page-transition{align-items:center;display:flex;inset:0;justify-content:center;overflow:hidden;pointer-events:all;position:fixed;z-index:15000}.page-transition__panel{background:var(--transition-panel-bg);bottom:0;position:absolute;top:0;width:50%;will-change:transform}.page-transition__panel--left{left:0}.page-transition__panel--right{right:0}.page-transition__initials{color:var(--transition-initials-color);font-family:var(--font-serif);font-size:clamp(5rem,12vw,10rem);font-style:italic;font-weight:300;letter-spacing:-.02em;line-height:1;position:relative;-webkit-user-select:none;user-select:none;z-index:1}@media(hover:none){.cursor-dot,.cursor-ring{display:none!important}}.cursor-dot{background:var(--cursor-dot-color);border-radius:50%;height:5px;left:-2.5px;pointer-events:none;position:fixed;top:-2.5px;transition:background-color .25s ease;width:5px;will-change:transform;z-index:20001}.cursor-dot--navbar{background:var(--navbar-text)}.cursor-ring{border:1px solid var(--cursor-ring-color);border-radius:50%;height:22px;left:-11px;pointer-events:none;position:fixed;top:-11px;transition:width .25s ease,height .25s ease,top .25s ease,left .25s ease,border-color .25s ease;width:22px;will-change:transform;z-index:20000}.cursor-ring--hover{border-color:var(--cursor-ring-hover);height:36px;left:-18px;top:-18px;width:36px}.cursor-ring--navbar{border-color:var(--navbar-text-muted)}.cursor-ring--navbar.cursor-ring--hover{border-color:var(--navbar-text)}.app{background:var(--bg);border-radius:0 0 16px 16px;border-radius:0 0 var(--frame-radius,16px) var(--frame-radius,16px);bottom:8px;bottom:var(--frame-gap,8px);left:8px;left:var(--frame-gap,8px);overflow:hidden;position:fixed;right:8px;right:var(--frame-gap,8px);top:var(--navbar-height)}@media screen and (max-width:768px){.app{border-radius:0 0 8px 8px;border-radius:0 0 var(--frame-radius,8px) var(--frame-radius,8px);bottom:4px;bottom:var(--frame-gap,4px);left:4px;left:var(--frame-gap,4px);right:4px;right:var(--frame-gap,4px)}}.app__scroll-container{bottom:12px;left:4px;overflow-x:hidden;overflow-y:auto;position:absolute;right:4px;top:12px}@media screen and (max-width:768px){.app__scroll-container{bottom:8px;left:4px;right:4px;top:8px}}.app__section{align-items:center;display:flex;justify-content:center;min-height:calc(100vh - var(--navbar-height) - 16px);min-height:calc(100vh - var(--navbar-height) - var(--frame-gap, 8px)*2);overflow:hidden;padding:var(--section-padding);position:relative;scroll-margin-top:var(--navbar-height);width:100%}@media screen and (max-width:768px){.app__section{min-height:calc(100vh - var(--navbar-height) - 8px);min-height:calc(100vh - var(--navbar-height) - var(--frame-gap, 4px)*2);padding:var(--section-padding-mobile)}}.app__section--auto{min-height:auto}.app__section-inner{margin:0 auto;max-width:100%;width:100%}.section-heading{color:var(--text-primary);font-family:var(--font-serif);font-size:clamp(2.2rem,5vw,3.5rem);font-weight:400;letter-spacing:.01em;line-height:1.15;margin-bottom:1rem}.section-label{color:var(--text-muted);display:block;font-family:var(--font-body);font-size:.7rem;font-weight:500;letter-spacing:.2em;margin-bottom:.75rem;text-transform:uppercase}.section-subtitle{color:var(--text-secondary);font-size:clamp(.95rem,2vw,1.05rem);line-height:1.75;max-width:580px}.matte-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);transition:background .3s var(--ease-out),border-color .3s var(--ease-out),transform .3s var(--ease-out)}.matte-card:hover{background:var(--bg-surface-hover);border-color:var(--border-hover);transform:translateY(-2px)}.btn-editorial{align-items:center;background:#0000;border-bottom:1px solid var(--border);border-left:none;border-radius:0;border-right:none;border-top:1px solid var(--border);color:var(--text-primary);cursor:none;display:inline-flex;font-family:var(--font-body);font-size:.78rem;font-weight:500;gap:.4rem;letter-spacing:.1em;overflow:hidden;padding:.65rem 1.4rem;position:relative;text-decoration:none;text-transform:uppercase;transition:border-color .35s ease,color .35s ease;z-index:1}.btn-editorial:before{background:var(--accent-dim);bottom:-1px;content:"";left:0;position:absolute;right:0;top:-1px;transform:scaleX(0);transform-origin:center;transition:transform .35s cubic-bezier(.22,1,.36,1);z-index:-1}.btn-editorial:hover{border-color:var(--border-hover);color:var(--accent)}.btn-editorial:hover:before{transform:scaleX(1)}.btn-editorial--accent{border-bottom:1px solid var(--accent-dim);border-left:none;border-right:none;border-top:1px solid var(--accent-dim);color:var(--accent)}.btn-editorial--accent:before{background:var(--accent)}.btn-editorial--accent:hover{border-color:var(--accent);color:var(--bg)}.tech-tag{color:var(--text-muted);font-family:var(--font-mono);font-size:.72rem;letter-spacing:.02em}.social-links{gap:1.25rem}.social-link,.social-links{align-items:center;display:flex}.social-link{color:var(--text-muted);transition:color .25s ease}.social-link:hover{color:var(--text-primary)}.flex-center{align-items:center;display:flex;justify-content:center}.text-accent{color:var(--accent)}.text-serif{font-family:var(--font-serif)}.text-mono{font-family:var(--font-mono)}.copyright{border-top:1px solid var(--border);margin-top:3rem;padding-top:2rem;text-align:center}.copyright p{color:var(--text-muted);font-family:var(--font-body);font-size:.75rem;letter-spacing:.05em}:root,[data-theme=light]{--frame-gap:8px;--frame-radius:16px;--bg:#e9ecef;--bg-outer:#096a47;--bg-surface:#dce1e6;--bg-surface-hover:#cfd5db;--navbar-height:80px;--navbar-bg:var(--bg-outer);--navbar-text:var(--bg);--navbar-text-muted:#e9ecefc7;--navbar-border:#e9ecef38;--navbar-toggle-track:#e9ecef2e;--text-primary:#12181b;--text-secondary:#48545a;--text-muted:#78868c;--accent:#096a47;--accent-dim:#096a471f;--border:#12181b14;--border-hover:#12181b26;--cat-webapp:#2b5876;--cat-mobile:#096a47;--cat-ml:#576b61;--font-serif:"Plus Jakarta Sans",system-ui,sans-serif;--font-body:"Inter",system-ui,sans-serif;--font-mono:"JetBrains Mono","Fira Code",monospace;--section-padding:6rem 6vw;--section-padding-mobile:4rem 5vw;--container-max:1100px;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--ease-out:cubic-bezier(0.22,1,0.36,1);--ease-in-out:cubic-bezier(0.4,0,0.2,1);--ease-slow:cubic-bezier(0.76,0,0.24,1);--transition-panel-bg:#096a47;--transition-initials-color:#e9ecef;--cursor-dot-color:#12181b;--cursor-ring-color:#12181b73;--cursor-ring-hover:#096a478c}[data-theme=dark]{--bg:#0b1b13;--bg-outer:#040d09;--bg-surface:#12291e;--bg-surface-hover:#1a382a;--navbar-bg:var(--bg-outer);--navbar-text:#edf2f4;--navbar-text-muted:#edf2f4b8;--navbar-border:#edf2f426;--navbar-toggle-track:#edf2f41f;--text-primary:#edf2f4;--text-secondary:#a3b8ad;--text-muted:#6c8578;--accent:#34d399;--accent-dim:#34d39926;--border:#edf2f414;--border-hover:#34d3994d;--cat-webapp:#7ea8c4;--cat-mobile:#34d399;--cat-ml:#a3bca9;--transition-panel-bg:#040d09;--transition-initials-color:#edf2f4;--cursor-dot-color:#edf2f4;--cursor-ring-color:#edf2f480;--cursor-ring-hover:#34d39999}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scroll-behavior:smooth}body,html{height:100%;overflow:hidden}body{background-color:#096a47;background-color:var(--bg-outer);color:#12181b;color:var(--text-primary);cursor:none;font-family:Inter,system-ui,sans-serif;font-family:var(--font-body);line-height:1.6;transition:background-color .35s cubic-bezier(.4,0,.2,1),color .35s cubic-bezier(.4,0,.2,1);transition:background-color .35s var(--ease-in-out),color .35s var(--ease-in-out)}body:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23a)'/%3E%3C/svg%3E");background-size:200px 200px;content:"";inset:0;opacity:.03;pointer-events:none;position:fixed;z-index:9990}a{color:inherit;cursor:none;text-decoration:none}ol,ul{list-style:none}img{display:block;max-width:100%}button{background:none;border:none;color:inherit;cursor:none;font-family:inherit}@media (hover:hover) and (pointer:fine){[role=button],a,button,input,select,textarea{cursor:none!important}}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:#e9ecef;background:var(--bg)}::-webkit-scrollbar-thumb{background:#096a47;background:var(--accent);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#48545a;background:var(--text-secondary)}*{scrollbar-color:#096a47 #e9ecef;scrollbar-color:var(--accent) var(--bg);scrollbar-width:thin}::selection{background:#096a47;background:var(--accent);color:#e9ecef;color:var(--bg)}html.lenis,html.lenis body{height:auto}.lenis-smooth{scroll-behavior:auto!important}.lenis-smooth [data-lenis-prevent]{overscroll-behavior:contain}.lenis-stopped{overflow:hidden}.lenis-scrolling iframe,.viewport-frame{pointer-events:none}.viewport-frame{border-radius:16px;border-radius:var(--frame-radius,16px);bottom:8px;bottom:var(--frame-gap,8px);box-shadow:0 0 0 100vmax #096a47;box-shadow:0 0 0 100vmax var(--bg-outer);left:8px;left:var(--frame-gap,8px);position:fixed;right:8px;right:var(--frame-gap,8px);top:80px;top:var(--navbar-height);transition:box-shadow .35s cubic-bezier(.4,0,.2,1);transition:box-shadow .35s var(--ease-in-out);z-index:9995}@media screen and (max-width:768px){:root{--frame-gap:4px;--frame-radius:8px;--navbar-height:64px}}
/*# sourceMappingURL=main.82dfe5e9.css.map*/