*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}.pf{font-family:var(--font-inter),ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;background:var(--page-bg);color:var(--text-primary);line-height:1.6;direction:ltr;overflow-x:hidden;text-align:left;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--radius-full:9999px}.pf a{text-decoration:none;color:inherit}.pf img{max-width:100%;height:auto}.pf ol,.pf ul{list-style:none}.sidebar{position:fixed;top:0;left:0;width:var(--sidebar-width);max-width:85vw;height:100vh;background:var(--card-bg);border-right:1px solid var(--border-color);z-index:1000;display:flex;flex-direction:column;transform:translateX(-100%);transition:var(--transition);overflow:hidden}.sidebar.active{transform:translateX(0);box-shadow:10px 0 40px rgba(0,0,0,.15)}@media (min-width:1100px){.sidebar{transform:translateX(0);box-shadow:none}}.sidebar-header{padding:24px 20px;border-bottom:1px solid var(--border-color)}@media (max-width:1099px){.sidebar-header{padding-left:68px}}.sidebar-logo{font-size:1.1rem;font-weight:700;color:var(--text-primary)}.sidebar-nav{flex:1;overflow-y:auto;padding:12px 0}.sidebar-nav::-webkit-scrollbar{width:4px}.sidebar-nav::-webkit-scrollbar-track{background:transparent}.sidebar-nav::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:4px}.nav-link{display:flex;align-items:center;gap:12px;padding:12px 20px;color:var(--text-muted);font-size:14px;font-weight:500;transition:var(--transition);border-left:3px solid transparent}.nav-link:hover{color:var(--text-primary);background:var(--tag-bg)}.nav-link.active{color:var(--accent-primary);background:var(--accent-light);border-left-color:var(--accent-primary)}.nav-link svg{width:18px;height:18px;flex-shrink:0}.sidebar-footer{padding:16px 20px;border-top:1px solid var(--border-color);font-size:13px}.sidebar-footer a{display:block;color:var(--text-muted);margin-bottom:6px;transition:var(--transition)}.sidebar-footer a:hover{color:var(--accent-primary)}.hamburger{position:fixed;top:16px;left:16px;width:40px;height:40px;background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-md);cursor:pointer;z-index:1100;display:flex;align-items:center;justify-content:center;transition:var(--transition)}.hamburger:hover{transform:scale(1.05)}.hamburger.active{background:transparent;border-color:transparent}.hamburger-box{width:20px;height:20px;position:relative;left:4px}.hamburger-inner,.hamburger-inner:after,.hamburger-inner:before{width:24px;height:2.5px;background:var(--text-primary);border-radius:2px;position:absolute;transition:all .4s cubic-bezier(.68,-.55,.265,1.55)}.hamburger-inner{top:50%;transform:translateY(-50%)}.hamburger-inner:before{content:"";top:-7px;left:0;width:18px}.hamburger-inner:after{content:"";bottom:-7px;left:0;width:14px}.hamburger.active .hamburger-inner{background:transparent}.hamburger.active .hamburger-inner:before{width:24px;top:0;transform:rotate(45deg);background:var(--accent-primary)}.hamburger.active .hamburger-inner:after{width:24px;bottom:0;transform:rotate(-45deg);background:var(--accent-primary)}@media (min-width:1100px){.hamburger{display:none}}.overlay{position:fixed;inset:0;background:rgba(0,0,0,.6);backdrop-filter:blur(4px);z-index:999;opacity:0;visibility:hidden;transition:var(--transition)}.overlay.active{opacity:1;visibility:visible}@media (min-width:1100px){.overlay{display:none}}.main{margin-left:0;transition:var(--transition)}@media (min-width:1100px){.main{margin-left:var(--sidebar-width)}}.section{min-height:100vh;padding:80px 20px;display:flex;align-items:center}.section-alt{background:var(--card-bg)}@media (min-width:768px){.section{padding:100px 40px}}@media (min-width:1100px){.section{padding:100px 60px}}.container{width:100%;max-width:900px;margin:0 auto}.section-header{margin-bottom:40px}.section-header.center{text-align:left}.section-badge{display:inline-flex;align-items:center;gap:8px;padding:6px 14px;background:var(--accent-light);color:var(--accent-primary);font-size:13px;font-weight:600;border-radius:var(--radius-full);margin-bottom:12px}.section-badge img{width:22px;height:22px}.section-title{font-size:clamp(1.75rem,5vw,2.5rem);font-weight:800;color:var(--text-primary);margin-bottom:12px;letter-spacing:-.02em}.section-desc{font-size:1rem;color:var(--text-muted);max-width:500px}.section-header.center .section-desc{margin:0 auto}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 24px;font-family:inherit;font-size:14px;font-weight:600;border-radius:var(--radius-full);border:none;cursor:pointer;transition:var(--transition)}.btn svg{width:18px;height:18px}.btn-primary{background:var(--accent-primary);color:#fff}.btn-primary:hover{background:var(--accent-hover);transform:translateY(-2px);box-shadow:var(--shadow-md)}.btn-secondary{background:var(--card-bg);color:var(--text-primary);border:1px solid var(--border-color)}.btn-secondary:hover{border-color:var(--text-primary);transform:translateY(-2px)}.btn-ghost{background:var(--tag-bg);color:var(--text-primary)}.btn-ghost:hover{background:var(--tag-active);color:var(--page-bg)}.hero{position:relative;text-align:center;overflow:hidden;justify-content:center}.hero-bg{position:absolute;inset:0;background:radial-gradient(ellipse at center top,var(--accent-light) 0,transparent 60%);opacity:.6}.hero-content{position:relative;z-index:1;width:100%}.hero-avatar{display:block;width:160px;height:160px;border-radius:50%;-o-object-fit:cover;object-fit:cover;border:4px solid var(--card-bg);box-shadow:var(--shadow-lg);margin:0 auto 24px;animation:fadeUp .8s ease}@media (max-width:768px){.expertise-card{width:65%;position:relative;left:10px}}@media (min-width:768px){.hero-avatar{width:200px;height:200px}}.hero-name{font-size:clamp(2rem,8vw,3.5rem);font-weight:800;margin-bottom:12px;letter-spacing:-.03em;animation:fadeUp .8s ease .1s both}.hero-title{font-size:clamp(1.1rem,3vw,1.5rem);color:var(--accent-primary);font-weight:500;margin-bottom:28px;animation:fadeUp .8s ease .2s both}.hero-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;animation:fadeUp .8s ease .3s both}.scroll-hint{position:absolute;bottom:32px;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;color:var(--text-muted);font-size:13px;animation:fadeUp .8s ease .4s both}.scroll-hint svg{width:20px;height:20px;animation:bounce 2s infinite}@keyframes fadeUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(6px)}60%{transform:translateY(3px)}}.about-grid{display:grid;gap:24px}@media (min-width:768px){.about-grid{grid-template-columns:1fr 1fr;gap:32px}}.about-text{font-size:1rem;color:var(--text-primary);line-height:1.85}.about-text p{margin-bottom:16px}.about-text p:last-child{margin-bottom:0}.stack-list{display:grid;gap:16px}.stack-card{background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:24px;transition:var(--transition)}.section-alt .stack-card{background:var(--page-bg)}.stack-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-md)}.stack-card p{line-height:1.8}.expertise-list{display:grid;gap:24px}.expertise-card{background:var(--tag-bg);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:24px;transition:var(--transition)}.expertise-card:hover{box-shadow:var(--shadow-md)}.expertise-head{display:flex;gap:16px;margin-bottom:20px}.expertise-num{width:44px;height:44px;background:var(--accent-primary);color:#fff;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;font-size:1.1rem;font-weight:700;flex-shrink:0}.expertise-info h3{font-size:1.1rem;font-weight:700;margin-bottom:4px}.expertise-info span{font-size:13px;color:var(--text-muted)}.expertise-body{line-height:1.8;margin-bottom:20px}.expertise-body p{margin:0}.expertise-question{font-size:14px;color:var(--text-muted);margin-bottom:12px}.table-wrap{overflow-x:auto;margin:0 -12px;padding:0 12px}.exp-table{width:100%;border-collapse:collapse;font-size:14px;min-width:500px;border-radius:8px;overflow:hidden}.exp-table td,.exp-table th{padding:12px;text-align:left;border-bottom:1px solid var(--border-color);vertical-align:top}.exp-table th{font-weight:600}.exp-table td,.exp-table th{background:var(--card-bg)}.exp-table tr:last-child td{border-bottom:none}.step-num{width:28px;height:28px;background:var(--accent-light);color:var(--accent-primary);border-radius:var(--radius-sm);display:inline-flex;align-items:center;justify-content:center;font-weight:600;font-size:13px}.step-title{font-weight:600;margin-bottom:4px}.step-desc{color:var(--text-muted);font-size:13px;margin:0}.tags{display:flex;flex-wrap:wrap;gap:6px}.tag{padding:4px 10px;background:var(--tag-bg);color:var(--text-muted);font-size:12px;border-radius:var(--radius-full)}.timeline{position:relative;padding-left:32px}.timeline:before{content:"";position:absolute;left:5px;top:8px;bottom:8px;width:2px;background:var(--border-color)}.timeline-item{position:relative;margin-bottom:24px}.timeline-item:last-child{margin-bottom:0}.timeline-item:before{content:"";position:absolute;left:-32px;top:8px;width:12px;height:12px;background:var(--accent-primary);border:3px solid var(--page-bg);border-radius:50%}.section-alt .timeline-item:before{border-color:var(--card-bg)}.exp-card{background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:20px;transition:var(--transition)}.section-alt .exp-card{background:var(--page-bg)}.exp-card:hover{box-shadow:var(--shadow-md)}.exp-head{display:flex;gap:14px;margin-bottom:12px}.exp-logo{width:48px;height:48px;background:var(--tag-bg);border-radius:var(--radius-sm);padding:6px;-o-object-fit:contain;object-fit:contain;flex-shrink:0}.exp-info{flex:1}.exp-date{font-size:12px;color:var(--text-muted);margin-bottom:2px}.exp-title{font-size:1rem;font-weight:700;margin-bottom:2px}.exp-company{font-size:14px;color:var(--accent-primary)}.exp-desc{font-size:14px;color:var(--text-muted);line-height:1.75}.exp-desc p{margin:0}.projects-grid{display:grid;gap:20px}@media (min-width:640px){.projects-grid{grid-template-columns:repeat(2,1fr)}}.project-card{background:var(--tag-bg);border:1px solid var(--border-color);border-radius:var(--radius-lg);overflow:hidden;transition:var(--transition)}.project-card:hover{transform:translateY(-6px);box-shadow:var(--shadow-md)}.project-img{height:160px;background:var(--border-color);overflow:hidden}.project-img img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;transition:transform .4s ease}.project-card:hover .project-img img{transform:scale(1.06)}.project-body{padding:20px}.project-title{font-size:1rem;font-weight:700;margin-bottom:6px;transition:var(--transition)}.project-card:hover .project-title,.project-employer{color:var(--accent-primary)}.project-employer{font-size:13px;margin-bottom:10px}.project-excerpt{font-size:14px;color:var(--text-muted);line-height:1.65;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.section-cta{text-align:center;margin-top:32px}.skills-grid{display:grid;gap:24px}@media (min-width:768px){.skills-grid{grid-template-columns:repeat(2,1fr)}}.skill-box{background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:24px}.section-alt .skill-box{background:var(--page-bg)}.skill-box-title{font-size:1rem;font-weight:700;margin-bottom:20px}.skill-item{margin-bottom:16px}.skill-item:last-child{margin-bottom:0}.skill-head{display:flex;align-items:center;gap:10px;margin-bottom:8px}.skill-icon{width:24px;height:24px}.skill-name{flex:1;font-size:14px;font-weight:500}.skill-pct{font-size:13px;color:var(--text-muted)}.skill-bar{height:6px;background:var(--tag-bg);overflow:hidden}.skill-bar,.skill-fill{border-radius:var(--radius-full)}.skill-fill{height:100%;background:var(--accent-primary);width:0;transition:width 1.2s ease}.pub-list{display:grid;gap:16px}.pub-card{background:var(--tag-bg);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:24px;transition:var(--transition)}.pub-card:hover{box-shadow:var(--shadow-md)}.pub-date{font-size:12px;color:var(--text-muted);margin-bottom:6px}.pub-title{font-size:1rem;font-weight:700;margin-bottom:6px;transition:var(--transition)}.pub-card:hover .pub-title,.pub-venue{color:var(--accent-primary)}.pub-venue{font-size:14px;margin-bottom:12px}.pub-abstract{font-size:14px;color:var(--text-muted);line-height:1.75}.pub-abstract p{margin:0}.edu-list{display:grid;gap:16px}.edu-card{background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:24px;transition:var(--transition)}.section-alt .edu-card{background:var(--page-bg)}.edu-card:hover{box-shadow:var(--shadow-md)}.edu-meta{font-size:12px;color:var(--text-muted);margin-bottom:6px}.edu-title{font-size:1rem;font-weight:700;margin-bottom:6px}.edu-info{font-size:14px;color:var(--text-muted);margin-bottom:12px}.edu-desc{font-size:14px;line-height:1.75}.edu-desc p{margin:0}.honors-grid{display:grid;gap:16px}@media (min-width:640px){.honors-grid{grid-template-columns:repeat(2,1fr)}}.honor-card{display:flex;align-items:center;gap:16px;background:var(--tag-bg);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:20px;transition:var(--transition)}.honor-card:hover{box-shadow:var(--shadow-md)}.honor-icon{width:64px;height:64px;-o-object-fit:contain;object-fit:contain;flex-shrink:0}.honor-info h3{font-size:1rem;font-weight:700;margin-bottom:4px}.honor-place{font-size:14px;color:var(--text-muted);margin-bottom:2px}.honor-date{font-size:13px;color:var(--text-light)}.blog-list{display:grid;gap:16px}.blog-card{display:flex;gap:16px;background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:16px;transition:var(--transition)}.section-alt .blog-card{background:var(--page-bg)}.blog-card:hover{box-shadow:var(--shadow-md);transform:translateX(-4px)}.blog-img{width:120px;height:90px;border-radius:var(--radius-md);overflow:hidden;flex-shrink:0}.blog-img img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.blog-body{flex:1;min-width:0}.blog-title{font-size:1rem;font-weight:700;margin-bottom:6px;transition:var(--transition)}.blog-card:hover .blog-title{color:var(--accent-primary)}.blog-meta{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-muted);margin-bottom:8px}.blog-meta svg{width:14px;height:14px}.blog-excerpt{font-size:14px;color:var(--text-muted);line-height:1.6;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}@media (max-width:500px){.blog-card{flex-direction:column}.blog-img{width:100%;height:140px}}.course-list{display:grid;gap:20px}.course-card{display:flex;gap:20px;background:var(--tag-bg);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:20px;transition:var(--transition)}.course-card:hover{box-shadow:var(--shadow-md)}.course-img{width:160px;flex-shrink:0}.course-img img{width:100%;border-radius:var(--radius-md)}.course-body{flex:1;min-width:0}.course-title{font-size:1rem;font-weight:700;margin-bottom:6px}.course-platform{font-size:14px;color:var(--accent-primary);margin-bottom:10px;display:inline-block}.course-platform:hover{text-decoration:underline}.course-desc{font-size:14px;color:var(--text-muted);line-height:1.7;margin-bottom:10px}.course-desc p{margin:0}.course-meta{font-size:13px;color:var(--text-muted);display:flex;flex-wrap:wrap;gap:12px}@media (max-width:640px){.course-card{flex-direction:column}.course-img{width:100%;max-width:240px}}.contact-grid{display:grid;gap:16px}@media (min-width:640px){.contact-grid{grid-template-columns:repeat(3,1fr)}}.contact-card{background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:24px;text-align:center;transition:var(--transition)}.section-alt .contact-card{background:var(--page-bg)}.contact-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-md)}.contact-icon{width:48px;height:48px;background:var(--accent-light);color:var(--accent-primary);border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;margin:0 auto 12px}.contact-icon svg{width:24px;height:24px}.contact-label{font-size:12px;color:var(--text-muted);margin-bottom:4px}.contact-value{font-size:15px;font-weight:600;color:var(--text-primary);transition:var(--transition)}a.contact-value:hover{color:var(--accent-primary)}.socials{flex-wrap:wrap;gap:10px;margin-top:32px}.social-btn,.socials{display:flex;justify-content:center}.social-btn{width:44px;height:44px;background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-md);align-items:center;color:var(--text-muted);transition:var(--transition)}.section-alt .social-btn{background:var(--page-bg)}.social-btn:hover{background:var(--accent-primary);border-color:var(--accent-primary);color:#fff;transform:translateY(-3px)}.social-btn svg{width:20px;height:20px}.anim{opacity:0;transform:translateY(24px);transition:opacity .5s ease,transform .5s ease}.anim.show{opacity:1;transform:translateY(0)}.anim:first-child{transition-delay:.05s}.anim:nth-child(2){transition-delay:.1s}.anim:nth-child(3){transition-delay:.15s}.anim:nth-child(4){transition-delay:.2s}.anim:nth-child(5){transition-delay:.25s}.anim:nth-child(6){transition-delay:.3s}@media (max-width:500px){.section{padding:60px 16px}.section-title{font-size:1.5rem}.hero-avatar{width:130px;height:130px}.hero-name{font-size:1.75rem}.hero-actions{flex-direction:column;width:100%;padding:0 20px}.hero-actions .btn{width:100%}.timeline{padding-left:8px}.timeline-item:before{left:-28px}.honor-card{flex-direction:column;text-align:center}}.pf-page{background:var(--page-bg);min-height:100vh;padding:40px 20px 80px;direction:ltr;text-align:left;font-family:var(--font-inter),ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}.pf-page-container{max-width:1200px;margin:0 auto}.pf-page-back{display:inline-flex;align-items:center;gap:8px;color:var(--text-muted);font-size:14px;font-weight:500;padding:10px 16px;border-radius:8px;transition:var(--transition);border:1px solid transparent}.pf-page-back:hover{color:var(--text-primary);background:var(--tag-bg);border-color:var(--border-color)}.pf-page-header{text-align:center;margin:60px 0 50px}.pf-page-title{font-size:clamp(2rem,6vw,3.5rem);font-weight:800;margin-bottom:12px;letter-spacing:-.03em}.pf-page-subtitle{font-size:1.05rem;color:var(--text-muted);max-width:540px;margin:0 auto;line-height:1.7}.pf-search-wrap{max-width:600px;margin:0 auto 30px;position:relative}.pf-search-input{width:100%;padding:16px 22px 16px 50px;font-family:inherit;font-size:15px;border:2px solid var(--border-color);border-radius:50px;background:var(--card-bg);color:var(--text-primary);outline:none;transition:var(--transition)}.pf-search-input:focus{border-color:var(--accent-primary)}.pf-search-icon{position:absolute;left:18px;top:50%;transform:translateY(-50%);color:var(--text-muted)}.pf-filter-wrap{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-bottom:40px}.pf-filter-btn{padding:9px 20px;font-family:inherit;font-size:14px;font-weight:500;color:var(--text-muted);background:var(--tag-bg);border:1px solid transparent;border-radius:50px;cursor:pointer;transition:var(--transition)}.pf-filter-btn:hover{color:var(--text-primary);border-color:var(--border-color);transform:translateY(-2px)}.pf-filter-btn.active{background:var(--tag-active);color:var(--page-bg);border-color:var(--tag-active)}.pf-empty{text-align:center;padding:80px 20px;color:var(--text-muted);font-size:1rem}.pf-blog-content{max-width:780px;margin:0 auto}.pf-blog-content img{width:100%;border-radius:12px;margin:20px 0}.pf-blog-content h1,.pf-blog-content h2,.pf-blog-content h3{font-weight:700;margin:24px 0 12px}.pf-blog-content p{margin-bottom:16px;line-height:1.8}.pf-blog-content ol,.pf-blog-content ul{padding-left:20px;margin-bottom:16px;list-style:initial}.pf-blog-content ol{list-style:decimal}.pf-blog-content blockquote{border-left:3px solid var(--accent-primary);padding:12px 16px;background:var(--accent-light);border-radius:8px 0 0 8px;margin:16px 0}.pf-blog-content code{background:var(--tag-bg);padding:2px 6px;border-radius:4px;font-size:.875em}.pf-blog-content pre{background:#1e1e1e;color:#cdd6f4;padding:16px;border-radius:8px;overflow-x:auto;margin:16px 0}.pf-blog-content pre code{background:none;padding:0}.pf-blog-content table{width:100%;border-collapse:collapse;margin:16px 0}.pf-blog-content td,.pf-blog-content th{padding:10px 14px;border:1px solid var(--border-color)}.pf-blog-content th{background:var(--tag-bg);font-weight:700}.pf-progress-bar{position:fixed;top:0;left:0;right:0;height:3px;background:var(--tag-bg);z-index:9999}.pf-progress-fill{height:100%;background:var(--accent-primary);transition:width .1s linear}.pf-blog-hero-img{width:100%;max-height:480px;-o-object-fit:cover;object-fit:cover;border-radius:16px;margin:24px 0}.pf-author-card{display:flex;align-items:center;gap:16px;padding:24px;background:var(--card-bg);border:1px solid var(--border-color);border-radius:16px;margin-top:40px}.pf-author-avatar{width:60px;height:60px;border-radius:50%;-o-object-fit:cover;object-fit:cover;flex-shrink:0}.pf-author-name{font-size:1rem;font-weight:700}.pf-author-title{font-size:.85rem;color:var(--text-muted)}.pf-related-grid{display:grid;gap:20px;margin-top:40px}@media (min-width:640px){.pf-related-grid{grid-template-columns:repeat(3,1fr)}}.pf-pagination{display:flex;justify-content:center;align-items:center;gap:8px;margin-top:40px}.pf-page-btn{padding:8px 16px;border:1px solid var(--border-color);border-radius:8px;font-size:.875rem;cursor:pointer;transition:var(--transition);background:var(--card-bg);color:var(--text-muted)}.pf-page-btn.active,.pf-page-btn:hover{background:var(--accent-primary);color:#fff;border-color:var(--accent-primary)}.pf-page-btn:disabled{opacity:.4;cursor:not-allowed}.pf-proj-detail-header{margin-bottom:32px}.pf-proj-detail-cats{font-size:.85rem;color:var(--accent-primary);font-weight:600;margin-bottom:8px}.pf-proj-detail-title{font-size:clamp(1.75rem,4vw,2.5rem);font-weight:800;margin-bottom:12px;letter-spacing:-.02em}.pf-proj-detail-meta{display:flex;gap:16px;flex-wrap:wrap;font-size:.875rem;color:var(--text-muted);margin-bottom:20px}.pf-proj-detail-meta span{display:flex;align-items:center;gap:6px}.pf-proj-actions{display:flex;gap:12px;flex-wrap:wrap}.pf-proj-actions,.pf-proj-gallery{margin-bottom:32px}.pf-proj-main-img{width:100%;border-radius:16px;-o-object-fit:cover;object-fit:cover;max-height:480px}.pf-proj-content-section{margin-bottom:32px}.pf-proj-content-section h3{font-size:1.1rem;font-weight:700;margin-bottom:12px;display:flex;align-items:center;gap:8px}.pf-proj-content-section p,.pf-proj-desc{font-size:.95rem;color:var(--text-muted);line-height:1.8}.pf-view-all{display:inline-flex;align-items:center;gap:8px;margin-top:32px;font-size:.875rem;color:var(--accent-primary);font-weight:600;padding:10px 20px;border:1px solid var(--accent-primary);border-radius:9999px;transition:var(--transition)}.pf-view-all:hover{background:var(--accent-primary);color:#fff}.interests-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:16px}.interest-card{background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:18px 20px;display:flex;align-items:center;gap:12px;transition:var(--transition)}.interest-card:hover{border-color:var(--accent-primary);transform:translateY(-2px)}.interest-icon{font-size:1.5rem}.interest-title{font-weight:600;color:var(--text-primary)}.references-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px}.reference-card{background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:22px;display:flex;gap:16px}.reference-photo{width:64px;height:64px;border-radius:50%;-o-object-fit:cover;object-fit:cover;flex-shrink:0}.reference-info{flex:1;min-width:0}.reference-name{font-size:1.05rem;font-weight:700;margin-bottom:4px;color:var(--text-primary)}.reference-position{font-size:.9rem;color:var(--text-primary)}.reference-company{font-size:.875rem;color:var(--text-muted)}.reference-relationship{font-size:.8rem;color:var(--text-light);margin-top:6px}.reference-actions{display:flex;gap:12px;margin-top:12px;flex-wrap:wrap}.reference-actions a{font-size:.8rem;color:var(--accent-primary);font-weight:600}.reference-actions a:hover{color:var(--accent-hover)}.services-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:22px}.service-card{background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:28px 24px;display:flex;flex-direction:column;gap:12px;transition:var(--transition)}.service-card:hover{border-color:var(--accent-primary);transform:translateY(-4px)}.service-icon{font-size:2rem}.service-title{font-size:1.15rem;font-weight:700;color:var(--text-primary)}.service-description{font-size:.9rem;color:var(--text-muted);line-height:1.7}.service-cta{align-self:flex-start;margin-top:auto}.testimonials-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:22px}.testimonial-card{background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:24px;display:flex;flex-direction:column;gap:14px}.testimonial-card.featured{border-color:var(--accent-primary);box-shadow:0 8px 24px rgba(0,0,0,.06)}.testimonial-rating{display:flex;gap:4px;font-size:1rem}.testimonial-rating .star{color:var(--text-light)}.testimonial-rating .star.filled{color:#f59e0b}.testimonial-text{font-size:.95rem;color:var(--text-primary);line-height:1.8;margin:0;font-style:italic}.testimonial-author{display:flex;align-items:center;gap:12px;margin-top:auto;padding-top:14px;border-top:1px solid var(--border-color)}.testimonial-avatar{width:44px;height:44px;border-radius:50%;-o-object-fit:cover;object-fit:cover}.testimonial-name{font-weight:700;font-size:.95rem;color:var(--text-primary)}.testimonial-position{font-size:.8rem;color:var(--text-muted)}.faq-list{display:flex;flex-direction:column;gap:12px;max-width:800px;margin:0 auto}.faq-item{background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:18px 22px;transition:var(--transition)}.faq-item[open]{border-color:var(--accent-primary)}.faq-question{font-weight:600;font-size:1rem;color:var(--text-primary);cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center}.faq-question:after{content:"+";color:var(--accent-primary);font-size:1.4rem;transition:var(--transition)}.faq-item[open] .faq-question:after{content:"−"}.faq-answer{margin-top:14px;font-size:.9rem;color:var(--text-muted);line-height:1.8}.work-process-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:22px;list-style:none;padding:0;margin:0;counter-reset:process}.work-process-step{background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:28px 22px;position:relative;text-align:center}.step-number{width:48px;height:48px;border-radius:50%;background:var(--accent-primary);color:var(--btn-primary-text);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:1.2rem;margin:0 auto 14px}.step-icon{font-size:1.6rem;margin-bottom:8px}.step-title{font-size:1.05rem;font-weight:700;color:var(--text-primary);margin-bottom:8px}.step-description{font-size:.875rem;color:var(--text-muted);line-height:1.7}.key-stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:18px}.key-stat{background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:24px 20px;text-align:center}.stat-icon{font-size:1.6rem;margin-bottom:8px}.stat-value{font-size:2.2rem;font-weight:800;color:var(--accent-primary);line-height:1;margin-bottom:6px}.stat-label{font-size:.875rem;color:var(--text-muted);font-weight:500}.final-cta-card{background:linear-gradient(135deg,var(--accent-primary),var(--accent-hover));color:var(--btn-primary-text);border-radius:var(--radius-lg);padding:48px 40px;text-align:center}.final-cta-heading{font-size:2rem;font-weight:800;margin-bottom:14px}.final-cta-subtext{font-size:1rem;opacity:.92;max-width:640px;margin:0 auto 28px;line-height:1.7}.final-cta-actions{display:flex;gap:14px;justify-content:center;flex-wrap:wrap}.final-cta-actions .btn-primary{background:#fff;color:var(--accent-primary)}.final-cta-actions .btn-secondary{background:rgba(255,255,255,.15);color:#fff;border:1px solid rgba(255,255,255,.4)}.section-subtitle{font-size:.95rem;color:var(--text-muted);margin-top:8px}.about-value-proposition{font-size:1.15rem;font-weight:600;color:var(--accent-primary);background:var(--accent-light);border-left:4px solid var(--accent-primary);padding:16px 22px;border-radius:var(--radius-md);margin-bottom:24px;line-height:1.7}.contact-extra{display:flex;flex-direction:column;align-items:center;gap:14px;margin:28px 0 18px}.contact-response-time{font-size:.95rem;color:var(--text-muted)}.contact-response-time strong{color:var(--text-primary)}.pf .pf-comments{margin-top:48px;padding-top:32px;border-top:1px solid var(--border-color)}.pf .pf-comments-title{font-size:1.4rem;margin-bottom:24px}.pf .pf-comments-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:24px}.pf .pf-comments-title{display:flex;align-items:center;gap:10px;font-size:1.35rem;font-weight:700;color:var(--text-primary);margin:0}.pf .pf-comments-count{display:inline-flex;align-items:center;justify-content:center;padding:2px 10px;background:var(--accent-light);color:var(--accent-primary);border-radius:var(--radius-full);font-size:.8rem;font-weight:700;min-width:28px}.pf .pf-comments-cta{background:transparent;color:var(--accent-primary);border:1px solid var(--accent-primary);padding:8px 18px;border-radius:var(--radius-full);font-size:.85rem;font-weight:600;cursor:pointer;font-family:inherit;transition:var(--transition)}.pf .pf-comments-cta:hover{background:var(--accent-primary);color:var(--btn-primary-text,#fff)}.pf .pf-comments-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:48px 24px;background:var(--card-bg);border:1px dashed var(--border-color);border-radius:var(--radius-lg);color:var(--text-muted);font-size:.95rem;margin-bottom:36px}.pf .pf-comments-empty p{margin:0}.pf .pf-comments-list{padding:0;margin:0 0 40px;gap:16px}.pf .pf-comments-list,.pf .pf-comments-replies{list-style:none;display:flex;flex-direction:column}.pf .pf-comments-replies{margin:16px 0 0;padding:0 0 0 32px;border-left:2px solid var(--border-color);gap:12px}.pf .pf-comment{display:flex;gap:14px;background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:18px 20px;transition:var(--transition)}.pf .pf-comment:hover{border-color:color-mix(in srgb,var(--accent-primary) 40%,var(--border-color))}.pf .pf-comment-reply-item{background:var(--page-bg)}.pf .pf-comment-avatar{width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:1rem;color:#fff;flex-shrink:0;box-shadow:0 2px 6px rgba(0,0,0,.08)}.pf .pf-comment-avatar.small{width:34px;height:34px;font-size:.85rem}.pf .pf-comment-body{flex:1;min-width:0}.pf .pf-comment-header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px}.pf .pf-comment-meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.pf .pf-comment-author{font-weight:600;color:var(--text-primary);font-size:.92rem}.pf .pf-comment-author a{color:inherit;text-decoration:none}.pf .pf-comment-author a:hover{color:var(--accent-primary)}.pf .pf-comment-dot{color:var(--text-light);font-weight:500}.pf .pf-comment-date{font-size:.78rem;color:var(--text-light)}.pf .pf-comment-reply{display:inline-flex;align-items:center;gap:4px;background:transparent;border:none;color:var(--text-muted);font-size:.78rem;font-weight:500;cursor:pointer;padding:4px 8px;border-radius:var(--radius-sm);font-family:inherit;transition:var(--transition)}.pf .pf-comment-reply:hover{background:var(--tag-bg);color:var(--accent-primary)}.pf .pf-comment-content{color:var(--text-primary);line-height:1.75;font-size:.95rem;white-space:pre-wrap;word-break:break-word;margin:0}.pf .pf-comment-form{background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:24px 26px;display:flex;flex-direction:column;gap:14px;scroll-margin-top:80px}.pf .pf-comment-form-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.pf .pf-comment-form-title{font-size:1.05rem;font-weight:700;margin:0;color:var(--text-primary)}.pf .pf-comment-cancel-reply{background:transparent;border:1px solid var(--border-color);color:var(--text-muted);font-size:.78rem;padding:5px 12px;border-radius:var(--radius-full);cursor:pointer;font-family:inherit;transition:var(--transition)}.pf .pf-comment-cancel-reply:hover{border-color:#ef4444;color:#ef4444}.pf .pf-comment-form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media (max-width:640px){.pf .pf-comment-form-row{grid-template-columns:1fr}}.pf .pf-comment-input,.pf .pf-comment-textarea{width:100%;background:var(--page-bg);border:1px solid var(--border-color);border-radius:var(--radius-sm);padding:11px 14px;font-size:.92rem;color:var(--text-primary);font-family:inherit;outline:none;transition:var(--transition)}.pf .pf-comment-input:focus,.pf .pf-comment-textarea:focus{border-color:var(--accent-primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent-primary) 12%,transparent)}.pf .pf-comment-input::-moz-placeholder,.pf .pf-comment-textarea::-moz-placeholder{color:var(--text-light)}.pf .pf-comment-input::placeholder,.pf .pf-comment-textarea::placeholder{color:var(--text-light)}.pf .pf-comment-textarea{resize:vertical;min-height:110px;line-height:1.7}.pf .pf-comment-form-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:4px;flex-wrap:wrap}.pf .pf-comment-submit{display:inline-flex;align-items:center;gap:8px;background:var(--btn-primary-bg,var(--accent-primary));color:var(--btn-primary-text,#fff);border:none;padding:11px 24px;border-radius:var(--radius-md);font-size:.92rem;font-weight:600;cursor:pointer;font-family:inherit;transition:var(--transition)}.pf .pf-comment-submit:hover:not(:disabled){background:var(--accent-hover);transform:translateY(-1px);box-shadow:var(--shadow-md)}.pf .pf-comment-submit:disabled{opacity:.6;cursor:not-allowed}.pf .pf-comment-note{font-size:.8rem;color:var(--text-light);margin:0}.pf .pf-comment-success{background:#ecfdf5;color:#047857;border:1px solid #a7f3d0;padding:10px 14px;border-radius:var(--radius-sm);font-size:.9rem}.pf .pf-comment-error{background:#fef2f2;color:#b91c1c;border:1px solid #fecaca;padding:10px 14px;border-radius:var(--radius-sm);font-size:.9rem}.pf .pf-tags{display:flex;flex-wrap:wrap;gap:6px}.pf .pf-tag{display:inline-flex;align-items:center;padding:4px 10px;font-size:.75rem;font-weight:500;color:var(--text-muted);background:var(--tag-bg);border:1px solid var(--border-color);border-radius:var(--radius-full);text-decoration:none;line-height:1.5;transition:var(--transition)}.pf .pf-tag:hover{color:var(--accent-primary);border-color:var(--accent-primary)}.pf .pf-btn{display:inline-flex;align-items:center;gap:8px;padding:10px 20px;font-family:inherit;font-size:.9rem;font-weight:600;border-radius:var(--radius-md);border:1px solid transparent;cursor:pointer;text-decoration:none;transition:var(--transition);line-height:1}.pf .pf-btn-primary{background:var(--btn-primary-bg,var(--accent-primary));color:var(--btn-primary-text,#fff)}.pf .pf-btn-primary:hover{background:var(--accent-hover);transform:translateY(-1px);box-shadow:var(--shadow-md)}.pf .pf-btn-secondary{background:var(--btn-secondary-bg,var(--tag-bg));color:var(--btn-secondary-text,var(--text-primary));border-color:var(--border-color)}.pf .pf-btn-secondary:hover{border-color:var(--accent-primary);color:var(--accent-primary)}.pf .pf-blog-grid{display:grid;gap:24px;grid-template-columns:1fr}@media (min-width:640px){.pf .pf-blog-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width:1024px){.pf .pf-blog-grid{grid-template-columns:repeat(3,1fr)}}.pf .pf-blog-card{display:flex;flex-direction:column;background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-lg);overflow:hidden;transition:var(--transition);height:100%;position:relative}.pf .pf-blog-card:hover{transform:translateY(-4px);border-color:var(--accent-primary);box-shadow:var(--shadow-md)}.pf .pf-blog-img{width:100%;aspect-ratio:16/9;-o-object-fit:cover;object-fit:cover;background:var(--tag-bg);display:block}.pf .pf-blog-body{padding:18px 20px 20px;display:flex;flex-direction:column;gap:8px;flex:1}.pf .pf-blog-cats{font-size:.72rem;font-weight:600;letter-spacing:.02em;color:var(--accent-primary);text-transform:uppercase}.pf .pf-blog-title{font-size:1.05rem;font-weight:700;line-height:1.5;color:var(--text-primary);-webkit-line-clamp:2}.pf .pf-blog-excerpt,.pf .pf-blog-title{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}.pf .pf-blog-excerpt{font-size:.85rem;color:var(--text-muted);line-height:1.7;-webkit-line-clamp:3}.pf .pf-blog-meta{margin-top:auto;padding-top:12px;display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:.75rem;color:var(--text-light);border-top:1px solid var(--border-color)}.pf .pf-blog-featured-badge{position:absolute;top:12px;right:12px;z-index:1;padding:4px 10px;background:rgba(255,255,255,.95);backdrop-filter:blur(6px);border-radius:var(--radius-full);font-size:.7rem;font-weight:700;color:#d97706;box-shadow:var(--shadow-sm)}.pf .pf-projects-grid{display:grid;gap:24px;grid-template-columns:1fr}@media (min-width:640px){.pf .pf-projects-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width:1100px){.pf .pf-projects-grid{grid-template-columns:repeat(3,1fr)}}.pf .pf-project-card{display:flex;flex-direction:column;background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-lg);overflow:hidden;transition:var(--transition);height:100%}.pf .pf-project-card:hover{transform:translateY(-4px);border-color:var(--accent-primary);box-shadow:var(--shadow-md)}.pf .pf-project-img{-o-object-fit:cover;object-fit:cover;display:block}.pf .pf-project-img,.pf .pf-project-img-placeholder{width:100%;aspect-ratio:16/10;background:var(--tag-bg)}.pf .pf-project-img-placeholder{display:flex;align-items:center;justify-content:center;color:var(--text-light);font-size:.85rem}.pf .pf-project-body{padding:18px 20px 16px;display:flex;flex-direction:column;gap:8px;flex:1}.pf .pf-project-cats{font-size:.72rem;font-weight:600;letter-spacing:.02em;color:var(--accent-primary);text-transform:uppercase}.pf .pf-project-title{font-size:1.1rem;font-weight:700;line-height:1.45;color:var(--text-primary);-webkit-line-clamp:2}.pf .pf-project-desc,.pf .pf-project-title{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}.pf .pf-project-desc{font-size:.85rem;color:var(--text-muted);line-height:1.75;-webkit-line-clamp:3}.pf .pf-project-desc *{display:inline}.pf .pf-project-employer{font-size:.78rem;color:var(--text-light)}.pf .pf-project-footer{padding:14px 20px;border-top:1px solid var(--border-color);display:flex;align-items:center;justify-content:flex-end;background:var(--page-bg)}.pf .pf-more-link{display:inline-flex;align-items:center;gap:4px;font-size:.85rem;font-weight:600;color:var(--accent-primary);text-decoration:none;transition:var(--transition)}.pf .pf-more-link:hover{gap:8px}.pf .pf-more-link svg{transition:var(--transition)}.pf .pf-more-link:hover svg{transform:translateX(-2px)}.pf .pf-proj-detail-header{margin-bottom:28px}.pf .pf-proj-detail-cats{display:inline-block;padding:4px 12px;background:var(--accent-light);color:var(--accent-primary);border-radius:var(--radius-full);font-size:.75rem;font-weight:700;letter-spacing:.02em;text-transform:uppercase;margin-bottom:14px}.pf .pf-proj-detail-meta{display:flex;flex-wrap:wrap;gap:18px;font-size:.875rem;color:var(--text-muted);margin-bottom:22px}.pf .pf-proj-detail-meta span{display:inline-flex;align-items:center;gap:6px}.pf .pf-proj-content-section{background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:24px 26px;margin-bottom:22px}.pf .pf-proj-content-section h3{display:flex;align-items:center;gap:8px;font-size:1.05rem;font-weight:700;color:var(--text-primary);margin:0 0 14px}.pf .pf-proj-content-section h3 span{font-size:1.2rem}.pf .pf-proj-desc{font-size:.95rem;color:var(--text-primary);line-height:1.85}.pf .pf-proj-desc p{margin:0 0 12px}.pf .pf-proj-desc ol,.pf .pf-proj-desc ul{padding-left:22px;margin:0 0 12px;list-style:initial}.pf .pf-proj-desc ol{list-style:decimal}.pf .pf-proj-main-img{width:100%;max-height:520px;-o-object-fit:cover;object-fit:cover;border-radius:var(--radius-lg);border:1px solid var(--border-color)}.pf .pf-proj-gallery{margin-bottom:28px}.pf .pf-blog-content{background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:32px 36px;margin:24px auto}@media (max-width:640px){.pf .pf-blog-content{padding:22px 18px}}.pf .pf-blog-hero-img{border:1px solid var(--border-color)}.pf .pf-page{padding:50px 24px 80px}.pf .pf-page-header{margin:40px 0 36px}.pf .pf-empty,.pf .pf-page-back{background:var(--card-bg)}.pf .pf-empty{border:1px dashed var(--border-color);border-radius:var(--radius-lg);padding:60px 20px;text-align:center;color:var(--text-muted)}.pf .pf-pagination{display:flex;justify-content:center;align-items:center;gap:6px;margin:48px 0 16px;flex-wrap:wrap}.pf .pf-page-nav-btn,.pf .pf-page-num{display:inline-flex;align-items:center;justify-content:center;min-width:38px;height:38px;padding:0 12px;background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-muted);font-size:.9rem;font-weight:600;text-decoration:none;transition:var(--transition)}.pf .pf-page-nav-btn:hover,.pf .pf-page-num:hover{border-color:var(--accent-primary);color:var(--accent-primary);transform:translateY(-1px)}.pf .pf-page-num.active{background:var(--accent-primary);color:var(--btn-primary-text,#fff);border-color:var(--accent-primary);cursor:default}.pf .pf-page-num.active:hover{transform:none;color:var(--btn-primary-text,#fff)}.pf .pf-page-ellipsis{display:inline-flex;align-items:center;justify-content:center;min-width:28px;color:var(--text-light);font-weight:600;-webkit-user-select:none;-moz-user-select:none;user-select:none}.pf .pf-proj-detail-title{color:var(--text-primary)}.pf .pf-proj-actions{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:28px}.pf .pf-page-container{max-width:1200px;margin:0 auto}.pf .pf-progress-bar{background:var(--tag-bg)}.pf .pf-progress-fill{background:var(--accent-primary)}