@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/build/assets/inter-cyrillic-ext-opsz-normal-CfYZpDVp.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/build/assets/inter-cyrillic-opsz-normal-BFQXbQ-f.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/build/assets/inter-greek-ext-opsz-normal-BmPQvyvo.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/build/assets/inter-greek-opsz-normal-BM0NlUE_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/build/assets/inter-vietnamese-opsz-normal-Ci9T9ieq.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/build/assets/inter-latin-ext-opsz-normal-DpK-iCPk.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/build/assets/inter-latin-opsz-normal-BwkfbSeq.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/build/assets/inter-cyrillic-ext-opsz-italic-fe11NjBs.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/build/assets/inter-cyrillic-opsz-italic-Ck9oD2H0.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/build/assets/inter-greek-ext-opsz-italic-BIcRYUEt.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/build/assets/inter-greek-opsz-italic-mtaF_0H_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/build/assets/inter-vietnamese-opsz-italic-C7TReJrb.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/build/assets/inter-latin-ext-opsz-italic-BLMf5All.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/build/assets/inter-latin-opsz-italic-BbqH_2Ar.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}.portfolio-page{--bg-primary:#0a0b1a;--bg-secondary:#0d0f24;--bg-card:#12152e;--bg-card-hover:#181c3a;--text-primary:#e8eaf6;--text-secondary:#9ba3c7;--text-muted:#5d6494;--accent-blue:#4f7df5;--accent-cyan:#38bdf8;--accent-purple:#8b5cf6;--accent-gradient:linear-gradient(135deg, #4f7df5 0%, #8b5cf6 100%);--glow-blue:#4f7df526;--glow-purple:#8b5cf61a;--border-subtle:#9ba3c714;--section-padding:120px;--font-heading:"Inter Variable", "Inter", sans-serif;--font-body:"Inter Variable", "Inter", sans-serif;font-family:var(--font-body);background:var(--bg-primary);color:var(--text-primary);scroll-behavior:smooth;min-height:100vh;line-height:1.6}.portfolio-page *,.portfolio-page :before,.portfolio-page :after{box-sizing:border-box;margin:0;padding:0}.p-nav{z-index:100;background:0 0;width:100%;padding:20px 0;transition:all .3s;position:fixed;top:0;left:0}.p-nav--scrolled{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border-subtle);background:#0a0b1ae6;padding:14px 0}.p-nav__container{justify-content:space-between;align-items:center;max-width:1400px;margin:0 auto;padding:0 60px;display:flex;position:relative}.p-nav__logo{font-family:var(--font-heading);color:var(--text-primary);align-items:center;font-size:1.5rem;font-weight:700;text-decoration:none;display:flex}.p-nav__logo-img{width:auto;height:36px}.p-nav__logo span{color:var(--accent-cyan)}.p-nav__links{align-items:center;gap:32px;list-style:none;display:flex}.p-nav__links a{color:var(--text-secondary);font-size:.9rem;text-decoration:none;transition:color .3s}.p-nav__links a:hover{color:var(--text-primary)}.p-nav__cta{border-radius:6px;color:var(--accent-blue)!important;border:1px solid #4f7df566!important;padding:8px 20px!important}.p-nav__cta:hover{background:#4f7df51a;color:var(--accent-cyan)!important}.p-nav__mobile-toggle{cursor:pointer;background:0 0;border:none;flex-direction:column;gap:5px;padding:4px;display:none}.p-nav__mobile-toggle span{background:var(--text-primary);border-radius:2px;width:24px;height:2px;transition:all .3s}.p-hero{background:radial-gradient(ellipse at 30% 50%, var(--bg-secondary) 0%, var(--bg-primary) 70%);align-items:center;min-height:100vh;display:flex;position:relative;overflow:hidden}.p-hero__starfield{z-index:1;pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0}.p-hero__video-wrap{z-index:0;width:100%;height:100%;position:absolute;top:0;left:0;overflow:hidden}.p-hero__video{object-fit:cover;object-position:center right;width:100%;height:100%}.p-hero__video-wrap:after{content:"";pointer-events:none;background:linear-gradient(90deg,#0a0b1af2 0%,#0a0b1abf 50%,#0a0b1a00 100%);width:60%;height:100%;position:absolute;top:0;left:0}.p-hero__orb{filter:blur(80px);pointer-events:none;z-index:0;border-radius:50%;position:absolute}.p-hero__orb--1{background:radial-gradient(circle,#4f7df526 0%,#0000 70%);width:500px;height:500px;animation:8s ease-in-out infinite pOrbFloat1;top:-10%;left:-5%}.p-hero__orb--2{background:radial-gradient(circle,#8b5cf61f 0%,#0000 70%);width:400px;height:400px;animation:10s ease-in-out infinite pOrbFloat2;bottom:-10%;right:10%}.p-hero__orb--3{background:radial-gradient(circle,#38bdf81a 0%,#0000 70%);width:300px;height:300px;animation:12s ease-in-out infinite pOrbFloat3;top:40%;right:30%}@keyframes pOrbFloat1{0%,to{transform:translate(0)scale(1)}50%{transform:translate(30px,20px)scale(1.1)}}@keyframes pOrbFloat2{0%,to{transform:translate(0)scale(1)}50%{transform:translate(-20px,-30px)scale(1.15)}}@keyframes pOrbFloat3{0%,to{transform:translate(0)scale(1)}50%{transform:translate(15px,-15px)scale(.9)}}.p-hero__content{z-index:2;align-items:center;width:100%;max-width:1400px;margin:0 auto;padding:0 60px;display:flex;position:relative}.p-hero__text{max-width:520px;transition:transform .3s ease-out}.p-hero__greeting{color:var(--accent-cyan);letter-spacing:.05em;opacity:0;align-items:center;gap:12px;margin-bottom:12px;font-size:1rem;font-weight:400;animation:.8s .2s forwards pFadeInUp;display:flex}.p-hero__greeting-line{background:var(--accent-cyan);transform-origin:0;width:40px;height:2px;animation:1s .3s forwards pLineGrow;display:inline-block;transform:scaleX(0)}@keyframes pLineGrow{to{transform:scaleX(1)}}.p-hero__name{font-family:var(--font-heading);opacity:0;margin-bottom:12px;font-size:clamp(2.8rem,5.5vw,4.5rem);font-weight:700;line-height:1.1;animation:.8s .4s forwards pFadeInUp}.p-hero__name-word{background:linear-gradient(135deg, var(--text-primary) 0%, var(--accent-cyan) 50%, var(--accent-purple) 100%);-webkit-text-fill-color:transparent;background-size:200% 200%;-webkit-background-clip:text;background-clip:text;animation:6s infinite pGradientShift;display:inline-block}.p-hero__name-word:first-child{margin-right:.3em}@keyframes pGradientShift{0%,to{background-position:0%}50%{background-position:100%}}.p-hero__title{font-family:var(--font-heading);color:var(--text-secondary);opacity:0;margin-bottom:20px;font-size:clamp(1.2rem,2.5vw,1.6rem);font-weight:500;animation:.8s .6s forwards pFadeInUp}.p-hero__subtitle{color:var(--text-muted);opacity:0;margin-bottom:32px;font-size:1rem;line-height:1.7;animation:.8s .8s forwards pFadeInUp}.p-hero__cta{opacity:0;flex-wrap:wrap;gap:16px;animation:.8s 1s forwards pFadeInUp;display:flex}.p-btn--glow{position:relative;overflow:hidden}.p-btn--glow:before{content:"";background:linear-gradient(135deg, var(--accent-blue), var(--accent-purple), var(--accent-cyan), var(--accent-blue));z-index:-1;opacity:0;background-size:300% 300%;border-radius:10px;transition:opacity .3s;animation:4s linear infinite pBorderGlow;position:absolute;inset:-2px}.p-btn--glow:hover:before{opacity:1}@keyframes pBorderGlow{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}.p-btn--shimmer{position:relative;overflow:hidden}.p-btn--shimmer:after{content:"";background:linear-gradient(90deg,#0000,#38bdf826,#0000);width:100%;height:100%;animation:3s ease-in-out infinite pShimmer;position:absolute;top:0;left:-100%}@keyframes pShimmer{0%{left:-100%}50%,to{left:100%}}.p-hero__scroll{z-index:2;opacity:0;flex-direction:column;align-items:center;gap:8px;animation:1s 1.5s forwards pFadeIn;display:flex;position:absolute;bottom:40px;left:50%;transform:translate(-50%)}.p-hero__scroll span{color:var(--text-muted);letter-spacing:.1em;text-transform:uppercase;font-size:.75rem}.p-hero__scroll-line{background:linear-gradient(to bottom, var(--accent-cyan), transparent);width:1px;height:40px;animation:2s ease-in-out infinite pScrollPulse}.p-btn{font-family:var(--font-body);cursor:pointer;border:none;border-radius:8px;align-items:center;padding:12px 28px;font-size:.9rem;font-weight:500;text-decoration:none;transition:all .3s;display:inline-flex}.p-btn--primary{background:var(--accent-gradient);color:#fff;box-shadow:0 4px 20px var(--glow-blue)}.p-btn--primary:hover{transform:translateY(-2px);box-shadow:0 8px 30px #4f7df54d}.p-btn--outline{color:var(--text-secondary);background:0 0;border:1px solid #9ba3c733}.p-btn--outline:hover{border-color:var(--accent-cyan);color:var(--accent-cyan);transform:translateY(-2px)}.p-btn--large{padding:16px 40px;font-size:1rem}.p-section{padding:var(--section-padding) 0;position:relative}.p-container{max-width:1400px;margin:0 auto;padding:0 60px}.p-section__title{font-family:var(--font-heading);color:var(--text-primary);margin-bottom:12px;font-size:clamp(2rem,4vw,2.8rem);font-weight:700}.p-section__title--center{text-align:center}.p-section__subtitle{color:var(--text-muted);margin-bottom:60px;font-size:1rem}.p-section__subtitle--center{text-align:center}.p-section--about{background:var(--bg-secondary)}.p-about{grid-template-columns:1fr 1fr;align-items:center;gap:80px;display:grid}.p-about__bio{color:var(--text-secondary);margin-bottom:16px;font-size:1.05rem;line-height:1.8}.p-about__stats{grid-template-columns:1fr 1fr;gap:32px;display:grid}.p-stat{background:var(--bg-card);border:1px solid var(--border-subtle);text-align:center;border-radius:12px;padding:28px;transition:all .3s}.p-stat:hover{box-shadow:0 8px 30px var(--glow-blue);border-color:#4f7df533;transform:translateY(-4px)}.p-stat__number{font-family:var(--font-heading);background:var(--accent-gradient);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin-bottom:4px;font-size:2.2rem;font-weight:700;display:block}.p-stat__label{color:var(--text-muted);font-size:.85rem}.p-section--tech{background:var(--bg-primary);overflow:hidden}.p-tech__groups{flex-direction:column;align-items:center;gap:48px;max-width:1000px;margin:0 auto;display:flex}.p-tech__group{width:100%}.p-tech__group-label{text-transform:uppercase;letter-spacing:.15em;color:var(--text-muted);text-align:center;margin-bottom:16px;font-size:.75rem;font-weight:600}.p-tech__grid{flex-wrap:wrap;justify-content:center;gap:14px;display:flex}.p-tech-card{perspective:600px;width:100px;animation:4s ease-in-out infinite pTechFloat;animation-delay:var(--delay)}.p-tech-card__inner{aspect-ratio:1;width:100%;transform-style:preserve-3d;transition:transform .6s cubic-bezier(.4,0,.2,1);position:relative}.p-tech-card:hover .p-tech-card__inner{transform:rotateY(180deg)}.p-tech-card__front,.p-tech-card__back{backface-visibility:hidden;border:1px solid var(--border-subtle);border-radius:10px;justify-content:center;align-items:center;display:flex;position:absolute;inset:0;overflow:hidden}.p-tech-card__front:before,.p-tech-card__back:before{content:"";background:var(--accent);height:2px;box-shadow:0 0 12px var(--accent);border-radius:0 0 4px 4px;position:absolute;top:0;left:20%;right:20%}.p-tech-card__front{background:var(--bg-card)}.p-tech-card__back{background:var(--bg-card-hover);border-color:var(--accent);box-shadow:0 8px 32px #0000004d, 0 0 20px color-mix(in srgb, var(--accent) 20%, transparent);transform:rotateY(180deg)}.p-tech-card__icon{object-fit:contain;width:36px;height:36px;filter:drop-shadow(0 0 8px color-mix(in srgb, var(--accent) 30%, transparent))}.p-tech-card__name{color:var(--accent);letter-spacing:.02em;font-size:.9rem;font-weight:600}@keyframes pTechFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.p-section--projects{background:var(--bg-secondary)}.p-projects__showcase{justify-content:center;align-items:center;gap:60px;max-width:1200px;margin:0 auto;padding:0 60px;display:flex}.p-projects__monitor{flex:0 0 60%;height:500px;position:relative}.p-project-info{flex:0 0 35%}.p-project-info__name{font-family:var(--font-heading);color:var(--text-primary);margin-bottom:12px;font-size:1.6rem;font-weight:700}.p-project-info__desc{color:var(--text-muted);margin-bottom:20px;font-size:.95rem;line-height:1.7}.p-project-info__tags{flex-wrap:wrap;gap:8px;margin-bottom:24px;display:flex}.p-project-info__tags span{color:var(--accent-blue);background:#4f7df51a;border-radius:4px;padding:4px 12px;font-size:.8rem}.p-project-info__link{display:inline-flex}.p-project-nav{justify-content:center;align-items:center;gap:24px;margin-top:40px;display:flex}.p-project-nav__prev,.p-project-nav__next{background:var(--bg-card);border:1px solid var(--border-subtle);width:40px;height:40px;color:var(--text-secondary);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;transition:all .3s;display:flex}.p-project-nav__prev:hover,.p-project-nav__next:hover{border-color:var(--accent-blue);color:var(--accent-cyan);transform:scale(1.1)}.p-project-nav__dots{gap:10px;display:flex}.p-project-nav__dot{background:var(--bg-card);border:2px solid var(--text-muted);cursor:pointer;border-radius:50%;width:10px;height:10px;padding:0;transition:all .3s}.p-project-nav__dot.is-active{background:var(--accent-blue);border-color:var(--accent-blue);box-shadow:0 0 8px var(--glow-blue);transform:scale(1.2)}.p-section--experience{background:var(--bg-primary)}.p-timeline{max-width:700px;margin:0 auto;padding-left:32px;position:relative}.p-timeline:before{content:"";background:linear-gradient(to bottom, var(--accent-blue), var(--accent-purple), transparent);border-radius:2px;width:2px;position:absolute;top:8px;bottom:8px;left:7px}.p-timeline__item{padding-bottom:48px;position:relative}.p-timeline__item:last-child{padding-bottom:0}.p-timeline__dot{background:var(--bg-primary);border:3px solid var(--accent-blue);z-index:1;border-radius:50%;width:16px;height:16px;position:absolute;top:8px;left:-32px}.p-timeline__item:first-child .p-timeline__dot{background:var(--accent-blue);box-shadow:0 0 12px var(--glow-blue)}.p-timeline__content{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:12px;padding:24px;transition:all .3s}.p-timeline__content:hover{border-color:#4f7df526;transform:translate(4px)}.p-timeline__date{color:var(--accent-cyan);letter-spacing:.02em;font-size:.8rem;font-weight:500}.p-timeline__role{font-family:var(--font-heading);color:var(--text-primary);margin:6px 0 4px;font-size:1.15rem;font-weight:600}.p-timeline__company{color:var(--text-secondary);margin-bottom:8px;font-size:.9rem}.p-timeline__desc{color:var(--text-muted);font-size:.85rem;line-height:1.6}.p-section--testimonials{background:var(--bg-secondary)}.p-testimonials{max-width:700px;margin:0 auto}.p-testimonials__carousel{align-items:center;gap:24px;display:flex}.p-testimonials__arrow{border:1px solid var(--border-subtle);background:var(--bg-card);width:44px;height:44px;color:var(--text-secondary);cursor:pointer;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;transition:all .3s;display:flex}.p-testimonials__arrow:hover{border-color:var(--accent-blue);color:var(--accent-blue);background:var(--glow-blue)}.p-testimonials__card{background:var(--bg-card);border:1px solid var(--border-subtle);text-align:center;border-radius:16px;flex:1;padding:40px 32px;transition:all .3s}.p-testimonials__card:hover{border-color:#4f7df533;box-shadow:0 8px 32px #4f7df514}.p-testimonials__stars{justify-content:center;gap:4px;margin-bottom:20px;display:flex}.p-testimonials__star{width:20px;height:20px}.p-testimonials__review{color:var(--text-secondary);margin-bottom:28px;font-size:1rem;font-style:italic;line-height:1.7}.p-testimonials__author{justify-content:center;align-items:center;gap:14px;display:flex}.p-testimonials__avatar{object-fit:cover;border:2px solid var(--border-subtle);border-radius:50%;width:48px;height:48px}.p-testimonials__info{text-align:center}.p-testimonials__name{color:var(--text-primary);margin-bottom:2px;font-size:.95rem;font-weight:600}.p-testimonials__position{color:var(--text-muted);font-size:.8rem}.p-testimonials__dots{justify-content:center;gap:8px;margin-top:24px;display:flex}.p-testimonials__dot{background:var(--text-muted);opacity:.4;cursor:pointer;border:none;border-radius:50%;width:10px;height:10px;transition:all .3s}.p-testimonials__dot--active{background:var(--accent-blue);opacity:1;transform:scale(1.2)}@media (width<=640px){.p-testimonials__arrow{width:36px;height:36px}.p-testimonials__carousel{gap:12px}.p-testimonials__card{padding:28px 20px}.p-testimonials__review{font-size:.9rem}}.p-section--contact{background:var(--bg-secondary)}.p-contact{text-align:center;max-width:600px;margin:0 auto}.p-contact__text{color:var(--text-secondary);margin-bottom:36px;font-size:1.1rem;line-height:1.7}.p-contact__links{justify-content:center;gap:20px;margin-top:32px;display:flex}.p-contact__link{background:var(--bg-card);border:1px solid var(--border-subtle);width:48px;height:48px;color:var(--text-secondary);border-radius:50%;justify-content:center;align-items:center;text-decoration:none;transition:all .3s;display:flex}.p-contact__link:hover{color:var(--accent-cyan);border-color:var(--accent-cyan);box-shadow:0 8px 20px var(--glow-blue);transform:translateY(-3px)}.p-contact-form{text-align:left;flex-direction:column;gap:20px;display:flex}.p-contact-form__row{grid-template-columns:1fr 1fr;gap:20px;display:grid}.p-contact-form__field{flex-direction:column;gap:8px;display:flex}.p-contact-form__label{color:var(--text-primary);font-size:.9rem;font-weight:500}.p-contact-form__optional{color:var(--text-muted);font-weight:400}.p-contact-form__input{background:var(--bg-card);width:100%;color:var(--text-primary);font-family:var(--font-body);border:1px solid #9ba3c733;border-radius:8px;padding:12px 14px;font-size:1rem;line-height:1.5;transition:border-color .2s,box-shadow .2s}.p-contact-form__input:focus{border-color:var(--accent-cyan);box-shadow:0 0 0 3px var(--glow-blue);outline:none}.p-contact-form__input[aria-invalid=true]{border-color:#f87171}.p-contact-form__textarea{resize:vertical;min-height:140px}.p-contact-form__error{color:#f87171;font-size:.85rem}.p-contact-form__error--form{text-align:center}.p-contact-form__submit{align-self:center;margin-top:8px}.p-contact-form__submit:disabled{opacity:.6;cursor:wait;transform:none}.p-contact-form__hp{width:1px;height:1px;position:absolute;left:-10000px;overflow:hidden}.p-contact-form__success{background:var(--bg-card);border:1px solid var(--border-subtle);color:var(--text-secondary);border-radius:12px;flex-direction:column;align-items:center;gap:12px;padding:32px 24px;display:flex}.p-contact-form__success-title{color:var(--text-primary);font-size:1.15rem;font-weight:600}.p-contact-form__success .p-btn{margin-top:8px}@media (width<=600px){.p-contact-form__row{grid-template-columns:1fr}}.p-footer{text-align:center;border-top:1px solid var(--border-subtle);padding:32px 0}.p-footer p{color:var(--text-muted);font-size:.85rem}@keyframes pFadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes pFadeIn{0%{opacity:0}to{opacity:1}}@keyframes pScrollPulse{0%,to{opacity:.4;transform-origin:top;transform:scaleY(.6)}50%{opacity:1;transform:scaleY(1)}}.p-section{opacity:0;transition:opacity .8s cubic-bezier(.16,1,.3,1),transform .8s cubic-bezier(.16,1,.3,1);transform:translateY(40px)}.p-section.is-visible{opacity:1;transform:translateY(0)}.p-hero{opacity:1!important;transform:none!important}.portfolio-page{cursor:default}.portfolio-page:before{content:"";pointer-events:none;z-index:9999;width:400px;height:400px;left:var(--cursor-x,-200px);top:var(--cursor-y,-200px);background:radial-gradient(circle,#4f7df50f 0%,#0000 70%);border-radius:50%;transition:left .15s ease-out,top .15s ease-out;position:fixed;transform:translate(-50%,-50%)}@media (width<=1024px){.p-container,.p-nav__container,.p-hero__content{padding:0 40px}.p-about{gap:50px}}@media (width<=768px){.portfolio-page{--section-padding:80px}.p-nav__links{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-bottom:1px solid var(--border-subtle);background:#0a0b1af7;flex-direction:column;align-items:center;gap:0;padding:20px 0;display:none;position:absolute;top:100%;left:0;right:0}.p-nav__links--open{display:flex}.p-nav__links li{text-align:center;width:100%}.p-nav__links a{padding:14px 24px;font-size:1rem;display:block}.p-nav__links a:hover{background:#4f7df514}.p-nav__cta{border-radius:0;margin-top:0;color:var(--text-secondary)!important;border:none!important;padding:14px 24px!important}.p-nav__cta:hover{background:#4f7df514}.p-nav__mobile-toggle{display:flex}.p-hero__content{text-align:center;padding:120px 24px 80px}.p-hero__text{max-width:100%}.p-hero__cta{justify-content:center}.p-hero__video-wrap:after{background:linear-gradient(#0a0b1ad9 0%,#0a0b1a66 50%,#0a0b1abf 100%);width:100%}.p-container{padding:0 24px}.p-about{grid-template-columns:1fr;gap:40px}.p-projects__showcase{flex-direction:column;gap:32px;padding:0 24px}.p-projects__monitor{flex:none;width:100%;height:300px}.p-project-info{text-align:center;flex:none}.p-project-info__tags{justify-content:center}.p-tech__grid{gap:12px}.p-tech-card__icon{width:32px;height:32px}.p-tech__groups{gap:36px}}@media (width<=480px){.p-hero__name{font-size:2rem}.p-hero__title{font-size:1.1rem}.p-hero__cta{flex-direction:column;align-items:center}.p-btn{justify-content:center;width:100%}.p-about__stats{grid-template-columns:1fr 1fr;gap:16px}.p-tech__grid,.p-tech__grid--3,.p-tech__grid--4,.p-tech__grid--5,.p-tech__grid--6{gap:10px}.p-tech-card{width:75px}.p-tech-card__icon{width:36px;height:36px}.p-tech-card__name{font-size:.75rem}.p-tech__groups{gap:28px}.p-stat{padding:20px 16px}.p-stat__number{font-size:1.8rem}}.cs-container{max-width:1200px;margin:0 auto;padding:0 40px}.cs-container--narrow{max-width:800px}.cs-back{color:var(--text-secondary);align-items:center;gap:8px;margin-bottom:40px;font-size:.9rem;text-decoration:none;transition:color .3s;display:inline-flex}.cs-back:hover{color:var(--accent-blue)}.cs-preview-banner{z-index:1000;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);max-width:calc(100% - 32px);color:var(--text-primary);background:#12152eeb;border:1px solid #facc1566;border-radius:999px;align-items:center;gap:10px;padding:10px 18px;font-size:.85rem;display:flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 10px 30px #0006}.cs-preview-banner__dot{background:#facc15;border-radius:50%;flex:none;width:8px;height:8px}.cs-preview-banner__link{color:var(--accent-blue);flex:none;font-weight:500;text-decoration:underline}.cs-hero{padding:160px 0 80px;position:relative;overflow:hidden}.cs-hero__bg{background:radial-gradient(ellipse at 30% 20%, var(--glow-blue) 0%, transparent 60%), radial-gradient(ellipse at 70% 80%, var(--glow-purple) 0%, transparent 50%);pointer-events:none;position:absolute;inset:0}.cs-hero__content{z-index:1;max-width:700px;position:relative}.cs-hero__meta{align-items:center;gap:16px;margin-bottom:20px;display:flex}.cs-badge{color:var(--accent-blue);letter-spacing:.5px;text-transform:uppercase;background:#4f7df526;border-radius:20px;padding:4px 12px;font-size:.8rem;font-weight:500;display:inline-block}.cs-date{color:var(--text-muted);font-size:.85rem}.cs-hero__title{font-family:var(--font-heading);background:linear-gradient(135deg, var(--text-primary) 0%, var(--accent-cyan) 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin-bottom:20px;font-size:clamp(2.2rem,5vw,3.5rem);font-weight:700;line-height:1.15}.cs-hero__excerpt{color:var(--text-secondary);margin-bottom:24px;font-size:1.15rem;line-height:1.7}.cs-hero__tags{flex-wrap:wrap;gap:8px;margin-bottom:32px;display:flex}.cs-tag{background:var(--bg-card);border:1px solid var(--border-subtle);color:var(--text-secondary);border-radius:6px;padding:5px 14px;font-size:.8rem;font-weight:500}.cs-hero__actions{margin-top:8px}.cs-hero__media{border:1px solid var(--border-subtle);border-radius:12px;margin-top:60px;overflow:hidden;box-shadow:0 20px 60px #0006}.cs-hero__video,.cs-hero__image{width:100%;display:block}.cs-body{padding:0 0 80px}.cs-body__layout{grid-template-columns:220px 1fr;align-items:start;gap:48px;display:grid}.cs-toc{align-self:start;max-height:calc(100vh - 140px);position:sticky;top:100px;overflow-y:auto}.cs-toc__nav{border-left:1px solid var(--border-subtle);flex-direction:column;gap:2px;padding-left:16px;display:flex}.cs-toc__title{font-family:var(--font-heading);color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:8px;font-size:.7rem;font-weight:600}.cs-toc__link{color:var(--text-muted);padding:4px 0;font-size:.8rem;line-height:1.4;text-decoration:none;transition:color .2s}.cs-toc__link:hover{color:var(--text-secondary)}.cs-toc__link--active{color:#f59e0b;font-weight:500}.cs-content{overflow-wrap:break-word;min-width:0;color:var(--text-secondary);text-align:justify;font-size:1.05rem;line-height:1.85}.cs-section{padding:15px 0}.cs-content h2{font-family:var(--font-heading);color:var(--text-primary);border-left:3px solid #f59e0b;border-top:1px solid var(--border-subtle);margin:72px 0 20px;padding-top:32px;padding-left:16px;font-size:1.8rem;font-weight:700}.cs-content h2:first-child{border-top:none;margin-top:0;padding-top:0}.cs-content h3{font-family:var(--font-heading);color:var(--text-primary);margin:40px 0 16px;font-size:1.35rem;font-weight:600}.cs-content h4{font-family:var(--font-heading);color:var(--text-secondary);margin:32px 0 12px;font-size:1.1rem;font-weight:600}.cs-content p{margin-bottom:20px}.cs-content ul,.cs-content ol{margin:16px 0 24px 24px;list-style:outside}.cs-content ol{list-style:decimal}.cs-content li{margin-bottom:8px}.cs-content strong{color:var(--text-primary);font-weight:600}.cs-content pre{background:var(--bg-card);border:1px solid var(--border-subtle);scrollbar-width:thin;scrollbar-color:transparent transparent;border-radius:8px;margin:24px 0;padding:20px;overflow-x:auto}.cs-content pre:hover{scrollbar-color:#9ba3c74d transparent}.cs-content pre::-webkit-scrollbar{height:6px}.cs-content pre::-webkit-scrollbar-track{background:0 0}.cs-content pre::-webkit-scrollbar-thumb{background:0 0;border-radius:3px}.cs-content pre:hover::-webkit-scrollbar-thumb{background:#9ba3c74d}.cs-content pre::-webkit-scrollbar-thumb:hover{background:#9ba3c780}.cs-content pre code{color:var(--text-secondary);white-space:pre;word-wrap:normal;background:0 0;border-radius:0;padding:0;font-size:.85em}.cs-content table{border-collapse:collapse;width:100%;margin:24px 0;display:block;overflow-x:auto}.cs-content th,.cs-content td{border:1px solid var(--border-subtle);text-align:left;padding:10px 14px;font-size:.95em}.cs-content th{background:var(--bg-card);color:var(--text-primary);font-weight:600}.cs-content code{background:var(--bg-card);color:var(--accent-cyan);border-radius:4px;padding:2px 8px;font-size:.9em}.cs-content blockquote{border-left:3px solid var(--accent-blue);background:var(--bg-card);color:var(--text-primary);border-radius:0 8px 8px 0;margin:24px 0;padding:16px 24px;font-style:italic}.cs-content img{border:1px solid var(--border-subtle);border-radius:10px;width:100%;margin:32px 0}.cs-details{background:var(--bg-secondary);border-top:1px solid var(--border-subtle);border-bottom:1px solid var(--border-subtle);padding:60px 0}.cs-details__grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:24px;display:grid}.cs-detail-card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:12px;padding:24px;transition:border-color .3s}.cs-detail-card:hover{border-color:#4f7df54d}.cs-detail-card h4{text-transform:uppercase;letter-spacing:1px;color:var(--text-muted);margin-bottom:8px;font-size:.8rem}.cs-detail-card p{color:var(--text-primary);font-weight:500}.cs-more{padding:100px 0}.cs-more__title{font-family:var(--font-heading);color:var(--text-primary);text-align:center;margin-bottom:40px;font-size:1.8rem;font-weight:700}.cs-more__grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:24px;display:grid}.cs-more__card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:12px;padding:32px;text-decoration:none;transition:all .3s}.cs-more__card:hover{border-color:#4f7df54d;transform:translateY(-4px);box-shadow:0 12px 40px #0000004d}.cs-more__card h3{font-family:var(--font-heading);color:var(--text-primary);margin-bottom:8px;font-size:1.2rem;font-weight:600}.cs-more__card p{color:var(--text-secondary);margin-bottom:16px;font-size:.9rem;line-height:1.6}.cs-more__tags{flex-wrap:wrap;gap:6px;display:flex}.cs-more__tags span{color:var(--accent-blue);background:#4f7df51a;border-radius:4px;padding:3px 10px;font-size:.75rem;font-weight:500}@media (width<=768px){.cs-container{padding:0 20px}.cs-hero{padding:120px 0 60px}.cs-hero__title{font-size:2rem}.cs-body{padding:50px 0}.cs-body__layout{grid-template-columns:1fr}.cs-toc{display:none}.cs-details__grid{grid-template-columns:1fr 1fr}.cs-more__grid{grid-template-columns:1fr}}.p-section--blog,.p-section--blog-post{opacity:1;min-height:80vh;padding-top:140px;transform:none}.p-blog__grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));gap:28px;margin-top:40px;display:grid}.p-blog-card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:12px;text-decoration:none;transition:transform .3s,box-shadow .3s,border-color .3s;overflow:hidden}.p-blog-card:hover{border-color:var(--accent-primary);transform:translateY(-4px);box-shadow:0 12px 40px #6366f126}.p-blog-card__image{aspect-ratio:16/9;width:100%;overflow:hidden}.p-blog-card__image img{object-fit:cover;width:100%;height:100%;transition:transform .3s}.p-blog-card:hover .p-blog-card__image img{transform:scale(1.05)}.p-blog-card__body{padding:20px 24px}.p-blog-card__meta{align-items:center;gap:12px;margin-bottom:10px;display:flex}.p-blog-card__category{text-transform:uppercase;letter-spacing:.05em;color:var(--accent-primary);font-size:.75rem;font-weight:600}.p-blog-card__date{color:var(--text-muted);font-size:.75rem}.p-blog-card__title{color:var(--text-primary);margin-bottom:8px;font-size:1.15rem;font-weight:600;line-height:1.4}.p-blog-card__excerpt{color:var(--text-secondary);-webkit-line-clamp:3;-webkit-box-orient:vertical;margin-bottom:12px;font-size:.875rem;line-height:1.6;display:-webkit-box;overflow:hidden}.p-blog-card__footer{align-items:center;display:flex}.p-blog-card__reading-time{color:var(--text-muted);font-size:.75rem}.p-blog__empty{text-align:center;color:var(--text-muted);padding:80px 20px;font-size:1.1rem}.p-container--narrow{max-width:760px}.p-blog-post__back{color:var(--accent-primary);margin-bottom:32px;font-size:.875rem;text-decoration:none;transition:opacity .2s;display:inline-block}.p-blog-post__back:hover{opacity:.7}.p-blog-post__header{margin-bottom:32px}.p-blog-post__meta{align-items:center;gap:16px;margin-bottom:16px;display:flex}.p-blog-post__title{color:var(--text-primary);font-size:2.2rem;font-weight:700;line-height:1.3}.p-blog-post__featured{aspect-ratio:16/9;border-radius:12px;margin-bottom:32px;overflow:hidden}.p-blog-post__featured img{object-fit:cover;width:100%;height:100%;display:block}.p-blog-post__content{color:var(--text-secondary);font-size:1rem;line-height:1.8}.p-blog-post__content h2{color:var(--text-primary);margin:2rem 0 1rem;font-size:1.5rem;font-weight:700}.p-blog-post__content h3{color:var(--text-primary);margin:1.5rem 0 .75rem;font-size:1.25rem;font-weight:600}.p-blog-post__content p{margin-bottom:1.2rem}.p-blog-post__content code{background:var(--bg-card);border-radius:4px;padding:2px 6px;font-size:.875em}.p-blog-post__content pre{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:8px;margin:1.5rem 0;padding:20px;overflow-x:auto}.p-blog-post__content pre code{background:0 0;padding:0}.p-blog-post__content a{color:var(--accent-primary);text-decoration:underline}.p-blog-post__content img{border-radius:8px;max-width:100%;margin:1.5rem 0}.p-blog-post__tags{border-top:1px solid var(--border-subtle);flex-wrap:wrap;gap:8px;margin-top:40px;padding-top:24px;display:flex}.p-blog-post__tag{color:var(--accent-primary);background:#6366f11a;border-radius:20px;padding:4px 12px;font-size:.75rem;font-weight:500}@media (width<=768px){.p-blog__grid{grid-template-columns:1fr;gap:20px}.p-blog-post__title{font-size:1.6rem}}
