.about-photo-wrap{width:min(100%,17.5rem);margin-inline:auto;animation:.65s cubic-bezier(.22,1,.36,1) both aboutPhotoEnter}.about-photo-wrap--static{animation:none}.about-photo-tilt{transform-style:preserve-3d;will-change:transform;transition:transform .35s cubic-bezier(.22,1,.36,1);position:relative}.about-photo-ring{background:conic-gradient(from 0deg,var(--accent),transparent 25%,var(--accent-hover)50%,transparent 75%,var(--accent));opacity:.85;z-index:0;border-radius:1.125rem;animation:5s linear infinite aboutPhotoRingSpin;position:absolute;inset:-3px}.about-photo-frame{z-index:1;aspect-ratio:1;border:1px solid var(--surface-border);background:linear-gradient(145deg,var(--bg-section),var(--bg-main));border-radius:1rem;position:relative;overflow:hidden;box-shadow:0 18px 40px #0208142e,inset 0 1px #ffffff0f}.dark .about-photo-frame{box-shadow:0 18px 40px #00000073,inset 0 1px #ffffff0a}.about-photo-scanlines{pointer-events:none;z-index:2;mix-blend-mode:overlay;background:repeating-linear-gradient(0deg,#0000,#0000 2px,#0000000d 2px 4px);position:absolute;inset:0}.about-photo-placeholder{z-index:1;flex-direction:column;justify-content:center;align-items:center;height:100%;padding:1.5rem;animation:4.5s ease-in-out infinite aboutPhotoFloat;display:flex;position:relative}.about-photo-initials{font-family:var(--font-fira-code),monospace;background:linear-gradient(135deg,var(--accent),var(--accent-hover));color:#0000;filter:drop-shadow(0 0 18px #22d3ee33);-webkit-background-clip:text;background-clip:text;font-size:clamp(3rem,12vw,4.5rem);font-weight:600;line-height:1}.about-photo-label{color:var(--text-muted);margin-top:1rem;font-size:.8125rem}.about-photo-status{color:var(--accent);margin-top:.25rem;font-size:.75rem;animation:2.2s ease-in-out infinite aboutPhotoPulse}.about-photo-image{object-fit:cover;width:100%;height:100%}@keyframes aboutPhotoEnter{0%{opacity:0;transform:translateY(24px)scale(.94)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes aboutPhotoRingSpin{to{transform:rotate(360deg)}}@keyframes aboutPhotoFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes aboutPhotoPulse{0%,to{opacity:.55}50%{opacity:1}}@media (prefers-reduced-motion:reduce){.about-photo-wrap,.about-photo-ring,.about-photo-placeholder,.about-photo-status{animation:none}.about-photo-status{opacity:.8}}
