@import url("https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;500;600;700;800;900&display=swap");:root{--bg:#ffffff;--bg-subtle:#f7f7f5;--bg-card:#fafaf8;--border:#e8e8e3;--border-hover:#b0b0aa;--text:#111111;--text-secondary:#555555;--text-muted:#909090;--font:"Montserrat",sans-serif;--text-xs:0.75rem;--text-sm:0.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-3xl:2rem;--sp-1:0.25rem;--sp-2:0.5rem;--sp-3:0.75rem;--sp-4:1rem;--sp-5:1.25rem;--sp-6:1.5rem;--sp-8:2rem;--sp-10:2.5rem;--sp-12:3rem;--sp-16:4rem;--sp-20:5rem;--sp-24:6rem;--radius-sm:6px;--radius:12px;--radius-lg:18px;--radius-full:9999px;--shadow-sm:0 1px 2px rgba(0,0,0,0.05);--shadow:0 1px 4px rgba(0,0,0,0.07),0 2px 8px rgba(0,0,0,0.04);--shadow-md:0 4px 16px rgba(0,0,0,0.08),0 1px 4px rgba(0,0,0,0.04);--shadow-lg:0 8px 32px rgba(0,0,0,0.10);--transition:all 0.2s ease;--container:1160px;--nav-height:72px}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{font-family:var(--font);font-size:var(--text-base);color:var(--text);background:var(--bg);line-height:1.65;overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img{max-width:100%;height:auto;display:block}a{color:inherit;text-decoration:none}ol,ul{list-style:none}h1,h2,h3,h4,h5{line-height:1.2}.container{width:100%;max-width:var(--container);margin:0 auto;padding:0 var(--sp-6)}.section{padding:var(--sp-24) 0}.section-label{display:inline-block;font-size:var(--text-xs);font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted);margin-bottom:var(--sp-4)}.section-title{font-size:clamp(1.75rem,3vw,2.25rem);font-weight:800;letter-spacing:-.025em;color:var(--text);margin-bottom:var(--sp-4)}.section-desc{font-size:var(--text-lg);color:var(--text-secondary);max-width:560px;line-height:1.75}.btn-primary{display:inline-flex;align-items:center;gap:var(--sp-2);padding:.75rem 1.75rem;background:var(--text);color:#fff!important;font-family:var(--font);font-size:var(--text-sm);font-weight:600;border-radius:var(--radius-full);transition:var(--transition);border:1.5px solid var(--text)}.btn-primary:hover{background:#2b2b2b;border-color:#2b2b2b;transform:translateY(-2px);box-shadow:0 6px 18px rgba(0,0,0,.15)}.btn-outline{display:inline-flex;align-items:center;gap:var(--sp-2);padding:.75rem 1.75rem;background:transparent;color:var(--text)!important;font-family:var(--font);font-size:var(--text-sm);font-weight:600;border-radius:var(--radius-full);border:1.5px solid var(--border);transition:var(--transition)}.btn-outline:hover{border-color:var(--text);background:var(--bg-subtle);transform:translateY(-2px)}.site-header{position:fixed;top:0;left:0;right:0;z-index:200;height:var(--nav-height);background:rgba(255,255,255,.88);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid transparent;transition:border-color .3s ease,box-shadow .3s ease}.site-header.scrolled{border-color:var(--border);box-shadow:var(--shadow-sm)}.site-nav{display:flex;align-items:center;justify-content:space-between;height:var(--nav-height)}.nav-logo{font-size:var(--text-xl);font-weight:900;letter-spacing:-.04em;z-index:201;position:relative}.nav-logo,.nav-logo:hover{color:var(--text)}.nav-links{display:flex;align-items:center;gap:var(--sp-8);margin:0;padding:0}.nav-links,.nav-links li,.nav-links ul{list-style:none}.nav-links ul{display:flex;align-items:center;gap:var(--sp-8);margin:0;padding:0}.nav-links a{font-size:var(--text-sm);font-weight:500;color:var(--text-secondary);transition:var(--transition);position:relative}.nav-links a:after{content:"";position:absolute;bottom:-3px;left:0;width:0;height:1.5px;background:var(--text);transition:width .2s ease}.nav-links a.current-menu-item,.nav-links a:hover{color:var(--text)}.nav-links a:hover:after{width:100%}.nav-cta{display:inline-flex;align-items:center;padding:.5rem 1.25rem;background:var(--text);color:#fff!important;font-size:var(--text-sm);font-weight:600;border-radius:var(--radius-full);transition:var(--transition)}.nav-cta:hover{background:#2b2b2b;transform:translateY(-1px)}.nav-links .nav-cta-wrap,.nav-toggle{display:none}.nav-toggle{flex-direction:column;gap:5px;padding:var(--sp-2);z-index:201;cursor:pointer;background:none;border:none;position:relative}.nav-toggle span{display:block;width:22px;height:2px;background:var(--text);border-radius:2px;transition:var(--transition)}.site-header.nav-open .nav-toggle span:first-child{transform:translateY(7px) rotate(45deg)}.site-header.nav-open .nav-toggle span:nth-child(2){opacity:0}.site-header.nav-open .nav-toggle span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}#hero{min-height:100vh;display:flex;padding-top:var(--nav-height);background:var(--bg)}#hero,.hero-inner{align-items:center}.hero-inner{display:grid;grid-template-columns:1fr 1fr;grid-gap:var(--sp-16);gap:var(--sp-16);padding:var(--sp-20) 0;width:100%}.hero-badge{display:inline-flex;align-items:center;gap:var(--sp-2);padding:.35rem var(--sp-4);background:#f0fdf4;color:#166534;font-size:var(--text-xs);font-weight:700;border-radius:var(--radius-full);border:1px solid #bbf7d0;margin-bottom:var(--sp-6);letter-spacing:.04em}.hero-badge-dot{width:7px;height:7px;border-radius:50%;background:#22c55e;animation:blink 2s ease-in-out infinite;flex-shrink:0}@keyframes blink{0%,to{opacity:1}50%{opacity:.3}}.hero-title{font-size:clamp(2rem,4.5vw,3.5rem);font-weight:900;letter-spacing:-.04em;color:var(--text);line-height:1.08;margin-bottom:var(--sp-6)}.hero-title em{font-style:normal;color:var(--text-muted)}.hero-desc{font-size:var(--text-lg);color:var(--text-secondary);line-height:1.75;margin-bottom:var(--sp-10);max-width:460px}.hero-actions{display:flex;align-items:center;gap:var(--sp-4);flex-wrap:wrap}.hero-image-col{display:flex;justify-content:flex-end}.hero-image-frame{position:relative;width:100%;max-width:420px}.hero-image-bg{position:absolute;inset:0;border-radius:var(--radius-lg);background:linear-gradient(145deg,#efefed,#e3e3e0);z-index:0}.hero-photo{object-fit:cover;object-position:top center}.hero-photo,.hero-photo-placeholder{position:relative;z-index:1;width:100%;aspect-ratio:4/5;border-radius:calc(var(--radius-lg) - 2px)}.hero-photo-placeholder{background:linear-gradient(145deg,#efefed,#e3e3e0);display:flex;align-items:center;justify-content:center;font-size:5rem;color:#ccc}#skills{background:var(--bg-subtle);padding:var(--sp-24) 0}.skills-header{margin-bottom:var(--sp-12)}.skills-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:var(--sp-5);gap:var(--sp-5)}.skill-card{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-8);transition:var(--transition);display:flex;flex-direction:column}.skill-card:hover{border-color:var(--border-hover);box-shadow:var(--shadow-md);transform:translateY(-3px)}.skill-icon{width:42px;height:42px;object-fit:contain;margin-bottom:var(--sp-5)}.skill-counter{font-size:2.25rem;font-weight:900;color:var(--text);letter-spacing:-.04em;line-height:1;margin-bottom:var(--sp-2)}.skill-name{font-weight:700;color:var(--text);margin-bottom:var(--sp-3)}.skill-desc,.skill-name{font-size:var(--text-sm)}.skill-desc{color:var(--text-muted);line-height:1.65;margin-top:auto}#why-choose{padding:var(--sp-24) 0;background:var(--bg)}.why-layout{display:grid;grid-template-columns:1fr 1.8fr;grid-gap:var(--sp-16);gap:var(--sp-16);align-items:start}.why-sticky{position:-webkit-sticky;position:sticky;top:calc(var(--nav-height) + var(--sp-8))}.why-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:var(--sp-5);gap:var(--sp-5)}.why-card{padding:var(--sp-8);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg);transition:var(--transition)}.why-card:hover{box-shadow:var(--shadow-md);border-color:var(--border-hover);transform:translateY(-2px)}.why-icon{width:42px;height:42px;object-fit:contain;margin-bottom:var(--sp-5)}.why-title{font-size:var(--text-base);font-weight:700;color:var(--text);margin-bottom:var(--sp-3);line-height:1.3}.why-desc{font-size:var(--text-sm);color:var(--text-secondary);line-height:1.7}#latest-projects{background:var(--bg-subtle);padding:var(--sp-24) 0}.projects-header{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:var(--sp-12);gap:var(--sp-6)}.see-all{display:inline-flex;align-items:center;gap:var(--sp-2);font-size:var(--text-sm);font-weight:600;color:var(--text-secondary);white-space:nowrap;transition:var(--transition);padding-bottom:2px;border-bottom:1.5px solid var(--border)}.see-all:hover{color:var(--text);border-color:var(--text)}.projects-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:var(--sp-6);gap:var(--sp-6)}.project-card{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;transition:var(--transition);display:flex;flex-direction:column}.project-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-4px);border-color:var(--border-hover)}.project-thumb-wrap{overflow:hidden;aspect-ratio:16/10;background:var(--bg-subtle)}.project-thumb{width:100%;height:100%;object-fit:cover;transition:transform .45s ease}.project-card:hover .project-thumb{transform:scale(1.06)}.project-no-image{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-size:var(--text-sm);font-weight:500;background:var(--bg-subtle)}.project-info{padding:var(--sp-5) var(--sp-6);display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);flex:1 1}.project-name{font-size:var(--text-base);font-weight:700;color:var(--text);line-height:1.3}.project-arrow{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;background:var(--bg-subtle);border:1px solid var(--border);color:var(--text);font-size:1rem;flex-shrink:0;transition:var(--transition)}.project-card:hover .project-arrow{background:var(--text);border-color:var(--text);color:#fff}.projects-cta{text-align:center;margin-top:var(--sp-12)}.site-footer{background:#0f0f0f;color:#fff;padding:var(--sp-20) 0 var(--sp-8)}.footer-grid{display:grid;grid-template-columns:1.2fr 1fr;grid-gap:var(--sp-16);gap:var(--sp-16);padding-bottom:var(--sp-12);border-bottom:1px solid rgba(255,255,255,.08);margin-bottom:var(--sp-8)}.footer-logo{font-size:var(--text-2xl);font-weight:900;letter-spacing:-.04em;margin-bottom:var(--sp-4)}.footer-tagline{font-size:var(--text-sm);color:rgba(255,255,255,.45);line-height:1.75;max-width:360px;margin-bottom:var(--sp-8)}.footer-socials{display:flex;gap:var(--sp-3)}.footer-social{display:flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:50%;border:1px solid rgba(255,255,255,.15);color:rgba(255,255,255,.6);font-size:1rem;transition:var(--transition)}.footer-social:hover{background:rgba(255,255,255,.08);color:#fff;border-color:rgba(255,255,255,.35)}.footer-contact-label{font-size:var(--text-xs);font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.35);margin-bottom:var(--sp-6)}.footer-contact-list{display:flex;flex-direction:column;gap:var(--sp-5)}.footer-contact-item{display:flex;align-items:flex-start;gap:var(--sp-3);font-size:var(--text-sm);color:rgba(255,255,255,.6);line-height:1.5}.footer-contact-item i{margin-top:2px;color:rgba(255,255,255,.3);font-size:.95rem;flex-shrink:0}.footer-contact-item a{color:inherit;transition:color .2s ease}.footer-contact-item a:hover{color:#fff}.footer-bottom{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4)}.footer-copy,.footer-made{font-size:var(--text-sm);color:rgba(255,255,255,.3)}@media (max-width:1024px){.why-layout{grid-template-columns:1fr}.why-sticky{position:static}}@media (max-width:900px){.projects-grid,.skills-grid{grid-template-columns:repeat(2,1fr)}.why-grid{grid-template-columns:1fr 1fr}}@media (max-width:767px){:root{--nav-height:64px}.container{padding:0 var(--sp-4)}.nav-toggle{display:flex}.nav-cta-desktop{display:none}.nav-links .nav-cta-wrap{display:block;margin-top:auto;padding-top:var(--sp-8);width:100%}.nav-links{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:0;position:fixed;top:0;left:0;bottom:0;height:100dvh;width:min(75vw,280px);background:#fff;padding:calc(var(--nav-height) + var(--sp-10)) var(--sp-6) var(--sp-10);z-index:290;box-shadow:4px 0 40px rgba(0,0,0,.14);transform:translateX(-100%);transition:transform .35s cubic-bezier(.4,0,.2,1);overflow-y:auto;list-style:none}.nav-links li{list-style:none;width:100%}.nav-links ul{flex-direction:column;align-items:flex-start;gap:0;width:100%}.nav-links a{display:block;font-size:1.25rem;font-weight:700;color:var(--text);letter-spacing:-.02em;padding:var(--sp-4) 0;border-bottom:1px solid var(--border);width:100%}.nav-links li:last-of-type a{border-bottom:none}.nav-links a:after{display:none}.nav-backdrop{display:block;position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:280;opacity:0;pointer-events:none;transition:opacity .35s ease}.site-header{z-index:300}.site-header.nav-open .nav-links{transform:translateX(0)}.site-header.nav-open .nav-backdrop{opacity:1;pointer-events:auto}.nav-links .nav-cta{width:100%;justify-content:center}.hero-inner{grid-template-columns:1fr;gap:var(--sp-8);padding:calc(var(--nav-height) + var(--sp-8)) 0 var(--sp-12);text-align:center}.hero-image-col{justify-content:center;order:-1}.hero-image-frame{max-width:220px;margin:0 auto}.hero-badge{margin:0 auto var(--sp-4)}.hero-title{font-size:clamp(1.6rem,6vw,2.4rem)}.hero-desc{font-size:var(--text-base);margin-left:auto;margin-right:auto;max-width:100%}.hero-actions{justify-content:center;flex-direction:column;align-items:stretch;gap:var(--sp-3)}.hero-actions .btn-outline,.hero-actions .btn-primary{width:100%;justify-content:center}.section{padding:var(--sp-16) 0}.section-title{font-size:clamp(1.5rem,5vw,2rem)}.skills-grid{grid-template-columns:1fr 1fr;gap:var(--sp-4)}.skill-card{padding:var(--sp-5)}.projects-grid,.why-grid{grid-template-columns:1fr}.projects-header{flex-direction:column;align-items:flex-start;gap:var(--sp-4)}.footer-grid{grid-template-columns:1fr;gap:var(--sp-10)}.footer-bottom{flex-direction:column;text-align:center;gap:var(--sp-3)}}@media (max-width:480px){.container{padding:0 var(--sp-4)}.hero-image-frame{max-width:180px}.hero-title{font-size:clamp(1.4rem,7vw,2rem)}.skills-grid{grid-template-columns:1fr}.btn-outline,.btn-primary{font-size:var(--text-sm);padding:.65rem 1.25rem}}.sp-breadcrumb{padding-top:calc(var(--nav-height) + var(--sp-6));padding-bottom:var(--sp-4);background:var(--bg)}.sp-breadcrumb-list{gap:var(--sp-2);flex-wrap:wrap;font-size:var(--text-sm);color:var(--text-muted);list-style:none;padding:0;margin:0}.sp-breadcrumb-list,.sp-breadcrumb-list li{display:flex;align-items:center}.sp-breadcrumb-list a{color:var(--text-muted);transition:var(--transition)}.sp-breadcrumb-list a:hover{color:var(--text)}.sp-breadcrumb-list [aria-current=page]{color:var(--text);font-weight:600}.sp-breadcrumb-list .bi{font-size:.7rem}.sp-tags{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-bottom:var(--sp-5)}.sp-tag{display:inline-block;padding:.25rem .75rem;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:600;color:var(--text-secondary);text-decoration:none;transition:var(--transition)}.sp-tag:hover,a.sp-tag:hover{border-color:var(--border-hover);color:var(--text);background:#fff}.sp-tag--sm{padding:.2rem .6rem;font-size:.7rem}.sp-hero{background:var(--bg);padding:var(--sp-12) 0 var(--sp-16)}.sp-hero-inner{display:grid;grid-template-columns:1fr 1fr;grid-gap:var(--sp-16);gap:var(--sp-16);align-items:center}.sp-title{font-size:clamp(2rem,4vw,3.25rem);font-weight:900;letter-spacing:-.04em;color:var(--text);margin-bottom:var(--sp-5);line-height:1.08}.sp-excerpt{font-size:var(--text-lg);color:var(--text-secondary);line-height:1.75;margin-bottom:var(--sp-8);max-width:500px}.sp-cta-group{align-items:center;gap:var(--sp-4);margin-bottom:var(--sp-10)}.sp-cta-group,.sp-meta{display:flex;flex-wrap:wrap}.sp-meta{gap:var(--sp-8);padding-top:var(--sp-8);border-top:1px solid var(--border)}.sp-meta-item{display:flex;flex-direction:column;gap:var(--sp-1)}.sp-meta-label{font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted)}.sp-meta-value{font-size:var(--text-sm);font-weight:600;color:var(--text)}.sp-hero-image-col{display:flex;justify-content:flex-end}.sp-hero-image-frame{width:100%;max-width:480px;border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-lg);border:1px solid var(--border)}.sp-hero-img{width:100%;height:auto;display:block}.sp-showcase{background:var(--bg-subtle);padding:var(--sp-16) 0}.sp-showcase-frame{border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--border);box-shadow:var(--shadow-lg);background:#1e1e1e}.sp-window-bar{display:flex;align-items:center;gap:var(--sp-2);padding:.75rem var(--sp-5);background:#2a2a2a;border-bottom:1px solid #3a3a3a}.sp-dot{width:12px;height:12px;border-radius:50%;flex-shrink:0}.sp-dot--red{background:#ff5f57}.sp-dot--yellow{background:#febc2e}.sp-dot--green{background:#28c840}.sp-url-bar{flex:1 1;text-align:center;background:rgba(255,255,255,.08);border-radius:var(--radius-sm);padding:.2rem var(--sp-4);font-size:var(--text-xs);color:rgba(255,255,255,.45);font-family:var(--font);max-width:360px;margin:0 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sp-showcase-img{width:100%;height:auto;display:block}.sp-body{background:var(--bg)}.sp-hero-content{display:flex;flex-direction:column}.sp-content{min-width:0}.sp-layout{display:grid;grid-template-columns:1fr 320px;grid-gap:var(--sp-16);gap:var(--sp-16);align-items:start}.sp-content-title{font-size:var(--text-2xl);font-weight:800;letter-spacing:-.025em;color:var(--text);margin-bottom:var(--sp-6);margin-top:var(--sp-3)}.sp-description{font-size:var(--text-base);color:var(--text-secondary);line-height:1.85}.sp-description p{margin-bottom:var(--sp-5)}.sp-description h2,.sp-description h3{color:var(--text);font-weight:700;margin:var(--sp-8) 0 var(--sp-4)}.sp-description ul{padding-left:var(--sp-5);list-style:disc}.sp-description li{margin-bottom:var(--sp-2)}.sp-description strong{color:var(--text);font-weight:700}.sp-sidebar{display:flex;flex-direction:column;gap:var(--sp-5)}.sp-sidebar-card{background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-8);position:-webkit-sticky;position:sticky;top:calc(var(--nav-height) + var(--sp-6))}.sp-sidebar-title{font-size:var(--text-base);font-weight:700;color:var(--text);margin-bottom:var(--sp-6);padding-bottom:var(--sp-4);border-bottom:1px solid var(--border)}.sp-info-list{display:flex;flex-direction:column;gap:0}.sp-info-row{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--sp-4);padding:var(--sp-4) 0;border-bottom:1px solid var(--border)}.sp-info-row:last-child{border-bottom:none}.sp-info-row dt{font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);flex-shrink:0;padding-top:2px}.sp-info-row dd{font-size:var(--text-sm);font-weight:600;color:var(--text);text-align:right}.sp-sidebar-tags{display:flex;flex-wrap:wrap;gap:var(--sp-1);justify-content:flex-end}.sp-sidebar-links{display:flex;flex-direction:column;gap:var(--sp-3);margin-top:var(--sp-6)}.sp-link-btn{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);font-size:var(--text-sm);font-weight:600;color:var(--text);transition:var(--transition)}.sp-link-btn:hover{border-color:var(--border-hover);box-shadow:var(--shadow);transform:translateY(-1px)}.sp-link-btn .bi:last-child{margin-left:auto;color:var(--text-muted);font-size:.75rem}.sp-sidebar-cta{background:var(--text);border-radius:var(--radius-lg);padding:var(--sp-6) var(--sp-8);text-align:center}.sp-sidebar-cta p{font-size:var(--text-sm);color:rgba(255,255,255,.6);margin-bottom:var(--sp-4)}.sp-sidebar-cta .btn-primary{background:#fff;color:var(--text)!important;border-color:#fff}.sp-sidebar-cta .btn-primary:hover{background:rgba(255,255,255,.9);border-color:rgba(255,255,255,.9)}.sp-project-nav{background:var(--bg-subtle);border-top:1px solid var(--border);padding:var(--sp-12) 0}.sp-nav-inner{display:grid;grid-template-columns:1fr 1fr;grid-gap:var(--sp-6);gap:var(--sp-6)}.sp-nav-card{display:flex;align-items:center;gap:var(--sp-5);padding:var(--sp-6);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-lg);transition:var(--transition);text-decoration:none}.sp-nav-card:hover{border-color:var(--border-hover);box-shadow:var(--shadow-md);transform:translateY(-2px)}.sp-nav-card--right{text-align:right}.sp-nav-card--right,.sp-nav-card--right .sp-nav-label{flex-direction:row-reverse}.sp-nav-card-content{display:flex;flex-direction:column;gap:var(--sp-1);flex:1 1;min-width:0}.sp-nav-label{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted)}.sp-nav-name{font-size:var(--text-base);font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sp-nav-thumb{width:72px;height:52px;border-radius:var(--radius-sm);overflow:hidden;flex-shrink:0;border:1px solid var(--border)}.sp-nav-thumb img{width:100%;height:100%;object-fit:cover}@media (max-width:900px){.sp-hero-inner{grid-template-columns:1fr;gap:var(--sp-10)}.sp-hero-image-col{display:none}.sp-layout{grid-template-columns:1fr}.sp-sidebar-card{position:static}}@media (max-width:640px){.sp-hero{padding:var(--sp-8) 0 var(--sp-10)}.sp-title{font-size:1.875rem}.sp-meta{gap:var(--sp-5)}.sp-nav-inner{grid-template-columns:1fr}.sp-cta-group{flex-direction:column;align-items:flex-start}.sp-cta-group .btn-outline,.sp-cta-group .btn-primary{width:100%;justify-content:center}}.pj-hero{padding-top:calc(var(--nav-height) + var(--sp-10));padding-bottom:var(--sp-10);background:var(--bg);border-bottom:1px solid var(--border)}.pj-hero-title{font-size:clamp(2.25rem,4.5vw,3.5rem);font-weight:900;letter-spacing:-.04em;color:var(--text);line-height:1.06;margin-top:var(--sp-3);margin-bottom:var(--sp-4)}.pj-hero-title em{font-style:normal;color:var(--text-muted)}.pj-hero-desc{font-size:var(--text-base);color:var(--text-secondary);max-width:480px;line-height:1.75}.pj-filters-wrap{background:var(--bg);border-bottom:1px solid var(--border);position:-webkit-sticky;position:sticky;top:var(--nav-height);z-index:100}.pj-filters{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-4) 0;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none}.pj-filters::-webkit-scrollbar{display:none}.pj-filter{display:inline-flex;align-items:center;gap:6px;padding:5px 14px;border-radius:var(--radius-full);border:1px solid var(--border);font-size:.8125rem;font-weight:600;color:var(--text-secondary);white-space:nowrap;transition:var(--transition);flex-shrink:0}.pj-filter:hover{border-color:var(--border-hover);color:var(--text);background:var(--bg-subtle)}.pj-filter--active{background:var(--text);border-color:var(--text);color:#fff!important}.pj-filter-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 4px;border-radius:var(--radius-full);font-size:.625rem;font-weight:700;background:rgba(0,0,0,.07);color:inherit;line-height:1}.pj-filter--active .pj-filter-count{background:rgba(255,255,255,.18);color:rgba(255,255,255,.85)}.pj-section{background:var(--bg-subtle);padding:var(--sp-10) 0 var(--sp-20)}.pj-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:14px;gap:14px}.pj-card{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;display:flex;flex-direction:column;transition:box-shadow .25s ease,transform .25s ease,border-color .25s ease;cursor:pointer}.pj-card:hover{box-shadow:0 8px 28px rgba(0,0,0,.09);transform:translateY(-3px);border-color:var(--border-hover)}.pj-card--featured{grid-column:span 2}.pj-card-image-link{display:block;flex-shrink:0}.pj-card-thumb{position:relative;overflow:hidden;aspect-ratio:16/10;background:var(--bg-subtle)}.pj-card--featured .pj-card-thumb{aspect-ratio:21/10}.pj-card-img{width:100%;height:100%;object-fit:cover;transition:transform .5s ease;display:block}.pj-card:hover .pj-card-img{transform:scale(1.04)}.pj-card-no-img{width:100%;height:100%;color:var(--border-hover);font-size:2rem;background:var(--bg-subtle)}.pj-card-no-img,.pj-card-overlay{display:flex;align-items:center;justify-content:center}.pj-card-overlay{position:absolute;inset:0;background:rgba(10,10,10,.52);opacity:0;transition:opacity .28s ease}.pj-card:hover .pj-card-overlay{opacity:1}.pj-card-overlay-text{display:inline-flex;align-items:center;gap:6px;color:#fff;font-size:.8125rem;font-weight:600;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.28);border-radius:var(--radius-full);padding:.5rem 1.1rem;letter-spacing:.01em}.pj-card-footer{padding:12px 14px;flex:1 1;display:flex;flex-direction:column;gap:10px}.pj-card--featured .pj-card-footer{padding:14px 18px}.pj-card-meta{display:flex;flex-direction:column;gap:8px}.pj-card-tags{display:flex;flex-wrap:wrap;gap:4px}.pj-card-tags .sp-tag{font-size:10px;padding:2px 7px;font-weight:600}.pj-card-title-row{display:flex;align-items:center;justify-content:space-between;gap:10px}.pj-card-title{font-size:.8125rem;font-weight:600;line-height:1.35;color:var(--text);flex:1 1;min-width:0}.pj-card--featured .pj-card-title{font-size:.9375rem}.pj-card-title a{color:inherit}.pj-card-title a:hover{color:var(--text-secondary)}.pj-card-arrow{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;border:1px solid var(--border);background:var(--bg-subtle);color:var(--text);font-size:.875rem;flex-shrink:0;transition:var(--transition)}.pj-card:hover .pj-card-arrow{background:var(--text);border-color:var(--text);color:#fff}.pj-card-links{display:flex;gap:14px;flex-wrap:wrap;padding-top:10px;border-top:1px solid var(--border);margin-top:2px}.pj-quick-link{display:inline-flex;align-items:center;gap:5px;font-size:.6875rem;font-weight:600;color:var(--text-muted);transition:color .2s ease}.pj-quick-link i{font-size:.75rem}.pj-quick-link:hover{color:var(--text)}.pj-pagination{display:flex;justify-content:center;align-items:center;gap:var(--sp-2);margin-top:var(--sp-16);flex-wrap:wrap}.pj-pagination .page-numbers{display:inline-flex;align-items:center;justify-content:center;min-width:40px;height:40px;padding:0 var(--sp-4);border-radius:var(--radius-full);border:1.5px solid var(--border);font-size:var(--text-sm);font-weight:600;color:var(--text-secondary);transition:var(--transition);background:var(--bg)}.pj-pagination .page-numbers:hover{border-color:var(--border-hover);color:var(--text)}.pj-pagination .page-numbers.current{background:var(--text);border-color:var(--text);color:#fff}.pj-pagination .next,.pj-pagination .prev{padding:0 var(--sp-5);display:inline-flex;align-items:center;gap:var(--sp-2)}.pj-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-5);padding:var(--sp-24) 0;text-align:center;color:var(--text-muted)}.pj-empty i{font-size:3rem}.pj-empty p{font-size:var(--text-lg)}.pj-cta{background:var(--bg);border-top:1px solid var(--border);padding:var(--sp-16) 0}.pj-cta-inner{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-8);flex-wrap:wrap}.pj-cta-title{font-size:var(--text-2xl);font-weight:800;letter-spacing:-.025em;margin-bottom:var(--sp-2)}.pj-cta-desc{font-size:var(--text-base);color:var(--text-secondary)}@media (max-width:1024px){.pj-grid{grid-template-columns:repeat(2,1fr)}.pj-card--featured{grid-column:span 2}}@media (max-width:640px){.pj-grid{grid-template-columns:1fr}.pj-card--featured{grid-column:span 1}.pj-cta-inner{flex-direction:column;align-items:flex-start}.pj-hero-title{font-size:2.25rem}}.ct-hero{padding-top:calc(var(--nav-height) + var(--sp-12));padding-bottom:var(--sp-12);background:var(--bg);border-bottom:1px solid var(--border)}.ct-hero-inner{display:grid;grid-template-columns:1fr 1fr;grid-gap:var(--sp-16);gap:var(--sp-16);align-items:start}.ct-title{font-size:clamp(2.5rem,5vw,4rem);font-weight:900;letter-spacing:-.045em;line-height:1.05;color:var(--text);margin:var(--sp-3) 0 var(--sp-5)}.ct-title em{font-style:normal;color:var(--text-muted)}.ct-subtitle{font-size:var(--text-base);color:var(--text-secondary);line-height:1.75;margin-bottom:var(--sp-6)}.ct-availability{display:inline-flex;align-items:center;gap:var(--sp-2);padding:.4rem var(--sp-4);background:#f0fdf4;border:1px solid #bbf7d0;border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:700;color:#166534;letter-spacing:.02em}.ct-availability-dot{width:7px;height:7px;border-radius:50%;background:#22c55e;flex-shrink:0;animation:blink 2s ease-in-out infinite}.ct-info-cards{display:flex;flex-direction:column;gap:var(--sp-3)}.ct-info-card{display:flex;align-items:center;gap:var(--sp-4);padding:var(--sp-4) var(--sp-5);background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-lg);transition:var(--transition);color:var(--text)}a.ct-info-card:hover{border-color:var(--border-hover);box-shadow:var(--shadow);transform:translateX(3px)}.ct-info-icon{display:flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:var(--radius);background:var(--bg);border:1px solid var(--border);font-size:1rem;color:var(--text-secondary);flex-shrink:0}.ct-info-label{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);margin-bottom:2px}.ct-info-label,.ct-info-val{display:block;font-weight:600}.ct-info-val{font-size:var(--text-sm);color:var(--text)}.ct-body{padding:var(--sp-16) 0;background:var(--bg-subtle)}.ct-body-grid{display:grid;grid-template-columns:1.1fr 1fr;grid-gap:var(--sp-16);gap:var(--sp-16);align-items:start}.ct-col-label{font-size:var(--text-xs);font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);margin-bottom:var(--sp-6)}.ct-gf-wrap{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-8)}.ct-gf-wrap .gform_body{width:100%}.ct-gf-wrap .gform_fields{display:flex;flex-direction:column;gap:var(--sp-5)}.ct-gf-wrap .gfield{margin:0}.ct-gf-wrap .gfield_label{font-family:var(--font);font-size:var(--text-sm);font-weight:600;color:var(--text);margin-bottom:var(--sp-2);display:block}.ct-gf-wrap input[type=email],.ct-gf-wrap input[type=number],.ct-gf-wrap input[type=tel],.ct-gf-wrap input[type=text],.ct-gf-wrap input[type=url],.ct-gf-wrap select,.ct-gf-wrap textarea{width:100%;font-family:var(--font);font-size:var(--text-sm);color:var(--text);background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius);padding:.65rem var(--sp-4);transition:var(--transition);outline:none;-moz-appearance:none;appearance:none;-webkit-appearance:none}.ct-gf-wrap input:focus,.ct-gf-wrap select:focus,.ct-gf-wrap textarea:focus{border-color:var(--text);background:var(--bg);box-shadow:0 0 0 3px rgba(0,0,0,.06)}.ct-gf-wrap textarea{min-height:130px;resize:vertical}.ct-gf-wrap .gform_footer,.ct-gf-wrap .gform_page_footer{margin-top:var(--sp-6)}.ct-gf-wrap button[type=submit],.ct-gf-wrap input[type=submit]{display:inline-flex;align-items:center;justify-content:center;width:100%;padding:.8rem var(--sp-8);background:var(--text);color:#fff;font-family:var(--font);font-size:var(--text-sm);font-weight:700;border:none;border-radius:var(--radius-full);cursor:pointer;transition:var(--transition);letter-spacing:.01em}.ct-gf-wrap button[type=submit]:hover,.ct-gf-wrap input[type=submit]:hover{background:#2b2b2b;transform:translateY(-2px);box-shadow:0 6px 18px rgba(0,0,0,.15)}.ct-gf-wrap .gfield_required{color:var(--text-muted);margin-left:2px}.ct-gf-wrap .validation_message{font-size:var(--text-xs);color:#dc2626;margin-top:4px}.ct-gf-wrap .gfield_error input,.ct-gf-wrap .gfield_error textarea{border-color:#dc2626}.ct-gf-wrap .gform_confirmation_message{padding:var(--sp-8);background:#f0fdf4;border:1px solid #bbf7d0;border-radius:var(--radius-lg);color:#166534;font-size:var(--text-base);font-weight:600;text-align:center}.ct-process-list{list-style:none;display:flex;flex-direction:column;gap:0;margin-bottom:var(--sp-10)}.ct-process-step{display:flex;gap:var(--sp-5);align-items:flex-start;padding:var(--sp-5) 0;border-bottom:1px solid var(--border)}.ct-process-step:last-child{border-bottom:none}.ct-step-num{width:28px;height:28px;border-radius:50%;border:1px solid var(--border);background:var(--bg);display:flex;align-items:center;justify-content:center;font-size:var(--text-xs);font-weight:700;color:var(--text-muted);flex-shrink:0;margin-top:2px}.ct-step-title{font-size:var(--text-sm);font-weight:700;color:var(--text);margin-bottom:var(--sp-1)}.ct-step-desc{font-size:var(--text-sm);color:var(--text-secondary);line-height:1.65}.ct-socials-wrap{padding-top:var(--sp-6);border-top:1px solid var(--border)}.ct-socials{display:flex;gap:var(--sp-3);margin-top:var(--sp-4)}.ct-social{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius);border:1px solid var(--border);background:var(--bg);color:var(--text-secondary);font-size:1.1rem;transition:var(--transition)}.ct-social:hover{border-color:var(--text);color:var(--text);transform:translateY(-2px);box-shadow:var(--shadow)}.ct-faq{padding:var(--sp-20) 0;background:var(--bg);border-top:1px solid var(--border)}.ct-faq-header{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:var(--sp-10);gap:var(--sp-4)}.ct-faq-count{font-size:var(--text-sm);color:var(--text-muted);font-weight:600;padding-bottom:4px}.ct-faq-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:var(--sp-4);gap:var(--sp-4)}.ct-faq-item{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-subtle);overflow:hidden;transition:border-color .2s ease,box-shadow .2s ease}.ct-faq-item--open{background:var(--bg);border-color:var(--border-hover);box-shadow:var(--shadow)}.ct-faq-btn{width:100%;display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-4);padding:var(--sp-5) var(--sp-6);background:none;border:none;cursor:pointer;font-family:var(--font);text-align:left}.ct-faq-q{font-size:var(--text-sm);font-weight:600;color:var(--text);line-height:1.45;flex:1 1}.ct-faq-icon{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;border:1px solid var(--border);background:var(--bg);color:var(--text-secondary);font-size:.9rem;flex-shrink:0;margin-top:1px;transition:var(--transition)}.ct-faq-item--open .ct-faq-icon{background:var(--text);border-color:var(--text);color:#fff}.ct-faq-panel{padding:0 var(--sp-6) var(--sp-5)}.ct-faq-a{font-size:var(--text-sm);color:var(--text-secondary);line-height:1.75;padding-top:var(--sp-2);border-top:1px solid var(--border)}@media (max-width:900px){.ct-hero-inner{grid-template-columns:1fr;gap:var(--sp-10)}.ct-body-grid{gap:var(--sp-12)}.ct-body-grid,.ct-faq-grid{grid-template-columns:1fr}.ct-faq-header{flex-direction:column;align-items:flex-start}}@media (max-width:640px){.ct-title{font-size:2.5rem}.ct-hero{padding-bottom:var(--sp-8)}.ct-gf-wrap{padding:var(--sp-6)}}[data-reveal]{opacity:0;transform:translateY(24px);transition:opacity .55s cubic-bezier(.22,.68,0,1.2),transform .55s cubic-bezier(.22,.68,0,1.2)}[data-reveal].is-visible{opacity:1;transform:translateY(0)}[data-reveal-delay="1"]{transition-delay:.08s}[data-reveal-delay="2"]{transition-delay:.16s}[data-reveal-delay="3"]{transition-delay:.24s}[data-reveal-delay="4"]{transition-delay:.32s}[data-reveal-delay="5"]{transition-delay:.4s}[data-reveal-delay="6"]{transition-delay:.48s}.cursor-dot{width:8px;height:8px;background:var(--text);border-radius:50%;z-index:9999;transition:width .25s ease,height .25s ease,background .25s ease,opacity .3s ease}.cursor-dot,.cursor-ring{position:fixed;top:0;left:0;pointer-events:none;transform:translate(-50%,-50%);opacity:0}.cursor-ring{width:36px;height:36px;border:1.5px solid rgba(17,17,17,.35);border-radius:50%;z-index:9998;transition:width .3s ease,height .3s ease,border-color .3s ease,opacity .3s ease}body.cursor-hover .cursor-dot{width:10px;height:10px}body.cursor-hover .cursor-ring{width:56px;height:56px;border-color:rgba(17,17,17,.15)}body.cursor-active .cursor-dot,body.cursor-active .cursor-ring{opacity:1}@media (pointer:fine){body.cursor-active,body.cursor-active *{cursor:none!important}}.icon-glyph,.skill-icon--glyph,.why-icon--glyph{width:42px;height:42px;display:inline-flex;align-items:center;justify-content:center;color:var(--text);line-height:1}.skill-icon--glyph,.why-icon--glyph{margin-bottom:var(--sp-4)}.skill-card:hover .skill-icon--glyph,.why-card:hover .why-icon--glyph{transform:translateY(-2px);transition:var(--transition)}.pg-section{padding:var(--sp-16) 0;background:var(--bg-subtle);border-top:1px solid var(--border)}.pg-header{margin-bottom:var(--sp-10)}.pg-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));grid-gap:var(--sp-6);gap:var(--sp-6)}.pg-item{margin:0}.pg-thumb{position:relative;display:block;width:100%;aspect-ratio:16/10;padding:0;border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;background:var(--bg);cursor:zoom-in;transition:var(--transition)}.pg-thumb img{width:100%;height:100%;object-fit:cover;transition:transform .4s ease}.pg-thumb:hover{border-color:var(--border-hover);box-shadow:var(--shadow-md);transform:translateY(-3px)}.pg-thumb:hover img{transform:scale(1.04)}.pg-thumb:focus-visible{outline:2px solid var(--text);outline-offset:3px}.pg-zoom{position:absolute;right:var(--sp-3);bottom:var(--sp-3);width:34px;height:34px;display:grid;place-items:center;border-radius:var(--radius-full);background:rgba(17,17,17,.72);color:#fff;font-size:.8rem;opacity:0;transform:translateY(6px);transition:var(--transition)}.pg-thumb:focus-visible .pg-zoom,.pg-thumb:hover .pg-zoom{opacity:1;transform:translateY(0)}.pg-caption{margin-top:var(--sp-3);font-size:var(--text-sm);color:var(--text-secondary);line-height:1.6}.pg-viewer{position:fixed;inset:0;z-index:9990;background:rgba(17,17,17,.94);display:grid;grid-template-columns:auto 1fr auto;align-items:center;grid-gap:var(--sp-4);gap:var(--sp-4);padding:var(--sp-8) var(--sp-4);animation:pg-fade .2s ease}@keyframes pg-fade{0%{opacity:0}to{opacity:1}}.pg-viewer-figure{grid-column:2;margin:0;display:flex;flex-direction:column;align-items:center;gap:var(--sp-4);max-height:100%;min-width:0}.pg-viewer-img{max-width:100%;max-height:78vh;width:auto;object-fit:contain;border-radius:var(--radius);background:#fff}.pg-viewer-caption{display:flex;align-items:center;gap:var(--sp-4);flex-wrap:wrap;justify-content:center;color:rgba(255,255,255,.85);font-size:var(--text-sm);text-align:center}.pg-viewer-count{font-size:var(--text-xs);color:rgba(255,255,255,.55);border:1px solid rgba(255,255,255,.2);border-radius:var(--radius-full);padding:2px 10px;white-space:nowrap}.pg-viewer-close,.pg-viewer-nav{width:44px;height:44px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.22);border-radius:var(--radius-full);background:rgba(255,255,255,.08);color:#fff;cursor:pointer;transition:var(--transition);flex-shrink:0}.pg-viewer-close:hover,.pg-viewer-nav:hover{background:rgba(255,255,255,.18)}.pg-viewer-close:focus-visible{outline:2px solid #fff;outline-offset:2px}.pg-viewer-close{position:absolute;top:var(--sp-5);right:var(--sp-5)}.pg-viewer-nav--prev{grid-column:1}.pg-viewer-nav--next{grid-column:3}@media (max-width:700px){.pg-viewer{grid-template-columns:1fr;padding:var(--sp-6) var(--sp-3)}.pg-viewer-figure{grid-column:1}.pg-viewer-nav{position:absolute;bottom:var(--sp-5)}.pg-viewer-nav--prev{left:var(--sp-5);grid-column:1}.pg-viewer-nav--next{right:var(--sp-5);grid-column:1}}@media (prefers-reduced-motion:reduce){.pg-thumb,.pg-thumb img,.pg-viewer,.pg-zoom{animation:none;transition:none}}@media (max-width:767px){.nav-links .nav-cta{display:flex;align-items:center;justify-content:center;gap:var(--sp-2);width:100%;max-width:240px;padding:.9rem 1.5rem;border-bottom:0;font-size:1rem;font-weight:600;text-align:center;line-height:1.2;min-height:48px}.nav-links .nav-cta-wrap{display:flex;justify-content:flex-start}}.sp-description ol{padding-left:var(--sp-5);list-style:decimal}.sp-description em{font-style:italic}.sp-description a{color:var(--text);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px;transition:var(--transition)}.sp-description a:hover{text-decoration-thickness:2px}.sp-description blockquote{margin:var(--sp-6) 0;padding:var(--sp-2) 0 var(--sp-2) var(--sp-5);border-left:2px solid var(--text);color:var(--text);font-style:italic}.sp-description blockquote p:last-child{margin-bottom:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skl,.sr-only{overflow:hidden}.skl{display:block;background:var(--bg-subtle);position:relative}.skl:after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.65),transparent);animation:skl-sweep 1.4s ease-in-out infinite}@keyframes skl-sweep{to{transform:translateX(100%)}}.skl-text{display:flex;flex-direction:column;gap:var(--sp-2)}.skl-card{border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;background:var(--bg)}.skl-card-media{aspect-ratio:16/10;border-radius:0}.skl-card-body{display:flex;flex-direction:column;gap:var(--sp-3);padding:var(--sp-5)}@media (prefers-reduced-motion:reduce){.skl:after{animation:skl-fade 2s ease-in-out infinite;background:rgba(255,255,255,.4);transform:none}@keyframes skl-fade{0%,to{opacity:0}50%{opacity:1}}}.err-wrap{max-width:560px;margin:0 auto;padding:var(--sp-16) var(--sp-6);text-align:center}.err-icon{font-size:2.5rem;color:var(--text-muted);margin-bottom:var(--sp-5);display:block}.err-title{font-size:var(--text-2xl);font-weight:700;margin-bottom:var(--sp-4)}.err-text{color:var(--text-secondary);line-height:1.75;margin-bottom:var(--sp-6)}.err-actions{display:flex;gap:var(--sp-3);justify-content:center;flex-wrap:wrap}.err-digest{margin-top:var(--sp-8);font-size:var(--text-xs);color:var(--text-muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}@media (min-width:768px){.footer-grid{grid-template-columns:1.3fr .7fr 1fr;gap:var(--sp-12)}}.ab-head-row{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--sp-8)}.ab-head-row .btn-primary{flex-shrink:0}.ab-section{padding:var(--sp-20) 0;scroll-margin-top:calc(var(--nav-height) + 56px)}.ab-section--alt{background:var(--bg-subtle);border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.ab-section-head{display:flex;align-items:center;gap:var(--sp-4);margin-bottom:var(--sp-12)}.ab-section-icon{display:grid;place-items:center;width:48px;height:48px;border-radius:var(--radius);background:var(--text);color:#fff;font-size:1.2rem;flex-shrink:0}.ab-section-title{font-size:clamp(1.5rem,2.6vw,2rem);font-weight:800;letter-spacing:-.03em}.ab-section-count{margin-left:auto;font-size:var(--text-sm);font-weight:700;color:var(--text-muted)}.ab-timeline{--when:190px;--axis:56px;position:relative;display:flex;flex-direction:column;gap:var(--sp-8)}.ab-timeline:before{content:"";position:absolute;top:8px;bottom:8px;left:calc(var(--when) + var(--axis) / 2 - 1px);width:2px;background:linear-gradient(to bottom,var(--text) 0,var(--border) 120px,var(--border) calc(100% - 60px),transparent)}.ab-tl-item{display:grid;grid-template-columns:var(--when) var(--axis) minmax(0,1fr);align-items:start}.ab-tl-when{display:flex;flex-direction:column;align-items:flex-end;gap:var(--sp-1);padding-top:var(--sp-5);text-align:right}.ab-tl-years{display:inline-flex;align-items:baseline;gap:var(--sp-2);font-size:1.6rem;font-weight:900;letter-spacing:-.04em;line-height:1;color:var(--text)}.ab-tl-years-sep{color:var(--border-hover);font-weight:400}.ab-tl-item:not(.is-current) .ab-tl-years{color:var(--text-secondary)}.ab-tl-range{font-size:var(--text-xs);font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted)}.ab-tl-range--inline{display:none}.ab-tl-duration{margin-top:var(--sp-1);padding:.15rem .6rem;border-radius:var(--radius-full);border:1px solid var(--border);background:var(--bg);font-size:.7rem;font-weight:600;color:var(--text-secondary)}.ab-tl-axis{position:relative;display:flex;justify-content:center;padding-top:var(--sp-6)}.ab-tl-dot{position:relative;z-index:1;width:16px;height:16px;border-radius:50%;background:var(--bg);border:2px solid var(--border-hover);transition:var(--transition)}.ab-section--alt .ab-tl-dot{background:var(--bg-subtle)}.ab-tl-item.is-current .ab-tl-dot{background:var(--text);border-color:var(--text);box-shadow:0 0 0 6px rgba(17,17,17,.08)}.ab-tl-item:hover .ab-tl-dot{border-color:var(--text);transform:scale(1.15)}.ab-tl-card{position:relative;padding:var(--sp-6) var(--sp-8);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg);transition:var(--transition)}.ab-tl-card:before{content:"";position:absolute;top:26px;left:-7px;width:12px;height:12px;background:inherit;border-left:1px solid var(--border);border-bottom:1px solid var(--border);transform:rotate(45deg);transition:var(--transition)}.ab-tl-item:hover .ab-tl-card{box-shadow:var(--shadow-md)}.ab-tl-item:hover .ab-tl-card,.ab-tl-item:hover .ab-tl-card:before{border-color:var(--border-hover)}.ab-tl-item.is-current .ab-tl-card,.ab-tl-item.is-current .ab-tl-card:before{border-color:var(--text)}.ab-tl-now{float:right;display:inline-flex;align-items:center;gap:6px;margin:0 0 var(--sp-2) var(--sp-3);padding:.2rem .65rem;border-radius:var(--radius-full);background:#f0fdf4;border:1px solid #bbf7d0;color:#15803d;font-size:.7rem;font-weight:700}.ab-tl-now:before{content:"";width:6px;height:6px;border-radius:50%;background:#22c55e;animation:blink 2s ease-in-out infinite}.ab-tl-title{font-size:var(--text-lg);font-weight:800;letter-spacing:-.015em;line-height:1.3}.ab-tl-org{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-1) var(--sp-4);margin-top:var(--sp-2);font-size:var(--text-sm);font-weight:700;color:var(--text)}.ab-tl-org a{display:inline-flex;align-items:center;gap:4px}.ab-tl-org a:hover{text-decoration:underline;text-underline-offset:3px}.ab-tl-org a i{font-size:.7rem}.ab-tl-location{display:inline-flex;align-items:center;gap:4px;font-weight:500;color:var(--text-muted)}.ab-tl-desc{clear:both;margin-top:var(--sp-4);padding-top:var(--sp-4);border-top:1px dashed var(--border);font-size:var(--text-sm);line-height:1.75;color:var(--text-secondary)}.ab-tl-desc p+p,.ab-tl-desc p+ul{margin-top:var(--sp-3)}.ab-tl-desc strong{color:var(--text);font-weight:700}.ab-tl-desc ul{display:flex;flex-direction:column;gap:var(--sp-2)}.ab-tl-desc li{position:relative;padding-left:var(--sp-5)}.ab-tl-desc li:before{content:"";position:absolute;left:2px;top:.7em;width:8px;height:2px;border-radius:2px;background:var(--text)}.ab-tl-skills{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-top:var(--sp-5)}.ab-tl-skills li{padding:.2rem .65rem;border-radius:var(--radius-full);background:var(--bg-subtle);border:1px solid var(--border);font-size:.7rem;font-weight:600;color:var(--text-secondary)}.ab-certs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:var(--sp-4);gap:var(--sp-4)}.ab-cert,.ab-certs>li{height:100%}.ab-cert{display:flex;align-items:flex-start;gap:var(--sp-4);padding:var(--sp-6);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg);transition:var(--transition)}.ab-cert:hover{border-color:var(--border-hover);box-shadow:var(--shadow-md)}a.ab-cert:hover{transform:translateY(-2px)}.ab-cert-icon{display:grid;place-items:center;flex-shrink:0;width:44px;height:44px;border-radius:var(--radius);background:var(--bg-subtle);border:1px solid var(--border);font-size:1.15rem}.ab-cert-body{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1 1}.ab-cert-title{font-size:var(--text-base);font-weight:700;color:var(--text);line-height:1.35}.ab-cert-meta{font-size:var(--text-xs);font-weight:600;color:var(--text-muted)}.ab-cert-desc{margin-top:var(--sp-2);font-size:var(--text-sm);line-height:1.6;color:var(--text-secondary)}.ab-cert-badge{float:none;margin:0;flex-shrink:0}.ab-cert-arrow{color:var(--text-muted);flex-shrink:0}.ab-skills-list{display:flex;flex-wrap:wrap;gap:var(--sp-3)}.ab-skills-list li{padding:.6rem 1.15rem;border:1px solid var(--border);border-radius:var(--radius-full);background:var(--bg);font-size:var(--text-sm);font-weight:600;transition:var(--transition)}.ab-skills-list li:hover{border-color:var(--text);transform:translateY(-2px)}.ab-cta-actions{display:flex;flex-wrap:wrap;gap:var(--sp-3)}.ab-skill-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:var(--sp-5);gap:var(--sp-5)}.ab-skill-group{display:flex;flex-direction:column;gap:var(--sp-5);padding:var(--sp-6) var(--sp-8);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg);transition:var(--transition)}.ab-skill-group:hover{border-color:var(--border-hover);box-shadow:var(--shadow-md)}.ab-skill-group-head{display:flex;align-items:flex-start;gap:var(--sp-4)}.ab-skill-group-icon,.ab-skill-group-icon--glyph{display:grid;place-items:center;flex-shrink:0;width:44px;height:44px;border-radius:var(--radius);background:var(--bg-subtle);border:1px solid var(--border);color:var(--text)}img.ab-skill-group-icon{padding:8px;object-fit:contain}.ab-skill-group-name{font-size:var(--text-lg);font-weight:800;letter-spacing:-.015em;line-height:1.3}.ab-skill-group-desc{margin-top:2px;font-size:var(--text-sm);line-height:1.6;color:var(--text-secondary)}.ab-skill-group-items{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.ab-skill-group-items li{padding:.35rem .8rem;border-radius:var(--radius-full);background:var(--bg-subtle);border:1px solid var(--border);font-size:var(--text-xs);font-weight:600;color:var(--text)}.bl-hero-row{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--sp-6)}.bl-rss{display:inline-flex;align-items:center;gap:var(--sp-2);padding:.5rem 1rem;border:1px solid var(--border);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:700;color:var(--text-secondary);transition:var(--transition);flex-shrink:0}.bl-rss:hover{color:var(--text);border-color:var(--text)}.bl-list{padding-top:var(--sp-12)}.bl-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:var(--sp-8) var(--sp-6);gap:var(--sp-8) var(--sp-6)}.bl-card--featured+.bl-grid{margin-top:var(--sp-12)}.bl-card{height:100%}.bl-card-link{display:flex;flex-direction:column;height:100%;border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;background:var(--bg);transition:var(--transition)}.bl-card-link:hover{border-color:var(--border-hover);transform:translateY(-4px);box-shadow:var(--shadow-lg)}.bl-card-thumb{position:relative;aspect-ratio:16/9;overflow:hidden;background:var(--bg-subtle)}.bl-card-thumb img{width:100%;height:100%;object-fit:cover;transition:transform .5s ease}.bl-card-link:hover .bl-card-thumb img{transform:scale(1.04)}.bl-card-placeholder{position:absolute;inset:0;display:grid;place-items:center;background-image:radial-gradient(var(--border) 1px,transparent 1px);background-size:14px 14px}.bl-card-placeholder span{font-size:4rem;font-weight:900;color:var(--border-hover);letter-spacing:-.05em}.bl-card-body{display:flex;flex-direction:column;flex:1 1;padding:var(--sp-6)}.bl-card-tags{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-bottom:var(--sp-3)}.bl-card-tags li{font-size:.68rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}.bl-card-tags li+li:before{content:"·";margin-right:var(--sp-2)}.bl-card-title{font-size:var(--text-lg);font-weight:800;letter-spacing:-.02em;line-height:1.3;margin-bottom:var(--sp-3)}.bl-card-excerpt{font-size:var(--text-sm);color:var(--text-secondary);line-height:1.7;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.bl-card-foot{justify-content:space-between;gap:var(--sp-3);margin-top:auto;padding-top:var(--sp-5)}.bl-card-foot,.bl-meta{display:flex;align-items:center}.bl-meta{flex-wrap:wrap;gap:var(--sp-2);font-size:var(--text-xs);font-weight:500;color:var(--text-muted)}.bl-card-arrow{display:grid;place-items:center;flex-shrink:0;width:34px;height:34px;border-radius:50%;border:1px solid var(--border);font-size:.85rem;transition:var(--transition)}.bl-card-link:hover .bl-card-arrow{background:var(--text);border-color:var(--text);color:#fff;transform:rotate(-45deg)}.bl-card--featured .bl-card-link{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr)}.bl-card--featured .bl-card-thumb{aspect-ratio:auto;min-height:340px}.bl-card--featured .bl-card-body{padding:var(--sp-10);justify-content:center}.bl-card--featured .bl-card-title{font-size:clamp(1.5rem,2.6vw,2.1rem);letter-spacing:-.03em;line-height:1.2}.bl-card--featured .bl-card-excerpt{font-size:var(--text-base);-webkit-line-clamp:4}.bl-progress{position:fixed;top:var(--nav-height);left:0;right:0;height:3px;z-index:90;pointer-events:none}.bl-progress span{display:block;height:100%;background:var(--text);transform-origin:left;transition:transform .1s linear}.bl-narrow{max-width:760px}.bl-header{padding-top:calc(var(--nav-height) + var(--sp-10));padding-bottom:var(--sp-10)}.bl-tags{margin:var(--sp-8) 0 var(--sp-5)}.bl-title{font-size:clamp(2rem,4.5vw,3.1rem);font-weight:900;letter-spacing:-.04em;line-height:1.1}.bl-excerpt{margin-top:var(--sp-5);font-size:var(--text-xl);line-height:1.6;color:var(--text-secondary)}.bl-byline{margin-top:var(--sp-8);padding-top:var(--sp-6);border-top:1px solid var(--border)}.bl-author{display:inline-flex;align-items:center;gap:var(--sp-3)}.bl-avatar{width:44px;height:44px;border-radius:50%;object-fit:cover;object-position:top;background:var(--bg-subtle)}.bl-avatar--initials{display:grid;place-items:center;font-size:var(--text-xs);font-weight:800}.bl-author-name{display:block;font-size:var(--text-sm);font-weight:700}.bl-cover-wrap{max-width:1040px;margin-bottom:var(--sp-12)}.bl-cover{width:100%;border-radius:var(--radius-lg);aspect-ratio:16/9;object-fit:cover;border:1px solid var(--border)}.post-content{font-size:1.075rem;line-height:1.85;color:#2a2a2a}.post-content>*+*{margin-top:var(--sp-5)}.post-content h2,.post-content h3,.post-content h4{color:var(--text);font-weight:800;letter-spacing:-.025em;line-height:1.3}.post-content h2{font-size:1.65rem;margin-top:var(--sp-12)}.post-content h3{font-size:1.3rem;margin-top:var(--sp-10)}.post-content h4{font-size:1.08rem;margin-top:var(--sp-8)}.post-content strong{color:var(--text);font-weight:700}.post-content em{font-style:italic}.post-content a{color:var(--text);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}.post-content a:hover{text-decoration-thickness:2px}.post-content ol,.post-content ul{padding-left:var(--sp-6)}.post-content ul{list-style:disc}.post-content ol{list-style:decimal}.post-content li+li{margin-top:var(--sp-2)}.post-content li::marker{color:var(--text-muted)}.post-content blockquote{padding:var(--sp-2) 0 var(--sp-2) var(--sp-6);border-left:3px solid var(--text);font-size:1.2rem;font-style:italic;color:var(--text)}.post-content code{padding:.15em .4em;border-radius:var(--radius-sm);background:var(--bg-subtle);border:1px solid var(--border);font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.88em}.post-content pre{padding:var(--sp-6);border-radius:var(--radius);background:#111;color:#f2f2f2;overflow-x:auto;font-size:.9rem;line-height:1.7}.post-content pre code{padding:0;background:none;border:none;color:inherit;font-size:inherit}.post-content img{border-radius:var(--radius);border:1px solid var(--border);margin:var(--sp-8) auto}.post-content hr{border:none;height:1px;background:var(--border);margin:var(--sp-12) 0}.bl-article-foot{flex-wrap:wrap;justify-content:space-between;gap:var(--sp-4);margin-top:var(--sp-16);padding:var(--sp-6) 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.bl-article-foot,.bl-share{display:flex;align-items:center}.bl-share{gap:var(--sp-2)}.bl-share-label{font-size:var(--text-xs);font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);margin-right:var(--sp-2)}.bl-share-btn{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;border:1px solid var(--border);background:var(--bg);color:var(--text);font-size:.95rem;cursor:pointer;transition:var(--transition)}.bl-share-btn:hover{background:var(--text);border-color:var(--text);color:#fff}.bl-author-card{display:flex;gap:var(--sp-6);align-items:center;margin:var(--sp-10) 0 var(--sp-16);padding:var(--sp-8);border-radius:var(--radius-lg);background:var(--bg-subtle);border:1px solid var(--border)}.bl-author-card-img{width:84px;height:84px;border-radius:50%;object-fit:cover;object-position:top;flex-shrink:0}.bl-author-card-name{font-weight:800;font-size:var(--text-lg)}.bl-author-card-text{margin:var(--sp-1) 0 var(--sp-3);font-size:var(--text-sm);color:var(--text-secondary);line-height:1.7}.bl-author-card-link{display:inline-flex;align-items:center;gap:var(--sp-2);font-size:var(--text-sm);font-weight:700}.bl-author-card-link:hover i{transform:translateX(3px)}.bl-author-card-link i{transition:var(--transition)}.bl-pager{border-top:1px solid var(--border)}.bl-pager-inner{display:grid;grid-template-columns:1fr 1fr}.bl-pager-link{display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-10) var(--sp-6) var(--sp-10) 0;transition:var(--transition)}.bl-pager-link--next{text-align:right;align-items:flex-end;padding:var(--sp-10) 0 var(--sp-10) var(--sp-6);border-left:1px solid var(--border)}.bl-pager-label{display:inline-flex;align-items:center;gap:var(--sp-2);font-size:var(--text-xs);font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}.bl-pager-title{font-size:var(--text-lg);font-weight:800;letter-spacing:-.02em;line-height:1.35}.bl-pager-link:hover .bl-pager-title{text-decoration:underline;text-underline-offset:4px}.bl-related{background:var(--bg-subtle);border-top:1px solid var(--border)}@media (max-width:1024px){.bl-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:900px){.ab-timeline{--when:130px;--axis:44px}.ab-tl-years{font-size:1.25rem}.ab-certs,.ab-skill-groups,.bl-card--featured .bl-card-link{grid-template-columns:1fr}.bl-card--featured .bl-card-thumb{min-height:0;aspect-ratio:16/9}.bl-card--featured .bl-card-body{padding:var(--sp-6)}}@media (max-width:640px){.ab-head-row{flex-direction:column;align-items:flex-start}.ab-section{padding:var(--sp-16) 0}.ab-section-head{margin-bottom:var(--sp-8)}.ab-timeline{--when:0px;--axis:32px;gap:var(--sp-5)}.ab-tl-when{display:none}.ab-tl-item{grid-template-columns:var(--axis) minmax(0,1fr)}.ab-tl-range--inline{display:block;margin-bottom:var(--sp-2)}.ab-tl-axis{justify-content:flex-start;padding-left:0}.ab-timeline:before{left:7px}.ab-tl-card{padding:var(--sp-5)}.ab-tl-card:before{display:none}.ab-cert,.ab-skill-group{padding:var(--sp-5)}.bl-grid{grid-template-columns:1fr}.bl-hero-row{flex-direction:column;align-items:flex-start}.bl-excerpt{font-size:var(--text-lg)}.bl-author-card{flex-direction:column;align-items:flex-start}.bl-pager-inner{grid-template-columns:1fr}.bl-pager-link,.bl-pager-link--next{padding:var(--sp-6) 0;border-left:none}.bl-pager-link--next{border-top:1px solid var(--border)}}@media (prefers-reduced-motion:reduce){.ab-tl-now:before{animation:none}.ab-skills-list li:hover,.bl-card-link:hover,.bl-card-link:hover .bl-card-thumb img,a.ab-cert:hover{transform:none}}.nav-lang{display:inline-flex;align-items:center;gap:6px;padding:.45rem .85rem;border:1px solid var(--border);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:700;letter-spacing:.06em;color:var(--text-secondary);transition:var(--transition)}.nav-lang:hover{color:var(--text);border-color:var(--text)}@media (min-width:768px){.nav-cta-desktop{display:flex;align-items:center;gap:var(--sp-3)}}.nav-links .lang-menu{display:block;margin-bottom:var(--sp-3)}.nav-links .lang-menu-item{display:flex;width:auto;padding:.6rem .75rem;border-bottom:none;font-size:var(--text-sm);font-weight:500;letter-spacing:0;color:var(--text-secondary)}.nav-links .lang-menu-item.is-active{color:var(--text);font-weight:700}.nav-links .lang-menu-item:after{display:none}.lang-menu{position:relative;display:inline-block}.lang-menu-button{background:var(--bg);font-family:var(--font);cursor:pointer}.lang-menu-chevron{font-size:.6rem;transition:transform .2s ease}.lang-menu.is-open .lang-menu-chevron{transform:rotate(180deg)}.lang-menu.is-open .lang-menu-button{color:var(--text);border-color:var(--text)}.lang-menu-list{position:absolute;right:0;z-index:120;min-width:190px;padding:var(--sp-2);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);box-shadow:var(--shadow-lg);list-style:none;animation:lang-menu-in .16s ease}.lang-menu--down .lang-menu-list{top:calc(100% + 8px)}.lang-menu--up .lang-menu-list{bottom:calc(100% + 8px);right:auto;left:0}.lang-menu-list[hidden]{display:none}@keyframes lang-menu-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.lang-menu--up .lang-menu-list{animation-name:lang-menu-in-up}@keyframes lang-menu-in-up{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.lang-menu-item{display:flex;align-items:center;gap:var(--sp-3);padding:.6rem .75rem;border-radius:var(--radius-sm);font-size:var(--text-sm);font-weight:500;color:var(--text-secondary);transition:var(--transition)}.lang-menu-item:focus-visible,.lang-menu-item:hover{background:var(--bg-subtle);color:var(--text);outline:none}.lang-menu-item.is-active{color:var(--text);font-weight:700}.lang-menu-code{display:grid;place-items:center;width:30px;height:22px;border-radius:var(--radius-sm);border:1px solid var(--border);font-size:.65rem;font-weight:800;letter-spacing:.04em}.lang-menu-item.is-active .lang-menu-code{background:var(--text);border-color:var(--text);color:#fff}.lang-menu-check{margin-left:auto;font-size:1rem}@media (prefers-reduced-motion:reduce){.lang-menu-list{animation:none}}