/* Keep motion on composited transforms/opacity, never animated backdrop blur. */
:is(.experience-item,.skill-card,.cert-card,.education-card,.project-card,.button,.project-pagination a)::before{display:none!important;animation:none!important;backdrop-filter:none!important}
:is(.experience-item,.skill-card,.cert-card,.education-card,.project-card){backdrop-filter:none;-webkit-backdrop-filter:none;transition:transform .25s ease-out,border-color .2s ease-out,box-shadow .25s ease-out!important;transition-delay:0s!important}
@media(hover:hover) and (pointer:fine){:is(.experience-item,.skill-card,.cert-card,.education-card,.project-card):hover{transform:translateY(-3px);border-color:var(--accent);box-shadow:0 10px 26px #00000014}}
@media(hover:none){:is(.experience-item,.skill-card,.cert-card,.education-card,.project-card):hover{transform:none;box-shadow:none}.glass{backdrop-filter:none;-webkit-backdrop-filter:none}.header{background:var(--header)}}
.ambient{animation:none;filter:none}.current-role{animation:none!important}.portrait-card{will-change:auto}.ticker-track{will-change:transform}
@keyframes mode-reveal-lite{from{clip-path:inset(0 0 100% 0)}to{clip-path:inset(0)}}
::view-transition-new(root){animation:mode-reveal-soft 1.8s cubic-bezier(.22,.61,.36,1) both}::view-transition-old(root){animation:none;filter:none!important}
.portfolio-pointer{position:fixed;top:0;left:0;z-index:10000;pointer-events:none;opacity:0;contain:layout style;transition:opacity .15s}.cursor-active .portfolio-pointer{opacity:1}.pointer-dot{width:6px;height:6px;margin:-3px;border-radius:50%;background:var(--accent)}.pointer-ring{width:32px;height:32px;margin:-16px;border:1px solid var(--accent);border-radius:50%}.pointer-ring>span{display:block;width:100%;height:100%;border-radius:inherit;background:var(--accent);opacity:.07;transition:opacity .2s,transform .2s}.cursor-interactive .pointer-ring>span{opacity:.2;transform:scale(1.35)}.pointer-tail{width:4px;height:4px;margin:-2px;border-radius:50%;background:var(--accent)}.cursor-active .pointer-tail{opacity:.28}
@media(hover:hover) and (pointer:fine){html.cursor-active,html.cursor-active a,html.cursor-active button,html.cursor-active [role=button]{cursor:none}html.cursor-active input,html.cursor-active textarea{cursor:text}}
@media(prefers-reduced-motion:reduce){.portfolio-pointer{display:none!important}::view-transition-new(root){animation:none}}
/* Shared mobile outline: explicit fill/stroke prevents inherited text fill;
   spacing and paint room keep neighbouring glyphs and strokes separate. */
@media(max-width:760px){
 .hero-copy h1,.loader-name{overflow:visible}
 .surname,.loader-name>span+span{
  font-family:Arial,Helvetica,sans-serif;font-weight:700;
  font-kerning:none;font-variant-ligatures:none;
  letter-spacing:.015em!important;line-height:1.18;
  color:transparent;-webkit-text-fill-color:transparent;
  -webkit-text-stroke:1.15px var(--text);
  text-shadow:none;overflow:visible;padding:.035em .055em .07em .025em;
 }
 .surname .name-dot,.loader-name .loader-period{
  color:var(--accent);-webkit-text-fill-color:var(--accent);-webkit-text-stroke:0;
 }
 html:not(.loading) .surname{animation:mobile-name-enter .8s .2s both}
 .loader-name>span+span{animation:mobile-name-enter .65s .12s both}
 @keyframes mobile-name-enter{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
}
@media(max-width:360px){.hero-copy h1{font-size:11.5vw}.loader-name{font-size:11.5vw}}
@media(prefers-reduced-motion:reduce){html:not(.loading) .surname,.loader-name>span+span{animation:none!important}}
/* Keep the requested slow, directional blur. Only the new snapshot animates. */
::view-transition-new(root){animation-duration:1.8s;will-change:clip-path,filter}
.pointer-arrow{width:27px;height:33px;color:var(--accent);margin:-3px 0 0 -3px;z-index:10002}.pointer-arrow svg{display:block;width:100%;height:100%;transition:transform .25s ease}.cursor-interactive .pointer-arrow svg{transform:rotate(-10deg) scale(1.12)}.pointer-shard{width:var(--size);height:var(--size);margin:-3px;border-radius:1px;background:var(--accent);transition:none;z-index:10001}
/* Small moving frosted band: fixed blur radius, no permanent overlay. */
@keyframes narrow-frost{0%{transform:translateY(-110%);opacity:0}12%{opacity:.8}85%{opacity:.8}100%{transform:translateY(460%);opacity:0}}
@media(hover:hover) and (pointer:fine){
 :is(.experience-item,.skill-card,.cert-card,.education-card,.project-card,.button,.project-pagination a):hover::before{display:block!important;inset:0 0 auto;height:25%;clip-path:none;backdrop-filter:blur(8px)!important;-webkit-backdrop-filter:blur(8px);background:linear-gradient(180deg,transparent,color-mix(in srgb,var(--accent) 13%,transparent),transparent);animation:narrow-frost 1.6s cubic-bezier(.22,.61,.36,1) both!important;z-index:2;pointer-events:none}
}
@media(prefers-reduced-motion:reduce){::view-transition-new(root){animation:none;will-change:auto}:is(.experience-item,.skill-card,.cert-card,.education-card,.project-card,.button,.project-pagination a):hover::before{display:none!important;animation:none!important}}
