html{scroll-behavior:smooth;--nav-height:73px}body{background:#09090b;min-width:320px;margin:0}button,input,textarea{font:inherit}.hero-logo{animation:3s ease-in-out forwards textSize}.hero-logo svg{width:100%;height:auto;display:block}.hero-logo path{fill:#0000;stroke:#8e44ad;stroke-width:.1px;stroke-dasharray:50;stroke-dashoffset:50px;animation:2s ease-in-out forwards textAnimation}@keyframes textAnimation{0%{stroke-dashoffset:50px}80%{fill:#0000}to{stroke-dashoffset:0;fill:#8e44ad}}@keyframes textSize{0%,60%{transform:scale(1)}90%,to{transform:scale(1.08)}}.project-carousel{--card-width:45vw;--card-height:50vh;--carousel-radius:75vw;perspective:4000px;flex:1;height:auto;min-height:0;position:relative;overflow:hidden}.project-carousel__slider{top:50%;left:calc(50% - (var(--card-width) / 2));width:var(--card-width);height:var(--card-height);transform-style:preserve-3d;transform:translateY(-50%) rotateX(0deg) rotateY(calc(var(--active-index) * -1 * (360 / var(--quantity)) * 1deg));transition:transform .7s cubic-bezier(.22,1,.36,1);position:absolute}.project-carousel__item{transform:rotateY(calc((var(--position) - 1) * (360 / var(--quantity)) * 1deg)) translateZ(var(--carousel-radius));transform-style:preserve-3d;position:absolute;inset:0}.project-carousel__control{z-index:5;color:#f4f4f5;cursor:pointer;background:#09090bd1;border:1px solid #3f3f46;border-radius:999px;place-items:center;width:44px;height:44px;transition:border-color .2s,background-color .2s,color .2s;display:grid;position:absolute;top:50%;transform:translateY(-50%)}.project-carousel__control:hover{color:#ddd6fe;background:#18181bf0;border-color:#c4b5fd}.project-carousel__control svg{width:30px;height:30px}.project-modal__close svg{width:22px;height:22px}.project-carousel__control--previous{left:0}.project-carousel__control--next{right:0}.project-card{width:100%;height:100%;color:inherit;text-align:center;backface-visibility:hidden;cursor:pointer;background-color:#18181b;background-position:50%;background-size:cover;border:1px solid #27272a;border-radius:8px;display:block;position:relative;overflow:hidden;box-shadow:0 24px 60px #00000059}.project-card__overlay{background:#18181b00;transition:background-color .2s;position:absolute;inset:0}.project-card:hover .project-card__overlay{background:#18181b94}.project-card__content{z-index:1;flex-direction:column;justify-content:center;align-items:center;height:100%;padding:24px;display:flex;position:relative}.project-card__details{color:#fff;opacity:.9;background:#09090ba3;border:1px solid #f4f4f5b8;border-radius:6px;margin-top:22px;padding:8px 14px;font-size:13px;font-weight:700;transition:border-color .2s,background-color .2s,color .2s}.project-card:hover .project-card__details{color:#ddd6fe;background:#09090bd1;border-color:#c4b5fd}.skill-card{background:#09090b99;border-radius:20px;position:relative;overflow:hidden}.skill-card:before{content:"";width:400px;height:400px;top:var(--y);left:var(--x);pointer-events:none;filter:blur(20px);opacity:0;background:radial-gradient(#40a8f8,#0000,#0000);transition:opacity .2s,top,left;position:absolute;transform:translate(-50%,-50%)}.skill-card[data-active=true]:before{opacity:1}.skill-card:after{content:"";z-index:0;background:#09090be6;border-radius:18px;transition:background-color .22s;position:absolute;inset:2px}.skill-card>*{z-index:1;position:relative}.project-carousel__flatActive{z-index:4;opacity:0;filter:blur(4px);pointer-events:none;transition:opacity .1s,filter .1s;position:absolute}.project-carousel__flatActive--visible{opacity:1;filter:blur();pointer-events:auto}.project-carousel__flatActive .project-card__content{transform:scale(var(--flat-card-scale,1));transform-origin:50%}.project-modal{z-index:90;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;visibility:hidden;background:#09090bc7;place-items:center;padding:24px;transition:opacity .22s,visibility .22s;display:grid;position:fixed;inset:0}.project-modal--open{opacity:1;visibility:visible}.project-modal__panel{overscroll-behavior:contain;opacity:0;background:#09090b;border:1px solid #27272a;border-radius:8px;width:min(920px,100%);max-height:min(86vh,820px);transition:transform .26s cubic-bezier(.22,1,.36,1),opacity .26s cubic-bezier(.22,1,.36,1);position:relative;overflow-y:auto;transform:translateY(16px)scale(.98);box-shadow:0 30px 90px #0000008c}.project-modal__panel--open{opacity:1;transform:translateY(0)scale(1)}.project-modal__close{z-index:3;color:#fafafa;cursor:pointer;background:#09090bb8;border:1px solid #52525b;border-radius:999px;place-items:center;width:36px;height:36px;transition:border-color .2s,color .2s;display:grid;position:absolute;top:14px;right:14px}.project-modal__close:hover{color:#ddd6fe;border-color:#c4b5fd}.project-modal__hero{text-align:center;background-position:50%;background-size:cover;justify-content:center;align-items:center;min-height:260px;padding:48px 24px;display:flex;position:relative;overflow:hidden}.project-modal__heroOverlay{background:#18181bb8;position:absolute;inset:0}.project-screenshot-modal{z-index:100;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);opacity:0;visibility:hidden;background:#09090bd6;place-items:center;padding:24px;transition:opacity .22s,visibility .22s;display:grid;position:fixed;inset:0}.project-screenshot-modal--open{opacity:1;visibility:visible}.project-screenshot-modal__panel{opacity:0;width:min(1100px,100%);max-width:100%;transition:transform .26s cubic-bezier(.22,1,.36,1),opacity .26s cubic-bezier(.22,1,.36,1);position:relative;transform:translateY(18px)scale(.98)}.project-screenshot-modal__panel img{cursor:default}.project-modal button,.project-modal a,.project-screenshot-modal button,.project-screenshot-modal a,.project-modal button img,.project-screenshot-modal button img{cursor:pointer}.project-screenshot-modal__panel--open{opacity:1;transform:translateY(0)scale(1)}.toast{z-index:110;color:#f4f4f5;opacity:0;background:#09090bf5;border:1px solid #27272a;border-radius:999px;max-width:min(92vw,460px);padding:12px 18px;font-size:14px;animation:.22s forwards toast-in;position:fixed;bottom:24px;left:50%;transform:translate(-50%)translateY(12px);box-shadow:0 18px 40px #00000059}.toast--success{border-color:#4ade8059}.toast--error{border-color:#f8717159}.glass-3d-hero{touch-action:none;position:relative}.glass-3d-hero canvas{cursor:grab;width:100%;height:100%;display:block}.glass-3d-hero canvas:active{cursor:grabbing}.glass-3d-hero__fallback{filter:invert(35%)sepia(76%)saturate(1764%)hue-rotate(245deg)brightness(92%);width:min(100%,36rem);height:auto;position:absolute;inset:50% auto auto 50%;transform:translate(-50%,-50%)}.portfolio-pages{color:#18181b;background:#18181b;flex-direction:column;align-items:center;gap:32px;min-width:1120px;margin:0;padding:48px;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;display:flex}.portfolio-page{box-sizing:border-box;background:#f4f4f5;width:1120px;height:1584px;padding:96px 80px 80px 104px;position:relative;overflow:hidden;box-shadow:0 24px 70px #00000052}.portfolio-page__rail{background:#6d28d9;width:18px;position:absolute;inset:0 auto 0 0}.portfolio-page__header,.portfolio-page__footer{color:#71717a;letter-spacing:0;text-transform:uppercase;justify-content:space-between;align-items:center;font-size:13px;font-weight:750;display:flex;position:absolute;left:104px;right:80px}.portfolio-page__header{border-bottom:1px solid #d4d4d8;padding-bottom:15px;top:42px}.portfolio-page__footer{border-top:1px solid #d4d4d8;padding-top:15px;bottom:34px}.portfolio-kicker{color:#6d28d9;letter-spacing:0;text-transform:uppercase;margin:0;font-size:14px;font-weight:800}.portfolio-page__title{max-width:820px;padding-top:58px}.portfolio-page__title--compact{padding-top:36px}.portfolio-page__title h1{color:#09090b;letter-spacing:0;margin:18px 0 0;font-size:58px;line-height:1.04}.portfolio-page--cover{color:#f4f4f5;background:#09090b}.portfolio-page--cover .portfolio-page__header,.portfolio-page--cover .portfolio-page__footer{color:#a1a1aa;border-color:#27272a}.portfolio-cover__brand{color:#7c3aed;letter-spacing:0;font-size:270px;font-weight:900;line-height:.9;position:absolute;top:88px;right:64px}.portfolio-cover__content{z-index:2;width:660px;position:absolute;top:435px;left:104px}.portfolio-cover__content h1{color:#fff;letter-spacing:0;margin:22px 0 0;font-size:92px;line-height:.92}.portfolio-cover__statement{color:#d4d4d8;width:540px;margin:34px 0 0;font-size:23px;line-height:1.55}.portfolio-cover__portrait{z-index:1;background:#18181b;border:1px solid #3f3f46;width:370px;height:500px;position:absolute;bottom:220px;right:74px;overflow:hidden}.portfolio-cover__portrait img{object-fit:cover;object-position:50% 12%;transform-origin:50% 12%;width:100%;height:100%;transform:scale(1.18)}.portfolio-cover__contact{color:#a1a1aa;gap:28px;font-size:14px;display:flex;position:absolute;bottom:108px;left:104px}.portfolio-timeline{margin-top:56px;position:relative}.portfolio-timeline:before{content:"";background:#c4b5fd;width:1px;position:absolute;top:20px;bottom:20px;left:28px}.portfolio-timeline__item{grid-template-columns:58px 1fr;gap:24px;padding:0 0 35px;display:grid;position:relative}.portfolio-timeline__marker{z-index:1;color:#6d28d9;background:#f4f4f5;border:1px solid #8b5cf6;border-radius:50%;place-items:center;width:56px;height:56px;font-size:13px;font-weight:800;display:grid;position:relative}.portfolio-timeline__meta{color:#6d28d9;justify-content:space-between;font-size:14px;font-weight:750;display:flex}.portfolio-timeline__item h2{color:#18181b;margin:8px 0;font-size:25px;line-height:1.18}.portfolio-timeline__item p{color:#52525b;margin:0;font-size:16px;line-height:1.5}.portfolio-skills-grid{border-top:1px solid #d4d4d8;border-left:1px solid #d4d4d8;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:58px;display:grid}.portfolio-skill-group{border-bottom:1px solid #d4d4d8;border-right:1px solid #d4d4d8;min-height:150px;padding:28px 30px;position:relative}.portfolio-skill-group__number{color:#a78bfa;font-size:13px;font-weight:800;position:absolute;top:28px;right:28px}.portfolio-skill-group h2{color:#18181b;max-width:330px;margin:0;font-size:20px}.portfolio-skill-group p{color:#52525b;margin:15px 0 0;font-size:14px;line-height:1.65}.portfolio-certifications{margin-top:50px}.portfolio-certifications>div{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin-top:18px;display:grid}.portfolio-certifications article{background:#fff;border:1px solid #d4d4d8;border-radius:6px;grid-template-columns:92px 1fr;align-items:center;gap:20px;padding:20px;display:grid}.portfolio-certifications img{object-fit:contain;width:92px;height:92px}.portfolio-certifications h3,.portfolio-certifications p{margin:0}.portfolio-certifications h3{color:#18181b;font-size:17px;line-height:1.3}.portfolio-certifications p{color:#71717a;margin-top:8px;font-size:14px}.portfolio-stack{flex-wrap:wrap;gap:8px;margin-top:22px;display:flex}.portfolio-stack span{color:#5b21b6;border:1px solid #c4b5fd;border-radius:4px;padding:7px 11px;font-size:13px;font-weight:750}.portfolio-feature__intro{max-width:900px;padding-top:44px}.portfolio-feature__intro h1{color:#09090b;letter-spacing:0;margin:14px 0 16px;font-size:78px;line-height:1}.portfolio-feature__intro>p:not(.portfolio-kicker){color:#52525b;max-width:820px;margin:0;font-size:18px;line-height:1.55}.portfolio-feature__hero-image{background:#27272a;border:1px solid #d4d4d8;height:540px;margin-top:38px;overflow:hidden}.portfolio-feature__hero-image img,.portfolio-feature__secondary-image img,.portfolio-project-brief__image img,.portfolio-archive img{object-fit:cover;width:100%;height:100%}.portfolio-feature__details{grid-template-columns:.9fr 1.1fr;gap:32px;margin-top:34px;display:grid}.portfolio-feature__details ul{margin:18px 0 0;padding:0;list-style:none}.portfolio-feature__details li{color:#3f3f46;margin-bottom:14px;padding-left:20px;font-size:15px;line-height:1.45;position:relative}.portfolio-feature__details li:before{content:"";background:#7c3aed;width:7px;height:7px;position:absolute;top:8px;left:0}.portfolio-feature__secondary-image{border:1px solid #d4d4d8;height:280px;overflow:hidden}.portfolio-project-pair{gap:34px;margin-top:46px;display:grid}.portfolio-project-brief{background:#fff;border:1px solid #d4d4d8;grid-template-columns:1.08fr .92fr;height:470px;min-height:0;display:grid;overflow:hidden}.portfolio-project-brief__image{background:#18181b;height:100%;min-height:0;overflow:hidden}.portfolio-project-brief__body{padding:38px 34px}.portfolio-project-brief__body h2{color:#18181b;margin:11px 0 16px;font-size:36px;line-height:1}.portfolio-project-brief__summary{color:#52525b;margin:0;font-size:15px;line-height:1.55}.portfolio-project-brief--compact .portfolio-stack span{padding:6px 8px;font-size:12px}.portfolio-archive{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-top:42px;display:grid}.portfolio-archive article{background:#fff;border:1px solid #d4d4d8;grid-template-columns:170px 1fr;min-height:145px;display:grid;overflow:hidden}.portfolio-archive article>div{padding:24px 20px}.portfolio-archive h2{color:#18181b;margin:0;font-size:20px}.portfolio-archive p{color:#71717a;margin:12px 0 0;font-size:13px;line-height:1.5}.portfolio-contact-block{color:#fff;background:#18181b;padding:42px 46px;position:absolute;bottom:92px;left:104px;right:80px}.portfolio-contact-block h2{color:#fff;max-width:660px;margin:14px 0 26px;font-size:38px;line-height:1.1}.portfolio-contact-block>div{flex-wrap:wrap;gap:18px 28px;display:flex}.portfolio-contact-block a{color:#d8b4fe;font-size:14px;font-weight:700;text-decoration:none}@page{size:A4;margin:14mm}@media print{html,body{-webkit-print-color-adjust:exact;print-color-adjust:exact;color:#111!important;background:#fff!important}body *{box-shadow:none!important;text-shadow:none!important}.print-document{max-width:none!important;padding:0!important}.print-section,.break-inside-avoid{break-inside:avoid-page;page-break-inside:avoid}.toast,.project-modal,.project-screenshot-modal,.project-carousel,.skill-card,header,button,a[href^=\#],.no-print{display:none!important}.print-document img{break-inside:avoid}}@keyframes toast-in{to{opacity:1;transform:translate(-50%)translateY(0)}}@media (width<=768px){.project-carousel{--card-width:80vw;--card-height:80vh;--carousel-radius:150vw}}
