@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeDown{0%{opacity:0;transform:translateY(-16px)}to{opacity:1;transform:translateY(0)}}@keyframes revealUp{0%{clip-path:inset(100% 0 0 0)}to{clip-path:inset(0% 0 0 0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}@keyframes scrollBounce{0%{transform:translateY(0);opacity:.6}to{transform:translateY(0);opacity:.6}50%{transform:translateY(6px);opacity:1}}@keyframes softPulse{0%{opacity:.4}to{opacity:.4}50%{opacity:1}}@keyframes cursorBlink{0%,49%{opacity:1}50%{opacity:0}to{opacity:0}}@keyframes floatA{0%{transform:translate(0)}to{transform:translate(0)}40%{transform:translate(22px,-28px)}70%{transform:translate(-14px,-12px)}}@keyframes floatB{0%{transform:translate(0)}to{transform:translate(0)}35%{transform:translate(-20px,18px)}65%{transform:translate(14px,-20px)}}@keyframes floatAvatar{0%{transform:translateY(0)}to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes floatIcon{0%{transform:translateY(0)}to{transform:translateY(0)}50%{transform:translateY(-4px)}}@keyframes headerEnter{0%{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}[data-reveal]{opacity:0;transform:translateY(20px);transition:opacity var(--dur-slow) var(--ease-out),transform var(--dur-slow) var(--ease-out)}[data-reveal].in-view{opacity:1;transform:translateY(0)}[data-reveal=left]{transform:translate(-20px)}[data-reveal=left].in-view{transform:translate(0)}[data-reveal=right]{transform:translate(20px)}[data-reveal=right].in-view{transform:translate(0)}[data-reveal=scale]{transform:scale(.95)}[data-reveal=scale].in-view{transform:scale(1)}[data-stagger]>*{opacity:0;transform:translateY(16px);transition:opacity var(--dur-slow) var(--ease-out),transform var(--dur-slow) var(--ease-out)}[data-stagger].in-view>*:nth-child(1){opacity:1;transform:none;transition-delay:0ms}[data-stagger].in-view>*:nth-child(2){opacity:1;transform:none;transition-delay:70ms}[data-stagger].in-view>*:nth-child(3){opacity:1;transform:none;transition-delay:.14s}[data-stagger].in-view>*:nth-child(4){opacity:1;transform:none;transition-delay:.21s}[data-stagger].in-view>*:nth-child(5){opacity:1;transform:none;transition-delay:.28s}[data-stagger].in-view>*:nth-child(6){opacity:1;transform:none;transition-delay:.35s}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.site-header{position:fixed;top:0;left:0;right:0;z-index:var(--z-fixed);height:var(--nav-h);display:flex;align-items:center;transition:background-color var(--dur-base) var(--ease-out),border-color var(--dur-base) var(--ease-out),box-shadow var(--dur-base) var(--ease-out);border-bottom:1px solid transparent;opacity:0;transform:translateY(-20px);will-change:transform,opacity}.site-header--scrolled{background:#07080de0;backdrop-filter:var(--glass-blur-md);-webkit-backdrop-filter:var(--glass-blur-md);border-bottom-color:var(--glass-border);box-shadow:0 2px 20px #00000059}.header-nav{display:flex;align-items:center;gap:var(--sp-8)}.logo{font-family:var(--font-mono);font-size:var(--fs-sm);font-weight:var(--fw-bold);display:flex;align-items:center;gap:0;flex-shrink:0;transition:opacity var(--dur-fast) var(--ease-out)}.logo-name{color:var(--text-primary);letter-spacing:.02em;white-space:nowrap}.logo:hover .logo-name{color:var(--accent-fog)}.nav-links{display:flex;align-items:center;gap:var(--sp-6);margin-left:auto}.nav-link{position:relative;font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--text-secondary);letter-spacing:var(--ls-wide);padding:var(--sp-1) 0;transition:color var(--dur-fast) var(--ease-out)}.nav-link:after{content:"";position:absolute;bottom:-2px;left:0;width:0;height:1px;background:var(--accent-slate);transition:width var(--dur-base) var(--ease-out)}.nav-link:hover,.nav-link--active{color:var(--text-primary)}.nav-link:hover:after,.nav-link--active:after{width:100%}.header-cta{font-size:var(--fs-sm);font-weight:var(--fw-medium);letter-spacing:var(--ls-wide);padding:var(--sp-2) var(--sp-5);border:1px solid var(--glass-border-md);border-radius:var(--r-full);background:#ffffff0a;color:var(--text-secondary);white-space:nowrap;transition:background-color var(--dur-base) var(--ease-out),border-color var(--dur-base) var(--ease-out),color var(--dur-base) var(--ease-out),box-shadow var(--dur-base) var(--ease-out)}.header-cta:hover{background:#7b9fbb1a;border-color:#7b9fbb59;color:var(--text-primary);box-shadow:var(--glow-slate)}.hamburger{display:none;flex-direction:column;gap:5px;padding:var(--sp-2);margin-left:auto}.hamburger span{display:block;width:22px;height:1.5px;background:var(--text-secondary);border-radius:var(--r-full);transition:transform var(--dur-base) var(--ease-out),opacity var(--dur-base) var(--ease-out),background-color var(--dur-base) var(--ease-out);transform-origin:center}.hamburger--open span:nth-child(1){transform:translateY(6.5px) rotate(45deg);background:var(--text-primary)}.hamburger--open span:nth-child(2){opacity:0;transform:scaleX(0)}.hamburger--open span:nth-child(3){transform:translateY(-6.5px) rotate(-45deg);background:var(--text-primary)}.mobile-menu{position:absolute;top:var(--nav-h);left:0;right:0;background:#07080df5;backdrop-filter:var(--glass-blur-lg);-webkit-backdrop-filter:var(--glass-blur-lg);border-bottom:1px solid var(--glass-border);padding:var(--sp-6) var(--container-px);animation:fadeDown .22s var(--ease-out) both}.mobile-menu ul{display:flex;flex-direction:column;gap:var(--sp-4)}.mobile-menu li{animation:fadeUp .25s var(--ease-out) both}.mobile-menu a{display:block;font-size:var(--fs-md);font-weight:var(--fw-medium);color:var(--text-secondary);padding:var(--sp-3) 0;border-bottom:1px solid var(--glass-border);transition:color var(--dur-fast) var(--ease-out)}.mobile-menu a:hover,.mobile-menu a.active{color:var(--text-primary)}@media(max-width:768px){.nav-links,.header-cta{display:none}.hamburger{display:flex}}.cursor-dot,.cursor-ring{position:fixed;top:0;left:0;pointer-events:none;z-index:var(--z-cursor);will-change:transform,width,height;border-radius:50%}.cursor-dot{width:6px;height:6px;background:var(--text-primary);transition:opacity .2s}.cursor-ring{width:36px;height:36px;border:1px solid rgba(255,255,255,.45);background:transparent;transition:opacity .2s,width .3s cubic-bezier(.25,1,.5,1),height .3s cubic-bezier(.25,1,.5,1)}.cursor-ring--click{animation:cursorRipple .4s ease-out forwards}@keyframes cursorRipple{0%{transform:translate(var(--cx, 0),var(--cy, 0)) translate(-50%,-50%) scale(1);opacity:.5}to{transform:translate(var(--cx, 0),var(--cy, 0)) translate(-50%,-50%) scale(1.8);opacity:0}}@media(pointer:fine){body,a,button,[data-cursor=magnetic]{cursor:none}}@media(pointer:coarse){.cursor-dot,.cursor-ring{display:none}}.hero{position:relative;min-height:100vh;display:flex;align-items:center;overflow:hidden;background:var(--bg-base);padding-top:var(--nav-h)}.hero:after{content:"";position:absolute;inset:0;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='1'/%3E%3C/svg%3E");opacity:.03;pointer-events:none;z-index:1}.hero-bg{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0}.blob{position:absolute;border-radius:50%}.blob--1{width:clamp(25rem,55vw,50rem);height:clamp(25rem,55vw,50rem);background:radial-gradient(circle,rgba(123,159,187,.1) 0%,rgba(123,159,187,.04) 40%,transparent 70%);top:-20%;left:-10%;will-change:transform}.blob--2{width:clamp(20rem,40vw,40rem);height:clamp(20rem,40vw,40rem);background:radial-gradient(circle,rgba(110,155,155,.09) 0%,rgba(110,155,155,.03) 40%,transparent 70%);bottom:-5%;right:-10%;will-change:transform}.hero-grid{position:absolute;inset:0;background-image:radial-gradient(circle,rgba(255,255,255,.05) .06rem,transparent .06rem);background-size:2.5rem 2.5rem;-webkit-mask-image:radial-gradient(ellipse 80% 80% at 50% 50%,black 30%,transparent 100%);mask-image:radial-gradient(ellipse 80% 80% at 50% 50%,black 30%,transparent 100%);opacity:0;will-change:opacity}.hero-inner{position:relative;z-index:2;display:flex;flex-direction:column;align-items:flex-start;padding-top:var(--sp-20);padding-bottom:var(--sp-20)}.hero-label{margin-bottom:var(--sp-8)}.hero-label:before{content:"";display:inline-block;width:.5rem;height:.5rem;background:var(--accent-slate);border-radius:50%;margin-right:var(--sp-3);animation:softPulse 2.5s ease-in-out infinite;vertical-align:middle}.hero-heading{font-size:var(--fs-5xl);font-weight:var(--fw-black);line-height:var(--lh-tight);letter-spacing:var(--ls-tight);color:var(--text-primary);margin-bottom:var(--sp-6)}.hero-heading--tilt{transform-style:preserve-3d}.word{display:inline-block;opacity:0;transform:translateY(30px);will-change:transform,opacity}.word--accent{color:transparent;-webkit-text-stroke:.06rem rgba(123,159,187,.7);position:relative}.word--accent:after{content:attr(data-text);position:absolute;inset:0;background:linear-gradient(135deg,#7b9fbbe6,#6e9b9bb3);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;pointer-events:none}.hero-subtitle{font-size:var(--fs-md);color:var(--text-secondary);font-weight:var(--fw-regular);line-height:var(--lh-relaxed);max-width:clamp(20rem,80vw,35rem);margin-bottom:var(--sp-3);opacity:0;transform:translateY(20px);will-change:transform,opacity}.hero-roles{display:flex;align-items:center;gap:var(--sp-1);font-family:var(--font-mono);font-size:var(--fs-base);color:var(--text-secondary);margin-bottom:var(--sp-12);min-height:1.6em;opacity:0;transform:translateY(15px);will-change:transform,opacity}.roles-static{color:var(--accent-stone);-webkit-user-select:none;-moz-user-select:none;user-select:none}.roles-type{color:var(--accent-fog);min-width:1px}.roles-cursor{color:var(--accent-slate);animation:cursorBlink .8s step-end infinite;font-weight:var(--fw-light)}.hero-ctas{display:flex;align-items:center;gap:var(--sp-4);flex-wrap:wrap;margin-bottom:var(--sp-16);opacity:0;transform:translateY(20px);will-change:transform,opacity}.btn-primary{display:inline-flex;align-items:center;gap:var(--sp-3);padding:var(--sp-4) var(--sp-8);background:#7b9fbb1a;border:.06rem solid var(--glass-border-md);border-radius:var(--r-full);color:var(--text-primary);font-size:var(--fs-sm);font-weight:var(--fw-medium);letter-spacing:var(--ls-wide);transition:border-color var(--dur-base) var(--ease-out),background-color var(--dur-base) var(--ease-out),box-shadow var(--dur-base) var(--ease-out)}.btn-primary:hover{background:#7b9fbb29;border-color:#7b9fbb59;box-shadow:var(--glow-slate)}.btn-primary svg{transition:transform var(--dur-base) var(--ease-spring)}.btn-primary:hover svg{transform:translate(.2rem)}.btn-ghost{display:inline-flex;align-items:center;padding:var(--sp-4) var(--sp-6);border-radius:var(--r-full);color:var(--text-tertiary);font-size:var(--fs-sm);font-weight:var(--fw-medium);letter-spacing:var(--ls-wide);transition:color var(--dur-fast) var(--ease-out)}.btn-ghost:hover{color:var(--text-secondary)}.hero-stats{display:flex;align-items:center;gap:var(--sp-10)}.stat-item{display:flex;flex-direction:column;gap:var(--sp-1)}.stat-value{font-family:var(--font-display);font-size:var(--fs-xl);font-weight:var(--fw-black);color:var(--text-primary);letter-spacing:var(--ls-tight);line-height:1}.stat-label{font-size:var(--fs-xs);color:var(--text-tertiary);letter-spacing:var(--ls-wider);text-transform:uppercase}.hero-stats .stat-item+.stat-item{padding-left:var(--sp-10);border-left:.06rem solid var(--glass-border)}.scroll-indicator{position:absolute;bottom:var(--sp-10);left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);z-index:2}.scroll-line{width:.06rem;height:2.75rem;background:linear-gradient(to bottom,transparent,var(--accent-slate));animation:scrollBounce 2.2s ease-in-out infinite}.scroll-indicator span{font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:var(--ls-widest);text-transform:uppercase;color:var(--text-tertiary);transform:rotate(90deg);white-space:nowrap;margin-top:var(--sp-3)}@media(max-width:767px){.hero-inner{padding-top:var(--sp-12);padding-bottom:var(--sp-12)}.hero-heading{font-size:var(--fs-3xl);margin-bottom:var(--sp-4)}.hero-subtitle{margin-bottom:var(--sp-6)}.hero-roles{margin-bottom:var(--sp-10)}.hero-ctas{gap:var(--sp-3);margin-bottom:var(--sp-12)}.hero-stats{gap:var(--sp-6);width:100%;justify-content:space-between}.hero-stats .stat-item+.stat-item{padding-left:var(--sp-4)}.scroll-indicator{display:none}.hero-ctas{flex-direction:column;align-items:stretch;width:100%}.btn-primary,.btn-ghost{width:100%;justify-content:center}}@media(min-width:768px)and (max-width:1023px){.hero-heading{font-size:var(--fs-4xl)}}@media(min-width:1920px){.hero-inner{padding-top:var(--sp-32)}}.about{background:var(--bg-raised)}.about-container{display:grid;grid-template-columns:1fr 1fr;gap:clamp(var(--sp-10),8vw,var(--sp-24));align-items:start}.about-left{display:flex;flex-direction:column;gap:var(--sp-8);padding-top:var(--sp-4)}.about-heading{line-height:var(--lh-snug)}.heading-muted{color:var(--text-tertiary);font-style:italic;display:block;font-weight:var(--fw-light)}.about-body{display:flex;flex-direction:column;gap:var(--sp-4)}.about-body p{font-size:var(--fs-base);color:var(--text-secondary);line-height:var(--lh-relaxed)}.about-body em{font-style:normal;color:var(--accent-fog);font-weight:var(--fw-medium)}.about-traits{display:flex;flex-direction:column;gap:var(--sp-3)}.trait-item{display:flex;align-items:center;gap:var(--sp-3);font-size:var(--fs-sm);color:var(--text-secondary);font-weight:var(--fw-medium);letter-spacing:var(--ls-wide)}.trait-dot{width:.35rem;height:.35rem;border-radius:50%;background:var(--accent-slate);opacity:.6;flex-shrink:0}.about-ctas{display:flex;align-items:center;gap:var(--sp-4);flex-wrap:wrap;padding-top:var(--sp-2)}.about .btn-primary{display:inline-flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-6);background:#7b9fbb14;border:1px solid var(--glass-border-md);border-radius:var(--r-full);color:var(--text-primary);font-size:var(--fs-sm);font-weight:var(--fw-medium);letter-spacing:var(--ls-wide);transition:var(--t-base)}.about .btn-primary:hover{border-color:#7b9fbb59;box-shadow:var(--glow-slate)}.about .btn-primary svg{transition:transform var(--dur-base) var(--ease-spring)}.about .btn-primary:hover svg{transform:translate(3px)}.about .btn-ghost{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--text-tertiary);padding:var(--sp-3) var(--sp-4);letter-spacing:var(--ls-wide);transition:color var(--dur-fast) var(--ease-out)}.about .btn-ghost:hover{color:var(--text-secondary)}.about-right{display:flex;flex-direction:column;gap:var(--sp-6)}.profile-card{border-radius:var(--r-2xl);padding:var(--sp-8);display:flex;flex-direction:column;gap:var(--sp-8);backface-visibility:hidden;-webkit-backface-visibility:hidden;transform-style:preserve-3d;transform:translateZ(0)}.profile-card--tilting{transform-style:preserve-3d}.avatar-wrap{display:flex;flex-direction:column;align-items:center;gap:var(--sp-4);position:relative}.avatar-ring{position:absolute;top:-12px;left:50%;transform:translate(-50%);width:8rem;height:8rem;border-radius:50%;border:.06rem solid rgba(123,159,187,.15);pointer-events:none}.avatar-img{width:6.5rem;height:6.5rem;border-radius:50%;-o-object-fit:cover;object-fit:cover;-o-object-position:center top;object-position:center top;border:.06rem solid var(--glass-border-md);display:block}.status-badge{display:inline-flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-4);background:#7b9fbb0f;border:1px solid rgba(123,159,187,.15);border-radius:var(--r-full);font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--accent-fog);letter-spacing:var(--ls-wide)}.status-dot{width:.4rem;height:.4rem;border-radius:50%;background:#6e9b7e;animation:softPulse 2s ease-in-out infinite;flex-shrink:0}.stats-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--glass-border);border-radius:var(--r-lg);overflow:hidden}.stat-cell{background:var(--bg-raised);padding:var(--sp-5) var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-1);align-items:center;text-align:center;transition:background var(--dur-fast) var(--ease-out)}.stat-cell:hover{background:var(--glass-fill-md)}.stat-number{display:flex;align-items:baseline;gap:2px;font-family:var(--font-display);font-size:var(--fs-xl);font-weight:var(--fw-black);color:var(--text-primary);line-height:1}.stat-suffix{font-size:var(--fs-md);color:var(--accent-slate);font-weight:var(--fw-medium)}.stat-desc{font-size:var(--fs-xs);color:var(--text-tertiary);letter-spacing:var(--ls-wide);text-transform:uppercase;line-height:var(--lh-snug)}.tech-stack{display:flex;flex-direction:column;gap:var(--sp-4)}.tech-label{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-tertiary);letter-spacing:var(--ls-wide)}.tech-badges{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.tech-badge{display:inline-flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);background:var(--glass-fill);border:1px solid var(--glass-border);border-radius:var(--r-md);font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--text-secondary);letter-spacing:var(--ls-wide);transition:var(--t-fast);cursor:default}.tech-badge:hover{background:var(--glass-fill-md);border-color:#7b9fbb33;color:var(--text-primary);transform:translateY(-2px)}.badge-icon{font-size:.65rem;color:var(--accent-slate);opacity:.7;font-style:normal;line-height:1}@media(max-width:1024px){.about-container{grid-template-columns:1fr;gap:var(--sp-16)}.about-right{max-width:560px;margin:0 auto;width:100%}}@media(max-width:767px){.about-container{gap:var(--sp-10)}.about-left{gap:var(--sp-6)}.tech-stack{display:none}.profile-card{padding:var(--sp-6)}.about-ctas{flex-direction:column;align-items:stretch;width:100%}.about-ctas .btn-primary,.about-ctas .btn-ghost{width:100%;justify-content:center}}.avatar-float{animation:floatAvatar 4s ease-in-out infinite}.skills{background:var(--bg-base)}.skills-orbs{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap;margin-bottom:var(--sp-16);padding-bottom:var(--sp-16);border-bottom:.06rem solid var(--glass-border)}.skill-orb{display:inline-flex;align-items:center;padding:var(--sp-2) var(--sp-4);background:var(--glass-fill);border:.06rem solid var(--glass-border);border-radius:var(--r-full);font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-tertiary);letter-spacing:var(--ls-wide);transition:color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out)}.skill-orb:hover{color:var(--text-secondary);border-color:var(--glass-border-md)}.skills-heading{margin-bottom:var(--sp-12)}.heading-dim{color:var(--text-tertiary);font-weight:var(--fw-light);font-style:italic}.skills-body{display:grid;grid-template-columns:clamp(12rem,20vw,15rem) 1fr;gap:var(--sp-6);align-items:start}.skills-tabs{display:flex;flex-direction:column;gap:var(--sp-2);position:sticky;top:calc(var(--nav-h) + var(--sp-8))}.skills-tab{position:relative;display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-4) var(--sp-4);border-radius:var(--r-lg);background:transparent;border:.06rem solid transparent;color:var(--text-tertiary);font-size:var(--fs-sm);font-weight:var(--fw-medium);letter-spacing:var(--ls-wide);text-align:left;transition:color var(--dur-fast) var(--ease-out),background-color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out);cursor:pointer;overflow:hidden}.skills-tab:hover{color:var(--text-secondary);background:var(--glass-fill);border-color:var(--glass-border)}.skills-tab--active{color:var(--text-primary);background:var(--glass-fill-md);border-color:var(--glass-border-md)}.tab-icon{flex-shrink:0;opacity:.5;transition:opacity var(--dur-fast) var(--ease-out);display:flex}.skills-tab--active .tab-icon,.skills-tab:hover .tab-icon{opacity:1}.tab-label{flex:1}.tab-indicator{position:absolute;left:0;top:20%;bottom:20%;width:.125rem;background:var(--accent-slate);border-radius:var(--r-full);opacity:.7}.skills-panel{border-radius:var(--r-2xl);padding:var(--sp-10);display:flex;flex-direction:column;min-height:clamp(20rem,40vh,25rem);transform-style:preserve-3d;backface-visibility:hidden}.panel-header{display:flex;align-items:flex-start;gap:var(--sp-5);padding-bottom:var(--sp-8);border-bottom:.06rem solid var(--glass-border)}.panel-icon{width:2.75rem;height:2.75rem;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--glass-fill-md);border:.06rem solid var(--glass-border-md);border-radius:var(--r-lg);color:var(--accent-slate)}.panel-title{font-family:var(--font-display);font-size:var(--fs-lg);font-weight:var(--fw-bold);color:var(--text-primary);margin-bottom:var(--sp-2);line-height:var(--lh-snug)}.panel-desc{font-size:var(--fs-sm);color:var(--text-secondary);line-height:var(--lh-relaxed);max-width:clamp(20rem,80vw,34rem)}.panel-chips{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3)}.skill-chip{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-4) var(--sp-5);background:var(--glass-fill);border:.06rem solid var(--glass-border);border-radius:var(--r-lg);transition:background-color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out)}.skill-chip:hover{background:var(--glass-fill-md);border-color:#7b9fbb2e}.chip-dot{width:.35rem;height:.35rem;border-radius:50%;background:var(--accent-slate);opacity:.5;flex-shrink:0}.chip-name{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--text-secondary);letter-spacing:var(--ls-normal);line-height:var(--lh-snug)}.skill-chip:hover .chip-dot{opacity:1}.skill-chip:hover .chip-name{color:var(--text-primary)}.panel-tags{display:flex;flex-wrap:wrap;gap:var(--sp-2);padding-top:var(--sp-6);border-top:.06rem solid var(--glass-border)}.panel-tag{display:inline-flex;align-items:center;padding:var(--sp-1) var(--sp-3);background:var(--glass-fill);border:.06rem solid var(--glass-border);border-radius:var(--r-md);font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-tertiary);letter-spacing:var(--ls-wide);transition:background-color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}.panel-tag:hover{background:var(--glass-fill-md);border-color:#7b9fbb33;color:var(--text-secondary)}@media(max-width:1023px){.skills-body{grid-template-columns:1fr;gap:var(--sp-4)}.skills-tabs{position:static;flex-direction:row;flex-wrap:wrap;justify-content:center;gap:var(--sp-2)}.skills-tab{flex:1;min-width:9rem;justify-content:center;flex-direction:column;gap:var(--sp-1);padding:var(--sp-3) var(--sp-4);text-align:center}.tab-indicator{inset:auto 20% 0;width:auto;height:.125rem}.tab-icon{justify-content:center}}@media(max-width:767px){.skills-panel{padding:var(--sp-6);min-height:unset}.panel-header{flex-direction:column;gap:var(--sp-4)}.panel-chips{grid-template-columns:1fr}.skills-tab{min-width:7.5rem;font-size:var(--fs-xs)}.skills-orbs{gap:var(--sp-2);padding-bottom:var(--sp-10);margin-bottom:var(--sp-10)}}.orb-float{animation:floatIcon var(--dur, 3s) ease-in-out infinite}.projects{background:var(--bg-raised);position:relative;overflow:clip}.projects-title-wrap{margin-bottom:var(--sp-20)}.projects-split-container{display:grid;grid-template-columns:1.1fr 1fr;gap:var(--sp-12);align-items:start}.projects-sticky-side{position:sticky;top:18vh;height:64vh;display:flex;align-items:center;z-index:2}.artwork-frame{position:relative;width:100%;aspect-ratio:16 / 10;background:var(--glass-fill);border:.06rem solid var(--glass-border-md);border-radius:clamp(2rem,4vw,3.5rem);box-shadow:0 2rem 5rem -1.5rem #00000080,0 0 0 1px #ffffff05 inset;overflow:hidden;display:flex;align-items:center;justify-content:center}.artworks-stack{position:relative;width:88%;height:88%}.artwork-item{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;will-change:opacity,transform;border-radius:2rem;overflow:hidden}.artwork-item svg{width:100%;height:100%;filter:drop-shadow(0 15px 35px rgba(0,0,0,.4))}.frame-overlay{position:absolute;inset:0;background:radial-gradient(circle at 50% 50%,transparent 50%,rgba(5,7,11,.3) 100%);pointer-events:none}.projects-list-side{padding-bottom:30vh}.project-detail{min-height:55vh;padding:var(--sp-12) 0;display:flex;flex-direction:column;justify-content:center;gap:var(--sp-5);opacity:.25;transform:translateY(30px);transition:opacity .7s var(--ease-out),transform .7s var(--ease-out)}.project-detail--active{opacity:1;transform:translateY(0)}.detail-badges{display:flex;gap:var(--sp-2);margin-bottom:var(--sp-2)}.detail-badge{font-family:var(--font-mono);font-size:.625rem;color:var(--accent-slate);padding:var(--sp-1) var(--sp-2.5);background:var(--glass-fill-md);border:1px solid var(--glass-border-md);border-radius:var(--r-full);text-transform:uppercase;letter-spacing:.12em}.detail-tagline{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--accent-slate);opacity:.5}.detail-title{font-family:var(--font-display);font-size:var(--fs-3xl);font-weight:var(--fw-bold);color:var(--text-primary);line-height:1.15;letter-spacing:-.015em}.detail-desc{font-size:var(--fs-base);color:var(--text-secondary);line-height:1.7;max-width:44ch}.detail-tech{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:var(--sp-2)}.detail-actions{display:flex;align-items:center;gap:var(--sp-6);margin-top:var(--sp-10)}.tech-pill{padding:var(--sp-1) var(--sp-3);background:var(--glass-fill);border:.06rem solid var(--glass-border);border-radius:var(--r-md);font-family:var(--font-mono);font-size:11px;color:var(--text-tertiary);transition:var(--t-fast)}.btn-case-study{display:inline-flex;align-items:center;justify-content:center;gap:1rem;padding:1.15rem 2.8rem;background:#7b9fbb1a;border:1.5px solid rgba(123,159,187,.35);border-radius:var(--r-full);color:var(--text-primary);font-size:var(--fs-base);font-weight:var(--fw-semibold);letter-spacing:var(--ls-wide);white-space:nowrap;cursor:pointer;transition:var(--t-base);box-sizing:border-box;box-shadow:0 .5rem 2rem -.5rem #0006}.btn-case-study:hover{background:#7b9fbb2e;border-color:#7b9fbb80;transform:translateY(-3px);box-shadow:0 1.2rem 2.5rem -.8rem #00000080,0 0 1.5rem #7b9fbb33}.btn-gh{display:inline-flex;align-items:center;justify-content:center;gap:.75rem;padding:1.15rem 2.2rem;background:transparent;border:1.5px solid var(--glass-border-md);border-radius:var(--r-full);color:var(--text-tertiary);font-size:var(--fs-sm);font-weight:var(--fw-medium);letter-spacing:var(--ls-wide);white-space:nowrap;text-decoration:none;transition:var(--t-fast);box-sizing:border-box}.btn-gh:hover{background:#ffffff08;border-color:var(--text-tertiary);color:var(--text-primary);transform:translateY(-2px)}.modal-backdrop{position:fixed;inset:0;z-index:var(--z-modal);background:#05070bd9;backdrop-filter:blur(12px);cursor:pointer}.modal-wrap{position:fixed;inset:0;z-index:calc(var(--z-modal) + 1);display:flex;align-items:center;justify-content:center;padding:var(--sp-6);pointer-events:none}.modal-box{pointer-events:auto;position:relative;width:min(80rem,96vw);height:min(50rem,90vh);background:var(--bg-void);border:1px solid var(--glass-border-md);border-radius:var(--r-3xl);overflow:hidden;box-shadow:var(--shadow-xl)}.modal-close{position:absolute;top:1.5rem;right:1.5rem;z-index:100;width:3rem;height:3rem;background:var(--bg-overlay);border:1px solid var(--glass-border-md);border-radius:50%;color:var(--text-secondary);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:var(--t-fast)}.modal-close:hover{background:var(--accent-slate);color:var(--bg-void);transform:rotate(90deg)}.modal-body{display:grid;grid-template-columns:28rem 1fr;height:100%}.modal-left{padding:var(--sp-12);background:#ffffff04;border-right:1px solid var(--glass-border);display:flex;flex-direction:column;justify-content:center;gap:var(--sp-6)}.modal-label{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--accent-slate);text-transform:uppercase;letter-spacing:var(--ls-widest)}.modal-title{font-family:var(--font-display);font-size:clamp(2.5rem,5vw,3.5rem);line-height:1.1;font-weight:var(--fw-bold);color:var(--text-primary);letter-spacing:var(--ls-tight)}.modal-tagline{font-size:var(--fs-lg);color:var(--accent-fog);opacity:.8}.modal-divider{width:3rem;height:2px;background:var(--accent-slate);margin:var(--sp-2) 0}.modal-desc{font-size:var(--fs-base);color:var(--text-secondary);line-height:1.6}.modal-gh-btn{margin-top:var(--sp-4);align-self:flex-start;display:inline-flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3.5) var(--sp-6);background:var(--glass-fill-md);border:1px solid var(--glass-border-md);border-radius:var(--r-full);color:var(--text-primary);font-size:var(--fs-sm);transition:var(--t-fast)}.modal-right{padding:var(--sp-12);overflow-y:auto;display:flex;flex-direction:column;gap:var(--sp-10);scrollbar-width:thin;scrollbar-color:var(--glass-border-md) transparent}.modal-right-meta{margin-bottom:var(--sp-4)}.modal-meta-label{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:var(--ls-widest);margin-bottom:var(--sp-4)}.case-section{padding:var(--sp-8);background:#ffffff05;border:1px solid var(--glass-border-md);border-radius:var(--r-2xl);transition:var(--t-fast)}.case-section:hover{background:#ffffff09;border-color:#fff3}.case-section-title{display:flex;align-items:center;gap:var(--sp-4);font-size:var(--fs-lg);margin-bottom:var(--sp-6);color:var(--text-primary)}.case-icon{color:var(--accent-slate)}@media(max-width:1024px){.projects-split-container{grid-template-columns:1fr;gap:var(--sp-8)}.projects-sticky-side{position:relative;top:0;height:auto;margin-bottom:var(--sp-8)}.projects-list-side{padding-bottom:var(--sp-12)}.project-detail{min-height:auto;padding:var(--sp-8) 0}.modal-box{width:100vw;height:100vh;border-radius:0}.modal-body{grid-template-columns:1fr;overflow-y:auto}.modal-left{border-right:none;border-bottom:1px solid var(--glass-border);padding:var(--sp-10)}.modal-right{padding:var(--sp-10)}}@media(max-width:768px){.detail-title{font-size:var(--fs-3xl)}.detail-desc{font-size:var(--fs-base)}}.contact{background:var(--bg-base)}.contact-body{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-16);align-items:center}.contact-left{display:flex;flex-direction:column;gap:var(--sp-6);opacity:0;transform:translateY(3vh)}.contact-heading{margin-bottom:0}.contact-desc{font-size:var(--fs-base);color:var(--text-secondary);line-height:var(--lh-relaxed);margin:0}.availability-badge{display:inline-flex;align-items:center;gap:var(--sp-4);padding:var(--sp-4) var(--sp-5);border-radius:var(--r-xl);align-self:flex-start;margin-top:var(--sp-2)}.avail-dot{width:.5rem;height:.5rem;border-radius:50%;background:#6e9b7e;flex-shrink:0;animation:softPulse 2.5s ease-in-out infinite}.avail-title{font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--text-primary)}.avail-sub{font-size:var(--fs-xs);color:var(--text-tertiary);margin-top:2px}.contact-form{border-radius:var(--r-2xl);padding:var(--sp-8);display:flex;flex-direction:column;gap:var(--sp-6);opacity:0;transform:translate(2vw);transform-style:preserve-3d;backface-visibility:hidden;transform:translateZ(0)}.form-field{display:flex;flex-direction:column;gap:var(--sp-2)}.field-label{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-tertiary);letter-spacing:var(--ls-wider);text-transform:uppercase}.field-input{width:100%;padding:var(--sp-4) var(--sp-5);background:var(--glass-fill);border:.06rem solid var(--glass-border);border-radius:var(--r-lg);font-size:var(--fs-sm);color:var(--text-primary);font-family:var(--font-body);line-height:var(--lh-relaxed);transition:var(--t-fast);resize:none}.field-input::-moz-placeholder{color:var(--text-tertiary);opacity:.5}.field-input::placeholder{color:var(--text-tertiary);opacity:.5}.field-input:focus{outline:none;border-color:#7b9fbb66;background:var(--glass-fill-md);box-shadow:0 0 0 3px #7b9fbb0f}@media(max-width:1023px){.field-input{font-size:1rem}}.field-input:disabled{opacity:.5;cursor:not-allowed}.field-input--textarea{min-height:8.125rem;field-sizing:content}.form-field--error .field-input{border-color:#b46e6e66}.form-field--error .field-input:focus{border-color:#b46e6e99;box-shadow:0 0 0 3px #b46e6e0f}.field-error{font-family:var(--font-mono);font-size:var(--fs-xs);color:#b46e6ecc;letter-spacing:var(--ls-wide);min-height:1rem}.form-submit{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-3);padding:var(--sp-4) var(--sp-8);background:var(--glass-fill-md);border:.06rem solid var(--glass-border-md);border-radius:var(--r-full);font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--text-primary);letter-spacing:var(--ls-wide);cursor:pointer;transition:var(--t-base);align-self:flex-start;min-width:10rem;min-height:3rem}.form-submit:hover:not(:disabled){border-color:#7b9fbb59;box-shadow:var(--glow-slate)}.form-submit:disabled{cursor:not-allowed;opacity:.7}.submit-loader{display:flex;align-items:center;gap:5px}.loader-dot{width:.3125rem;height:.3125rem;border-radius:50%;background:var(--text-tertiary);animation:loaderBounce 1.2s ease-in-out infinite}.loader-dot:nth-child(1){animation-delay:0s}.loader-dot:nth-child(2){animation-delay:.2s}.loader-dot:nth-child(3){animation-delay:.4s}@keyframes loaderBounce{0%,80%,to{transform:scale(.7);opacity:.3}40%{transform:scale(1);opacity:1}}.form-success{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-4) var(--sp-5);background:#6e9b7e14;border:.06rem solid rgba(110,155,126,.2);border-radius:var(--r-lg);font-size:var(--fs-sm);color:#6e9b7ee6;animation:contactFadeIn var(--dur-base) var(--ease-out)}@keyframes contactFadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media(max-width:1023px){.contact-body{grid-template-columns:1fr;gap:var(--sp-10);align-items:start}}@media(max-width:767px){.contact-form{padding:var(--sp-6)}}.footer{background:var(--bg-void);position:relative;overflow:hidden;opacity:0;transform:translateY(20px);transition:opacity .7s var(--ease-out),transform .7s var(--ease-out)}.footer--visible{opacity:1;transform:translateY(0)}.footer:before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse 60% 40% at 50% 0%,rgba(123,139,159,.04) 0%,transparent 70%);pointer-events:none}.footer-marquee-wrap{width:100%;border-top:1px solid var(--glass-border);border-bottom:1px solid var(--glass-border);overflow:hidden;padding:var(--sp-4) 0;-webkit-mask-image:linear-gradient(to right,transparent 0%,black 8%,black 92%,transparent 100%);mask-image:linear-gradient(to right,transparent 0%,black 8%,black 92%,transparent 100%)}.footer-marquee-track{display:flex;gap:var(--sp-8);width:-moz-max-content;width:max-content;animation:marquee 18s linear infinite}.footer-marquee-item{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-secondary);letter-spacing:var(--ls-wider);text-transform:uppercase;opacity:.7;white-space:nowrap;display:flex;align-items:center;gap:var(--sp-8)}.footer-marquee-item:after{content:"//";opacity:.5}@keyframes marquee{0%{transform:translate(0)}to{transform:translate(-50%)}}.footer-inner{padding:var(--sp-14) 0 var(--sp-10);display:flex;flex-direction:column;gap:var(--sp-8)}.footer-top{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--sp-8)}.footer-logotype{display:flex;flex-direction:column;gap:var(--sp-3)}.footer-wordmark{font-family:var(--font-mono);font-size:clamp(2rem,4.8vw,3.6rem);font-weight:var(--fw-bold);color:var(--text-primary);letter-spacing:-.01em;line-height:1.02}.footer-descriptor{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-secondary);letter-spacing:var(--ls-wider);text-transform:uppercase;opacity:.8;padding-left:2px}.footer-social-col{display:flex;flex-direction:column;align-items:flex-end;gap:var(--sp-3)}.footer-social-label{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-secondary);letter-spacing:var(--ls-wider);text-transform:uppercase;opacity:.7}.footer-social-row{display:flex;gap:var(--sp-2)}.social-pill{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-4);background:var(--glass-fill);border:1px solid var(--glass-border);border-radius:999px;color:var(--text-secondary);font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:var(--ls-wide);text-decoration:none;transition:var(--t-fast);white-space:nowrap}.social-pill:hover{background:var(--glass-fill-md);border-color:var(--glass-border-md);color:var(--text-secondary);transform:translateY(-2px)}.social-pill svg{flex-shrink:0}.footer-rule{width:100%;height:1px;background:var(--glass-border)}.footer-nav-strip{display:flex;align-items:center}.footer-nav-index{display:flex;align-items:center;flex-wrap:wrap;flex:1}.footer-nav-item{display:flex;align-items:center}.footer-nav-link{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-secondary);letter-spacing:var(--ls-wider);text-decoration:none;text-transform:uppercase;padding:var(--sp-2) var(--sp-4);position:relative;transition:color var(--dur-fast) var(--ease-out)}.footer-nav-link:after{content:"";position:absolute;bottom:0;left:var(--sp-4);right:var(--sp-4);height:1px;background:var(--text-primary);transform:scaleX(0);transform-origin:left;transition:transform var(--dur-fast) var(--ease-out)}.footer-nav-link:hover{color:var(--text-primary)}.footer-nav-link:hover:after{transform:scaleX(1)}.footer-nav-sep{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-secondary);opacity:.4;-webkit-user-select:none;-moz-user-select:none;user-select:none}.footer-nav-tagline{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-secondary);letter-spacing:var(--ls-wide);opacity:.6;margin-left:auto}.footer-bottom{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);padding-top:var(--sp-6);border-top:1px solid var(--glass-border)}.footer-copy,.footer-built{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-secondary);letter-spacing:var(--ls-wide);opacity:.8}.built-mono{color:var(--text-tertiary);opacity:1}.footer-status{display:flex;align-items:center;gap:var(--sp-2);font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-secondary);letter-spacing:var(--ls-wide);opacity:.8}.status-dot{width:6px;height:6px;border-radius:50%;background:#4ade80;box-shadow:0 0 6px #4ade8088;animation:pulse-dot 2.5s ease-in-out infinite}@keyframes pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.85)}}@media(max-width:768px){.footer-top{flex-direction:column;align-items:flex-start;gap:var(--sp-6)}.footer-social-col{align-items:flex-start}.footer-social-row{flex-wrap:wrap}.footer-nav-strip{flex-direction:column;align-items:flex-start;gap:var(--sp-4)}.footer-nav-tagline{margin-left:0}.footer-wordmark{font-size:clamp(2rem,10vw,3rem)}}@media(max-width:480px){.footer-bottom{flex-direction:column;align-items:flex-start;gap:var(--sp-2)}.footer-status{display:none}}
