/* All LED calibration lives in heroMediaConfig, in original image space. */
.photo-plane { position:absolute; left:0; top:0; transform-origin:0 0; pointer-events:none; overflow:hidden; }
.photo-led { position:absolute; width:var(--core); height:calc(var(--core)*.74); border-radius:40%; background:var(--light); box-shadow:0 0 2px color-mix(in srgb,var(--light) 45%,transparent); opacity:.8; pointer-events:none; }
/* Sharp core plus bounded bloom and a faint horizontal reflection on the bezel. */
.photo-led::before { content:""; position:absolute; inset:-3.5px; border-radius:50%; background:radial-gradient(ellipse,var(--light),transparent 68%); opacity:.12; }
.photo-led::after { content:""; position:absolute; width:calc(var(--core)*3); height:2px; top:calc(var(--core) + 1px); left:calc(var(--core)*-.8); background:linear-gradient(90deg,transparent,var(--light),transparent); opacity:.06; }
.photo-led--status { animation:hardware-status var(--cycle) ease-in-out var(--delay) infinite; }
.photo-led--activity { opacity:.12; transition:opacity 35ms linear; }
.photo-led--activity.is-lit { opacity:1; box-shadow:0 0 3px color-mix(in srgb,var(--light) 70%,transparent); }
.photo-led--activity.is-lit::before { opacity:.22; }
.photo-led--activity.is-lit::after { opacity:.17; }
@keyframes hardware-status { 0%,100%{opacity:.65} 48%{opacity:1} 75%{opacity:.75} }
.hero-slide:not(.is-active) .photo-led { animation-play-state:paused; }
@media(prefers-reduced-motion:reduce) {
 .photo-led { animation:none!important; transition:none!important; }
 .photo-led--activity,.photo-led--activity.is-lit { opacity:.76; }
}
